32 template<
class RdeltaTType,
class RhoType,
class SpType>
35 const RdeltaTType& rDeltaT,
47 psi.primitiveFieldRef() =
49 (
rho.primitiveField()*rDeltaT -
Sp.primitiveField())
52 )/(
rho.primitiveField()*rDeltaT -
Sp.primitiveField());
54 psi.correctBoundaryConditions();
58 template<
class RhoType>
70 template<
class RhoType,
class SpType>
81 if (fv::localEulerDdt::enabled(
mesh))
94 template<
class RhoType,
class PsiMaxType,
class PsiMinType>
102 const PsiMaxType& psiMax,
103 const PsiMinType& psiMin
135 const PsiMaxType& psiMax,
136 const PsiMinType& psiMin
141 if (fv::localEulerDdt::enabled(
mesh))
197 const PsiMaxType& psiMax,
198 const PsiMinType& psiMin
204 for (
label i = 1; i<phiCorrs.
size(); i++)
206 phiCorr += phiCorrs[i];
209 if (fv::localEulerDdt::enabled(
mesh))
263 const RdeltaTType& rDeltaT,
269 const PsiMaxType& psiMax,
270 const PsiMinType& psiMin
294 *(
rho.primitiveField()*rDeltaT -
Sp.primitiveField())
295 *
psi.primitiveField()
329 const RdeltaTType& rDeltaT,
336 const PsiMaxType& psiMax,
337 const PsiMinType& psiMin
361 *(
rho.primitiveField()*rDeltaT -
Sp.primitiveField())
362 *
psi.primitiveField()
404 const PsiMaxType& psiMax,
405 const PsiMinType& psiMin
410 if (fv::localEulerDdt::enabled(
mesh))
CMULES: Multidimensional universal limiter for explicit corrected implicit solution.
#define forAll(list, i)
Loop across all elements in list.
Generic GeometricField class.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
scalar deltaTValue() const
Return time step value.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
label size() const
Return the number of elements in the UPtrList.
const word & name() const
Return const reference to name.
Mesh data needed to do the Finite Volume discretisation.
const Time & time() const
Return the top-level database.
tmp< DimensionedField< scalar, fvMesh > > Vsc() const
Return sub-cycle cell volumes.
A class representing the concept of a field of 0 used to avoid unnecessary manipulations for objects ...
Foam::fvMesh mesh(Foam::IOobject(regionName, runTime.name(), runTime, Foam::IOobject::MUST_READ), false)
Surface integrate surfaceField creating a volField. Surface sum a surfaceField creating a volField.
const volScalarField & psi
dimensionedScalar lambda(viscosity->lookup("lambda"))
void correct(const RdeltaTType &rDeltaT, const RhoType &rho, volScalarField &psi, const surfaceScalarField &phiCorr, const SpType &Sp)
void limitCorr(const control &controls, const RdeltaTType &rDeltaT, const RhoType &rho, const volScalarField &psi, const surfaceScalarField &phiBD, surfaceScalarField &phiCorr, const SpType &Sp, const PsiMaxType &psiMax, const PsiMinType &psiMin)
void limiter(const control &controls, surfaceScalarField &lambda, const RdeltaTType &rDeltaT, const RhoType &rho, const volScalarField &psi, const scalarField &SuCorr, const surfaceScalarField &phi, const surfaceScalarField &phiCorr, const SpType &Sp, const PsiMaxType &psiMax, const PsiMinType &psiMin)
const dimensionSet dimless
void surfaceIntegrate(Field< Type > &ivf, const SurfaceField< Type > &ssf)
tmp< VolField< Type > > Sp(const volScalarField &sp, const VolField< Type > &vf)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Ostream & endl(Ostream &os)
Add newline and flush stream.