146 nTheta_(readLabel(coeffs_.lookup(
"nTheta"))),
147 nPhi_(readLabel(coeffs_.lookup(
"nPhi"))),
149 nLambda_(absorptionEmission_->nBands()),
151 blackBody_(nLambda_, T),
153 convergence_(coeffs_.lookupOrDefault<scalar>(
"convergence", 0.0)),
154 maxIter_(coeffs_.lookupOrDefault<label>(
"maxIter", 50))
158 nRay_ = 4*nPhi_*nTheta_;
163 for (label n = 1; n <= nTheta_; n++)
165 for (label m = 1; m <= 4*nPhi_; m++)
167 scalar thetai = (2.0*n - 1.0)*deltaTheta/2.0;
168 scalar phii = (2.0*m - 1.0)*deltaPhi/2.0;
200 for (label m = 1; m <= 4*nPhi_; m++)
202 scalar phii = (2.0*m - 1.0)*deltaPhi/2.0;
231 for (label m = 1; m <= 2; m++)
233 scalar phii = (2.0*m - 1.0)*deltaPhi/2.0;
279 Info<<
"fvDOM : Allocated " << IRay_.
size()
280 <<
" rays with average orientation:" <<
nl;
283 Info<<
'\t' << IRay_[i].I().name()
284 <<
'\t' << IRay_[i].dAve() <<
nl;
304 coeffs_.readIfPresent(
"convergence", convergence_);
305 coeffs_.readIfPresent(
"maxIter", maxIter_);
318 absorptionEmission_->correct(a_, aLambda_);
320 updateBlackBodyEmission();
330 scalar maxBandResidual = IRay_[rayI].correct();
331 maxResidual =
max(maxBandResidual, maxResidual);
334 Info <<
"Radiation solver iter: " << radIter <<
endl;
336 }
while(maxResidual > convergence_ && radIter < maxIter_);
351 mesh_.time().timeName(),
368 G_.dimensionedInternalField();
370 absorptionEmission_->ECont()().dimensionedInternalField();
372 a_.dimensionedInternalField();
378 void Foam::radiation::fvDOM::updateBlackBodyEmission()
380 for (label j=0; j < nLambda_; j++)
382 blackBody_.correct(j, absorptionEmission_->bands(j));
396 IRay_[rayI].addIntensity();
397 G_ += IRay_[rayI].I()*IRay_[rayI].omega();
398 Qr_.boundaryField() += IRay_[rayI].Qr().boundaryField();
399 Qem_.boundaryField() += IRay_[rayI].Qem().boundaryField();
400 Qin_.boundaryField() += IRay_[rayI].Qin().boundaryField();
417 lambdaId = readLabel(
IStringStream(name.substr(i2+1, name.size()-1))());