41 Foam::radiation::radiativeIntensityRay::radiativeIntensityRay
47 const scalar deltaPhi,
48 const scalar deltaTheta,
57 absorptionEmission_(absorptionEmission),
58 blackBody_(blackBody),
64 mesh_.time().timeName(),
77 mesh_.time().timeName(),
90 mesh_.time().timeName(),
103 mesh_.time().timeName(),
125 omega_ = 2.0*sinTheta*
Foam::sin(deltaTheta/2.0)*deltaPhi;
126 d_ =
vector(sinTheta*sinPhi, sinTheta*cosPhi, cosTheta);
146 intensityPrefix +
"_" +
name(rayId) +
"_" +
name(lambdaI),
147 mesh_.time().timeName(),
154 if (IHeader.headerOk())
165 if (!IDefaultPtr.
valid())
174 mesh_.time().timeName(),
209 Qr_.boundaryFieldRef() = 0.0;
211 scalar maxResidual = -GREAT;
219 if (!dom_.cacheDiv())
225 fvm::div(Ji, ILambda_[lambdaI],
"div(Ji,Ii_h)")
226 +
fvm::Sp(k*omega_, ILambda_[lambdaI])
231 (k - absorptionEmission_.aDisp(lambdaI))
232 *blackBody_.bLambda(lambdaI)
234 + absorptionEmission_.E(lambdaI)/4
242 dom_.fvRayDiv(myRayId_, lambdaI)
243 +
fvm::Sp(k*omega_, ILambda_[lambdaI])
248 (k - absorptionEmission_.aDisp(lambdaI))
249 *blackBody_.bLambda(lambdaI)
251 + absorptionEmission_.E(lambdaI)/4
264 const scalar initialRes =
267 maxResidual =
max(initialRes, maxResidual);
280 I_ += ILambda_[lambdaI];
Class black body emission.
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
static const word intensityPrefix
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
tmp< fvMatrix< Type > > Sp(const DimensionedField< scalar, volMesh > &, const GeometricField< Type, fvPatchField, volMesh > &)
~radiativeIntensityRay()
Destructor.
Vector< scalar > vector
A scalar version of the templated Vector.
label k
Boltzmann constant.
Model to supply absorption and emission coefficients for radiation modelling.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
scalar correct()
Update radiative intensity on i direction.
void reset(T *=0)
If object pointer already set, delete object and set to given.
dimensionedScalar cos(const dimensionedScalar &ds)
A class for handling words, derived from string.
SolverPerformance< Type > solve(fvMatrix< Type > &, const dictionary &)
Solve returning the solution statistics given convergence tolerance.
bool valid() const
Return true if the autoPtr valid (ie, the pointer is set).
dimensionedScalar sin(const dimensionedScalar &ds)
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
void addIntensity()
Add radiative intensities from all the bands.
word name(const complex &)
Return a string representation of a complex.
dimensionedScalar pow3(const dimensionedScalar &ds)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Mesh data needed to do the Finite Volume discretisation.
readOption readOpt() const
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
A class for managing temporary objects.
T & ref() const
Return non-const reference or generate a fatal error.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Finite Volume Discrete Ordinates Method. Solves the RTE equation for n directions in a participating ...