35 template<
class RdeltaTType,
class RhoType,
class SpType,
class SuType>
38 const RdeltaTType& rDeltaT,
60 mesh.
Vsc0()().primitiveField()*
rho.oldTime().primitiveField()
61 *psi0*rDeltaT/
mesh.
Vsc()().primitiveField()
64 )/(
rho.primitiveField()*rDeltaT -
Sp.primitiveField());
70 rho.oldTime().primitiveField()*psi0*rDeltaT
73 )/(
rho.primitiveField()*rDeltaT -
Sp.primitiveField());
76 psi.correctBoundaryConditions();
80 template<
class RhoType>
92 template<
class RhoType,
class SpType,
class SuType>
104 if (fv::localEulerDdt::enabled(
mesh))
117 template<
class RhoType,
class PsiMaxType,
class PsiMinType>
125 const PsiMaxType& psiMax,
126 const PsiMinType& psiMin
161 const PsiMaxType& psiMax,
162 const PsiMinType& psiMin
167 psi.correctBoundaryConditions();
169 if (fv::localEulerDdt::enabled(
mesh))
222 const RdeltaTType& rDeltaT,
229 const PsiMaxType& psiMax,
230 const PsiMinType& psiMin,
231 const bool returnCorr
245 phiBDPf = psiPhiBf[
patchi];
278 const RdeltaTType& rDeltaT,
286 const PsiMaxType& psiMax,
287 const PsiMinType& psiMin,
288 const bool returnCorr
309 ? (
mesh.
Vsc0()().primitiveField()*rDeltaT*
rho.oldTime().primitiveField())
310 *
psi.oldTime().primitiveField()
311 + V*
Su.primitiveField()
314 (
rho.oldTime().primitiveField()*rDeltaT)
315 *
psi.oldTime().primitiveField()
316 +
Su.primitiveField()
324 SuCorr[owner[facei]] -= phiBDIf[facei];
325 SuCorr[neighb[facei]] += phiBDIf[facei];
335 SuCorr[pFaceCells[pFacei]] -= phiBDPf[pFacei];
375 psiPhi = phiBD +
lambda*phiCorr;
397 const PsiMaxType& psiMax,
398 const PsiMinType& psiMin,
404 if (fv::localEulerDdt::enabled(
mesh))
461 const PsiMaxType& psiMax,
462 const PsiMinType& psiMin,
468 if (fv::localEulerDdt::enabled(
mesh))
MULES: Multidimensional universal limiter for explicit solution.
#define forAll(list, i)
Loop across all elements in list.
Generic GeometricBoundaryField class.
Generic GeometricField class.
const Boundary & boundaryField() const
Return const-reference to the boundary field.
Boundary & boundaryFieldRef()
Return a reference to the boundary field.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
scalar deltaTValue() const
Return time step value.
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.
const labelUList & owner() const
Internal face owner.
const fvBoundaryMesh & boundary() const
Return reference to boundary mesh.
const labelUList & neighbour() const
Internal face neighbour.
tmp< DimensionedField< scalar, volMesh > > Vsc0() const
Return sub-cycle old-time cell volumes.
tmp< DimensionedField< scalar, volMesh > > Vsc() const
Return sub-cycle cell volumes.
An abstract base class with a fat-interface to all derived classes covering all possible ways in whic...
virtual bool coupled() const
Return true if this patch field is coupled.
virtual tmp< SurfaceField< Type > > flux(const VolField< Type > &) const
Return the interpolation weighting factors.
bool moving() const
Is mesh moving.
A class for managing temporary objects.
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 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)
void explicitSolve(const RdeltaTType &rDeltaT, const RhoType &rho, volScalarField &psi, const surfaceScalarField &psiPhi, const SpType &Sp, const SuType &Su)
void limit(const control &controls, const RdeltaTType &rDeltaT, const RhoType &rho, const volScalarField &psi, const surfaceScalarField &phi, surfaceScalarField &psiPhi, const SpType &Sp, const SuType &Su, const PsiMaxType &psiMax, const PsiMinType &psiMin, const bool returnCorr)
void surfaceIntegrate(Field< Type > &ivf, const SurfaceField< Type > &ssf)
tmp< VolField< Type > > Su(const VolField< Type > &su, const VolField< Type > &vf)
tmp< VolField< Type > > Sp(const volScalarField &sp, const VolField< Type > &vf)
Ostream & endl(Ostream &os)
Add newline and flush stream.
const dimensionSet dimless