Go to the documentation of this file.
42 Foam::radiation::radiativeIntensityRay::radiativeIntensityRay
48 const scalar deltaPhi,
49 const scalar deltaTheta,
58 absorptionEmission_(absorptionEmission),
59 blackBody_(blackBody),
65 mesh_.time().timeName(),
78 mesh_.time().timeName(),
91 mesh_.time().timeName(),
104 mesh_.time().timeName(),
126 omega_ = 2.0*sinTheta*
Foam::sin(deltaTheta/2.0)*deltaPhi;
127 d_ =
vector(sinTheta*sinPhi, sinTheta*
cosPhi, cosTheta);
141 if (mesh_.nSolutionD() == 2)
157 meshDir = dom_.meshOrientation();
163 if (mesh_.geometricD()[cmpt] == -1)
173 dAve_ = coordRot & dAve_;
177 else if (mesh_.nSolutionD() == 1)
182 meshDir = dom_.meshOrientation();
188 if (mesh_.geometricD()[cmpt] == 1)
196 dAve_ = (dAve_ & normal)*meshDir;
197 d_ = (d_ & normal)*meshDir;
209 intensityPrefix +
"_" +
name(rayId) +
"_" +
name(lambdaI),
210 mesh_.time().timeName(),
237 mesh_.time().timeName(),
272 qr_.boundaryFieldRef() = 0.0;
273 qem_.boundaryFieldRef() = 0.0;
274 qin_.boundaryFieldRef() = 0.0;
276 scalar maxResidual = -GREAT;
286 fvm::div(Ji, ILambda_[lambdaI],
"div(Ji,Ii_h)")
287 +
fvm::Sp(
k*omega_, ILambda_[lambdaI])
291 (
k - absorptionEmission_.aDisp(lambdaI))
292 *blackBody_.bLambda(lambdaI)
294 + absorptionEmission_.E(lambdaI)/4
306 const scalar initialRes =
309 maxResidual =
max(initialRes, maxResidual);
322 I_ += ILambda_[lambdaI];
Defines the attributes of an object for which implicit objectRegistry management is supported,...
A class for handling words, derived from Foam::string.
static constexpr const zero Zero
Global zero (0)
Different types of constants.
dimensionedScalar sin(const dimensionedScalar &ds)
~radiativeIntensityRay()
Destructor.
static const word intensityPrefix
void addIntensity()
Add radiative intensities from all the bands.
scalar correct()
Update radiative intensity on i direction.
#define forAll(list, i)
Loop across all elements in list.
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
tmp< fvMatrix< Type > > Sp(const volScalarField::Internal &, const GeometricField< Type, fvPatchField, volMesh > &)
dimensionedScalar pow3(const dimensionedScalar &ds)
SolverPerformance< Type > solve(faMatrix< Type > &, Istream &)
Solve returning the solution statistics given convergence tolerance.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
Mesh data needed to do the Finite Volume discretisation.
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
Vector< scalar > vector
A scalar version of the templated Vector.
readOption readOpt() const noexcept
The read option.
void reset(autoPtr< T > &&other) noexcept
Delete managed object and set to new given pointer.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
constexpr scalar pi(M_PI)
label k
Boltzmann constant.
A special matrix type and solver, designed for finite volume solutions of scalar equations....
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
static const Vector< scalar > zero
Model to supply absorption and emission coefficients for radiation modelling.
Class black body emission.
tensor rotationTensor(const vector &n1, const vector &n2)
Rotational transformation tensor from vector n1 to n2.
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
static constexpr direction nComponents
Number of components in this vector space.
dimensionedScalar cos(const dimensionedScalar &ds)
Finite Volume Discrete Ordinates Method. Solves the RTE equation for n directions in a participating ...