65 for (label patchi=0; patchi <
patches.size(); patchi++)
78 mesh_.polyMesh::instance(),
100 Pout<<
"radiation::viewFactor::initialise() Selected patches:"
102 Pout<<
"radiation::viewFactor::initialise() Number of coarse faces:"
122 mesh_.facesInstance(),
138 mesh_.facesInstance(),
154 mesh_.facesInstance(),
175 DynamicList<label> dfaceJ;
186 label gFacej = visFaces[j];
187 label proci = globalNumbering.whichProcID(gFacej);
188 label faceJ = globalNumbering.toLocal(proci, gFacej);
192 edge
e(iFace, faceJ);
203 label proci = globalNumbering.whichProcID(gFacej);
208 label remoteFacei = globalNumbering.toLocal(proci, gFacej);
210 procOwner[proci].append(facei);
211 dynProcNeighbour[proci].append(remoteFacei);
223 for (
const auto&
e : raysLst)
225 label faceI =
e.start();
226 label faceJ =
e.end();
235 procNeighbour[i] = std::move(dynProcNeighbour[i]);
243 if (procOwner[proci].
size())
247 if (mySendCells[proci].
size())
255 PtrList<const lduPrimitiveProcessorInterface> primitiveInterfaces(nbri);
269 Pout<<
"Adding interface " << nbri
270 <<
" to receive my " << procOwner[proci].size()
271 <<
" from " << proci <<
endl;
274 primitiveInterfaces.set
277 new lduPrimitiveProcessorInterface
291 Pout<<
"Adding interface " << nbri
292 <<
" to send my " << mySendCells[proci].
size()
293 <<
" to " << proci <<
endl;
295 primitiveInterfaces.set
298 new lduPrimitiveProcessorInterface
315 Pout<<
"Adding interface " << nbri
316 <<
" to receive my " << procOwner[proci].size()
317 <<
" from " << proci <<
endl;
320 primitiveInterfaces.set
323 new lduPrimitiveProcessorInterface
337 Pout<<
"Adding interface " << nbri
338 <<
" to send my " << mySendCells[proci].
size()
339 <<
" to " << proci <<
endl;
341 primitiveInterfaces.set
344 new lduPrimitiveProcessorInterface
363 primitiveInterfaces[proci].faceCells().
size(),
371 forAll(primitiveInterfaces, i)
373 const lduPrimitiveProcessorInterface&
pp = primitiveInterfaces[i];
375 allInterfaces.set(i, &
pp);
381 <lduPrimitiveProcessorInterface>(allInterfaces)
384 PtrList<const lduInterface> allInterfacesPtr(allInterfaces.size());
385 forAll (allInterfacesPtr, i)
387 const lduPrimitiveProcessorInterface&
pp = primitiveInterfaces[i];
392 new lduPrimitiveProcessorInterface(
pp)
414 if (
coeffs_.get<
bool>(
"smoothing"))
417 scalar totalDelta = 0;
429 const scalar
delta = sumF - 1.0;
432 myFij[j] *= (1.0 -
delta/(sumF + 0.001));
435 if (
delta > maxDelta)
440 totalDelta /= myF.
size();
442 reduce(totalDelta, sumOp<scalar>());
443 reduce(maxDelta, maxOp<scalar>());
444 Info <<
"Smoothing average delta : " << totalDelta <<
endl;
445 Info <<
"Smoothing maximum delta : " << maxDelta <<
nl <<
endl;
467 <<
"Insert elements in the matrix..." <<
endl;
475 globalFaceFacesProc[procI],
481 if (
coeffs_.get<
bool>(
"smoothing"))
493 const scalar
delta = sumF - 1.0;
524 <<
"Solar radiation and view factor band numbers "
529 Info<<
"Creating Solar Load Model " <<
nl;
544 mesh_.facesInstance(),
580 selectedPatches_(mesh_.
boundary().size(), -1),
581 totalNCoarseFaces_(0),
582 nLocalCoarseFaces_(0),
583 constEmissivity_(false),
586 useSolarLoad_(false),
595Foam::radiation::viewFactor::viewFactor
607 mesh_.facesInstance(),
643 selectedPatches_(mesh_.
boundary().size(), -1),
644 totalNCoarseFaces_(0),
645 nLocalCoarseFaces_(0),
646 constEmissivity_(false),
649 useSolarLoad_(false),
651 nBands_(coeffs_.getOrDefault<label>(
"nBands", 1)),
680 forAll(viewFactors, faceI)
683 const labelList& globalFaces = globalFaceFaces[faceI];
685 label globalI = globalNumbering.
toGlobal(procI, faceI);
688 Fmatrix[globalI][globalFaces[i]] = vf[i];
701 solarLoad_->calculate();
713 globalIndex globalNumbering(nLocalCoarseFaces_);
718 for (label bandI = 0; bandI < nBands_; bandI++)
723 scalarField compactCoarseT4(map_->constructSize(), 0.0);
724 scalarField compactCoarseE(map_->constructSize(), 0.0);
725 scalarField compactCoarseHo(map_->constructSize(), 0.0);
728 DynamicList<scalar> localCoarseT4ave(nLocalCoarseFaces_);
729 DynamicList<scalar> localCoarseEave(nLocalCoarseFaces_);
730 DynamicList<scalar> localCoarseHoave(nLocalCoarseFaces_);
732 forAll(selectedPatches_, i)
734 label
patchID = selectedPatches_[i];
747 const tmp<scalarField> teb =
752 const tmp<scalarField> tHoi = qrp.qro(bandI);
755 const polyPatch&
pp = coarseMesh_->boundaryMesh()[
patchID];
758 coarseMesh_->patchFaceMap()[
patchID];
767 label nAgglom =
max(agglom) + 1;
771 forAll(coarseToFine, coarseI)
773 const label coarseFaceID = coarsePatchFace[coarseI];
774 const labelList& fineFaces = coarseToFine[coarseFaceID];
775 UIndirectList<scalar> fineSf
781 const scalar
area =
sum(fineSf());
786 label facei = fineFaces[j];
787 T4ave[coarseI] += (
pow4(Tp[facei])*sf[facei])/area;
788 Eave[coarseI] += (eb[facei]*sf[facei])/area;
789 Hoiave[coarseI] += (Hoi[facei]*sf[facei])/area;
794 localCoarseT4ave.append(T4ave);
795 localCoarseEave.append(Eave);
796 localCoarseHoave.append(Hoiave);
801 SubList<scalar>(compactCoarseT4, nLocalCoarseFaces_) =
803 SubList<scalar>(compactCoarseE, nLocalCoarseFaces_) = localCoarseEave;
804 SubList<scalar>(compactCoarseHo, nLocalCoarseFaces_) =
809 map_->distribute(compactCoarseT4);
810 map_->distribute(compactCoarseE);
811 map_->distribute(compactCoarseHo);
822 globalNumbering.localSize(),
823 globalNumbering.localStart()
826 map_->distribute(compactGlobalIds);
832 invert(totalNCoarseFaces_, compactGlobalIds)
845 const scalar sigmaT4 =
848 diag[i] = 1/localCoarseEave[i];
850 source[i] += -sigmaT4 + localCoarseHoave[i];
854 if (!constEmissivity_ || iterCounter_ == 0)
856 const edgeList raysLst(rays_.sortedToc());
859 for (
const auto&
e : raysLst)
861 label facelJ =
e.end();
862 label faceI =
e.start();
864 label faceJ = mapRayToFmy_[rayI];
867 (1-1/localCoarseEave[faceI])*FmyProc_()[faceI][faceJ];
870 (1-1/localCoarseEave[facelJ])*FmyProc_()[faceI][faceJ];
879 label nInterfaces = lduPtr_().interfaces().size();
881 forAll (globalFaceFaces_(), iFace)
883 const labelList& visFaces = globalFaceFaces_()[iFace];
886 label gFacej = visFaces[jFace];
887 label proci = globalNumbering.whichProcID(gFacej);
891 globalNumbering.toLocal
897 const scalar sigmaT4 =
899 *localCoarseT4ave[lFacej];
901 source[iFace] += FmyProc_()[iFace][jFace]*sigmaT4;
905 label compactFaceJ = globalToCompact[gFacej];
906 const scalar sigmaT4 =
908 *compactCoarseT4[compactFaceJ];
910 source[iFace] += FmyProc_()[iFace][jFace]*sigmaT4;
912 label interfaceI = procToInterface_[proci];
915 [interfaceI][boundCoeffI[interfaceI]++] =
916 -(1-1/compactCoarseE[compactFaceJ])
917 *FmyProc_()[iFace][jFace];
922 PtrList<const lduInterfaceField> interfaces(nInterfaces);
923 for(label i = 0; i < interfaces.size(); i++)
928 new lduCalculatedProcessorField<scalar>
930 lduPtr_().interfaces()[i]
936 qr_.mesh().solverDict
938 qr_.select(qr_.mesh().data().isFinalIteration())
950 )->solve(qrBandI_[bandI], source);
954 qTotalCoarse += qrBandI_[bandI];
965 forAll(compactCoarseT4, i)
967 T4[compactGlobalIds[i]] = compactCoarseT4[i];
968 E[compactGlobalIds[i]] = compactCoarseE[i];
969 qrExt[compactGlobalIds[i]] = compactCoarseHo[i];
979 if (!constEmissivity_)
983 for (label i=0; i<totalNCoarseFaces_; i++)
985 for (label j=0; j<totalNCoarseFaces_; j++)
987 const scalar invEj = 1.0/E[j];
988 const scalar sigmaT4 =
994 qBandI[i] += -sigmaT4 + qrExt[j];
998 C(i, j) = (1.0 - invEj)*Fmatrix_()(i, j);
999 qBandI[i] += Fmatrix_()(i, j)*sigmaT4;
1004 Info<<
"Solving view factor equations for band :"
1013 if (iterCounter_ == 0)
1015 for (label i=0; i<totalNCoarseFaces_; i++)
1017 for (label j=0; j<totalNCoarseFaces_; j++)
1019 const scalar invEj = 1.0/E[j];
1022 CLU_()(i, j) = invEj;
1027 (1.0-invEj)*Fmatrix_()(i, j);
1037 for (label i=0; i<totalNCoarseFaces_; i++)
1039 for (label j=0; j<totalNCoarseFaces_; j++)
1041 const scalar sigmaT4 =
1046 qBandI[i] += -sigmaT4 + qrExt[j];
1050 qBandI[i] += Fmatrix_()(i, j)*sigmaT4;
1055 Info<<
"Solving view factor equations for band : "
1069 label globCoarseId = 0;
1070 for (
const label
patchID : selectedPatches_)
1072 const polyPatch&
pp = coarseMesh_->boundaryMesh()[
patchID];
1079 label nAgglom =
max(agglom)+1;
1084 coarseMesh_->patchFaceMap()[
patchID];
1087 forAll(coarseToFine, coarseI)
1089 label globalCoarse = globalNumbering.toGlobal
1095 const label coarseFaceID = coarsePatchFace[coarseI];
1096 const labelList& fineFaces = coarseToFine[coarseFaceID];
1098 for (
const label facei : fineFaces)
1102 qrp[facei] = qNet[globalCoarse];
1106 qrp[facei] = qTotalCoarse[globCoarseId];
1117 for (
const label
patchID : selectedPatches_)
1123 Info<<
"Total heat transfer rate at patch: "
1125 << heatFlux <<
endl;
static const Foam::dimensionedScalar C("", Foam::dimTemperature, 234.5)
Macros for easy insertion into run-time selection tables.
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())
Graphite solid properties.
label size() const noexcept
The number of elements in list.
static tmp< DimensionedField< Type, GeoMesh > > New(const word &name, IOobjectOption::registerOption regOpt, const Mesh &mesh, const dimensionSet &dims, const Field< Type > &iField)
Return tmp field (NO_READ, NO_WRITE) from name, mesh, dimensions, copy of internal field....
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
void append(const T &val)
Copy append an element to the end of this list.
Generic templated field type that is much like a Foam::List except that it is expected to hold numeri...
static tmp< GeometricField< scalar, fvPatchField, volMesh > > New(const word &name, IOobjectOption::registerOption regOpt, const Mesh &mesh, const dimensionSet &dims, const word &patchFieldType=fvPatchField< scalar >::calculatedType())
GeometricBoundaryField< scalar, fvPatchField, volMesh > Boundary
IOmapDistribute is derived from mapDistribute and IOobject to give the mapDistribute automatic IO fun...
@ NO_REGISTER
Do not request registration (bool: false).
@ NO_READ
Nothing to be read.
@ READ_IF_PRESENT
Reading is optional [identical to LAZY_READ].
@ MUST_READ
Reading required.
@ NO_WRITE
Ignore writing from objectRegistry::writeObject().
@ AUTO_WRITE
Automatically write from objectRegistry::writeObject().
Defines the attributes of an object for which implicit objectRegistry management is supported,...
const Time & time() const noexcept
Return Time associated with the objectRegistry.
bool typeHeaderOk(const bool checkType=true, const bool search=true, const bool verbose=true)
Read header (respects is_globalIOobject trait) and check its info. A void type suppresses trait and t...
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
void append(const T &val)
Append an element at the end of the list.
void setSize(label n)
Alias for resize().
static FOAM_NO_DANGLING_REFERENCE const boundaryRadiationProperties & New(const fvMesh &mesh, Args &&... args)
static void exchange(const UList< Container > &sendBufs, const labelUList &recvSizes, List< Container > &recvBufs, const int tag=UPstream::msgType(), const int comm=UPstream::worldComm, const bool wait=true)
Helper: exchange contiguous data. Sends sendBufs, receives into recvBufs using predetermined receive ...
static void listReduce(UList< T > &values, BinaryOp bop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm)
Reduce list elements (list must be equal size on all ranks), applying bop to each list element.
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
const T * set(const label i) const
Return const pointer to element (can be nullptr), or nullptr for out-of-range access (ie,...
A non-owning sub-view of a List (allocated or unallocated storage).
A List with indirect addressing. Like IndirectList but does not store addressing.
void size(const label n)
Older name for setAddressableSize.
static int myProcNo(const label communicator=worldComm)
Rank of this process in the communicator (starting from masterNo()). Negative if the process is not a...
static int & msgType() noexcept
Message tag of standard messages.
static bool master(const label communicator=worldComm)
True if process corresponds to the master rank in the communicator.
static label nProcs(const label communicator=worldComm)
Number of ranks in parallel run (for given communicator). It is 1 for serial run.
static label worldComm
Communicator for all ranks. May differ from commGlobal() if local worlds are in use.
static rangeType allProcs(const label communicator=worldComm)
Range of process indices for all processes.
@ gatherList
gatherList [manual algorithm]
@ broadcast
broadcast [MPI]
const T * set(const label i) const
Return const pointer to element (can be nullptr), or nullptr for out-of-range access (ie,...
label size() const noexcept
The number of entries in the list.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
const dictionary & subDict(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Find and return a sub-dictionary.
dictionary()
Default construct, a top-level empty dictionary.
T getOrDefault(const word &keyword, const T &deflt, enum keyType::option matchOpt=keyType::REGEX) const
Find and return a T, or return the given default value. FatalIOError if it is found and the number of...
const Type & value() const noexcept
Return const reference to value.
An edge is a list of two vertex labels. This can correspond to a directed graph edge or an edge on a ...
Smooth ATC in cells next to a set of patches supplied by type.
const Time & time() const
Return the top-level database.
const word & name() const
Return reference to name.
Calculates a non-overlapping list of offsets based on an input size (eg, number of cells) from differ...
label toLocal(const label proci, const label i) const
From global to local on proci.
label whichProcID(const label proci, const label i) const
Which processor does global id come from? Checks proci first (assumed to occur reasonably frequently)...
label toGlobal(const label proci, const label i) const
From local to global on proci.
label localStart(const label proci) const
Start of proci data.
label localSize(const label proci) const
Size of proci data.
A lduProcessorField type bypassing coupledFvPatchField.
static autoPtr< solver > New(const word &solverName, const word &fieldName, const lduMatrix &matrix, const FieldField< Field, scalar > &interfaceBouCoeffs, const FieldField< Field, scalar > &interfaceIntCoeffs, const lduInterfaceFieldPtrsList &interfaces, const dictionary &solverControls)
Return a new solver of given type.
lduMatrix is a general matrix class in which the coefficients are stored as three arrays,...
Simplest concrete lduMesh that stores the addressing needed by lduMatrix.
static lduSchedule nonBlockingSchedule(const lduInterfacePtrsList &)
Get non-scheduled send/receive schedule.
Concrete implementation of processor interface. Used to temporarily store settings.
OSstream & masterStream(int communicator)
Return OSstream for output operations on the master process only, Snull on other processes.
A polyBoundaryMesh is a polyPatch list with registered IO, a reference to the associated polyMesh,...
labelList indices(const wordRe &matcher, const bool useGroups=true) const
The (sorted) patch indices for all matches, optionally matching patch groups.
const polyBoundaryMesh & boundaryMesh() const noexcept
Return boundary mesh.
A patch is a list of labels that address the faces in the global face list.
Boundary radiation properties holder.
tmp< scalarField > emissivity(const label patchI, const label bandI=0, const vectorField *incomingDirection=nullptr, const scalarField *T=nullptr) const
Access boundary emissivity on patch.
This boundary condition provides a grey-diffuse condition for radiative heat flux,...
Top level model for radiation modelling.
const fvMesh & mesh_
Reference to the mesh database.
virtual bool read()=0
Read radiationProperties dictionary.
dictionary coeffs_
Radiation model dictionary.
const volScalarField & T() const noexcept
Return access to the temperature field.
const volScalarField & T_
Reference to the temperature field.
The solarLoad radiation model includes Sun primary hits, their reflective fluxes and diffusive sky ra...
View factor radiation model. The system solved is: C q = b where: Cij = deltaij/Ej - (1/Ej - 1)Fij q ...
void initialise()
Initialise.
autoPtr< scalarSquareMatrix > Fmatrix_
View factor matrix.
autoPtr< singleCellFvMesh > coarseMesh_
Coarse mesh.
autoPtr< lduMatrix > matrixPtr_
Matrix formed from view factors.
virtual tmp< volScalarField::Internal > Ru() const
Source term component (constant).
autoPtr< scalarSquareMatrix > CLU_
Inverse of C matrix.
label nLocalCoarseFaces_
Total local coarse faces.
static const word viewFactorWalls
Static name for view factor walls.
label nBands_
Number of bands.
virtual tmp< volScalarField > Rp() const
Source term component (for power of T^4).
autoPtr< solarLoad > solarLoad_
Solar load radiation model.
autoPtr< scalarListIOList > FmyProc_
Local view factors.
volScalarField qr_
Net radiative heat flux [W/m2].
autoPtr< IOmapDistribute > map_
Map distributed.
FieldField< Field, scalar > boundaryCoeffs_
Boundary scalar field containing pseudo-matrix coeffs for boundary cells.
labelList procToInterface_
Map from proc to interafce.
List< label > mapRayToFmy_
Map local-ray to j-column for F.
FieldField< Field, scalar > internalCoeffs_
Boundary scalar field containing pseudo-matrix coeffs for internal cells.
labelList pivotIndices_
Pivot Indices for LU decomposition.
bool useDirect_
Use direct or iterative solver.
autoPtr< labelListIOList > globalFaceFaces_
Visible global faces.
labelListIOList finalAgglom_
Agglomeration List.
List< scalarField > qrBandI_
Coarse radiative heat flux.
label totalNCoarseFaces_
Total global coarse faces.
edgeHashSet rays_
Rays on local proc.
bool constEmissivity_
Constant emissivity.
autoPtr< lduPrimitiveMesh > lduPtr_
Primitive addressing for lduMatrix.
labelList selectedPatches_
Selected patches.
bool useSolarLoad_
Use Solar Load model.
void insertMatrixElements(const globalIndex &index, const label fromProci, const labelListList &globalFaceFaces, const scalarListList &viewFactors, scalarSquareMatrix &matrix)
Insert view factors into main matrix.
label iterCounter_
Iterations Counter.
bool read()
Read radiation properties dictionary.
void calculate()
Solve system of equation(s).
fvMesh as subset of other mesh. Consists of one cell and all original boundary faces....
A class for managing temporary objects.
A class for handling words, derived from Foam::string.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
const polyBoundaryMesh & patches
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
#define DebugInFunction
Report an information message using Foam::Info.
volVectorField F(fluid.F())
const dimensionedScalar sigma
Stefan-Boltzmann constant: default SI units: [W/m2/K4].
Different types of constants.
Namespace for handling debugging switches.
const wordList area
Standard area field types (scalar, vector, tensor, etc).
Namespace for radiation modelling.
string upper(const std::string &s)
Return string copy transformed with std::toupper on each character.
string lower(const std::string &s)
Return string copy transformed with std::tolower on each character.
List< scalarList > scalarListList
List of scalarList.
List< edge > edgeList
List of edge.
IOList< scalarList > scalarListIOList
IO for a List of scalarList.
Type & refCast(U &obj)
A dynamic_cast (for references) to Type reference.
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
List< labelList > labelListList
List of labelList.
List< label > labelList
A List of labels.
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
dimensionedScalar pow3(const dimensionedScalar &ds)
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
void LUBacksubstitute(const scalarSquareMatrix &luMmatrix, const labelList &pivotIndices, List< Type > &source)
LU back-substitution with given source, returning the solution in the source.
void LUDecompose(scalarSquareMatrix &matrix, labelList &pivotIndices)
LU decompose the matrix with pivoting.
UPtrList< const lduInterface > lduInterfacePtrsList
Store lists of lduInterface as a UPtrList.
messageStream Info
Information stream (stdout output on master, null elsewhere).
List< lduScheduleEntry > lduSchedule
A List of lduSchedule entries.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
Type gWeightedSum(const UList< scalar > &weights, const UList< Type > &fld, const label comm)
The global weighted sum (integral) of a field, using the mag() of the weights.
T returnReduce(const T &value, BinaryOp bop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm)
Perform reduction on a copy, using specified binary operation.
const word GlobalIOList< Tuple2< scalar, vector > >::typeName("scalarVectorTable")
Ostream & endl(Ostream &os)
Add newline and flush stream.
const dimensionSet dimTemperature(0, 0, 0, 1, 0, 0, 0)
IOList< labelList > labelListIOList
IO for a List of labelList.
void reduce(T &value, BinaryOp bop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm)
Reduce inplace (cf. MPI Allreduce).
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
labelList identity(const label len, label start=0)
Return an identity map of the given length with (map[i] == i), works like std::iota() but returning a...
dimensionedScalar pow4(const dimensionedScalar &ds)
errorManip< error > abort(error &err)
SquareMatrix< scalar > scalarSquareMatrix
dimensioned< Type > sum(const DimensionedField< Type, GeoMesh > &f1, const label comm)
static constexpr const zero Zero
Global zero (0).
Field< tensor > tensorField
Specialisation of Field<T> for tensor.
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
labelList invert(const label len, const labelUList &map)
Create an inverse one-to-one mapping.
prefixOSstream Pout
OSstream wrapped stdout (std::cout) with parallel prefix.
void LUsolve(scalarSquareMatrix &matrix, List< Type > &source)
Solve the matrix using LU decomposition with pivoting returning the LU form of the matrix and the sol...
labelListList invertOneToMany(const label len, const labelUList &map)
Invert one-to-many map. Unmapped elements will be size 0.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
void diag(pointPatchField< vector > &, const pointPatchField< tensor > &)
List< scalar > scalarList
List of scalar.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
SolverPerformance< scalar > solverPerformance
SolverPerformance instantiated for a scalar.
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
fvPatchField< scalar > fvPatchScalarField
constexpr char nl
The newline '\n' character (0x0a).
#define addToRadiationRunTimeSelectionTables(model)
#define forAll(list, i)
Loop across all elements in list.
Basic run-time type information using word as the type's name. Used to enhance the standard RTTI to c...