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);
142 if (mesh_.nSolutionD() == 2)
147 if (mesh_.geometricD()[cmpt] == -1)
156 dAve_ = coordRot & dAve_;
159 else if (mesh_.nSolutionD() == 1)
164 if (mesh_.geometricD()[cmpt] == 1)
171 dAve_ = (dAve_ & normal)*meshDir;
172 d_ = (d_ & normal)*meshDir;
182 intensityPrefix +
"_" +
name(rayId) +
"_" +
name(lambdaI),
183 mesh_.time().timeName(),
190 if (IHeader.headerOk())
201 if (!IDefaultPtr.
valid())
210 mesh_.time().timeName(),
245 qr_.boundaryFieldRef() = 0.0;
247 scalar maxResidual = -great;
257 fvm::div(Ji, ILambda_[lambdaI],
"div(Ji,Ii_h)")
258 +
fvm::Sp(k*omega_, ILambda_[lambdaI])
263 (k - absorptionEmission_.aDisp(lambdaI))
264 *blackBody_.bLambda(lambdaI)
266 + absorptionEmission_.E(lambdaI)/4
274 const scalar initialRes =
277 maxResidual =
max(initialRes, maxResidual);
290 I_ += ILambda_[lambdaI];
Finite Volume Discrete Ordinates Method. Solves the RTE equation for n directions in a participating ...
#define forAll(list, i)
Loop across all elements in list.
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
void addIntensity()
Add radiative intensities from all the bands.
void reset(T *=nullptr)
If object pointer already set, delete object and set to given.
Templated form of IOobject providing type information for file reading and header type checking...
static const word intensityPrefix
scalar correct()
Update radiative intensity on i direction.
radiativeIntensityRay(const fvDOM &dom, const fvMesh &mesh, const scalar phi, const scalar theta, const scalar deltaPhi, const scalar deltaTheta, const label lambda, const absorptionEmissionModel &absEmmModel_, const blackBodyEmission &blackBody, const label rayId)
Construct form components.
Vector< scalar > vector
A scalar version of the templated Vector.
label k
Boltzmann constant.
tmp< fvMatrix< Type > > Sp(const volScalarField::Internal &, const GeometricField< Type, fvPatchField, volMesh > &)
tensor rotationTensor(const vector &n1, const vector &n2)
Rotational transformation tensor from unit vector n1 to n2.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
const dimensionSet dimTime
static const direction nComponents
Number of components in this vector space.
dimensionedScalar cos(const dimensionedScalar &ds)
A class for handling words, derived from string.
A special matrix type and solver, designed for finite volume solutions of scalar equations. Face addressing is used to make all matrix assembly and solution loops vectorise.
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)
~radiativeIntensityRay()
Destructor.
void relax(const scalar alpha)
Relax matrix (for steady-state solution).
const dimensionSet dimMass
word name(const complex &)
Return a string representation of a complex.
dimensionedScalar pow3(const dimensionedScalar &ds)
Class black body emission.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Mesh data needed to do the Finite Volume discretisation.
SolverPerformance< Type > solve(fvMatrix< Type > &, const word &)
Solve returning the solution statistics given convergence tolerance.
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Model to supply absorption and emission coefficients for radiation modelling.
readOption readOpt() const
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
static const Vector< scalar > zero