Go to the documentation of this file.
39 template<
class RhoType>
55 template<
class RhoType,
class SpType,
class SuType>
77 scalar maxUnboundedness
95 mesh.time().timeName(),
110 mesh.time().deltaT()*
mesh.surfaceInterpolation::deltaCoeffs()
113 CoLambda == 1.0/
max(CoCoeff*Cof, scalar(1));
118 mesh.time().deltaT()*
mesh.surfaceInterpolation::deltaCoeffs()
121 CoLambda == 1.0/
max(CoCoeff*Cof, scalar(1));
133 mesh.time().timeName(),
164 for (
label i=0; i<maxIter; i++)
168 allLambda = allCoLambda;
174 1.0/
mesh.time().deltaTValue(),
191 scalar maxPsiM1 =
gMax(
psi.internalField()) - 1.0;
192 scalar minPsi =
gMin(
psi.internalField());
194 scalar unboundedness =
max(
max(maxPsiM1, 0.0), -
min(minPsi, 0.0));
196 if (unboundedness < maxUnboundedness)
202 Info<<
"MULES: max(" <<
psi.name() <<
" - 1) = " << maxPsiM1
203 <<
" min(" <<
psi.name() <<
") = " << minPsi <<
endl;
205 phiBD = psiConvectionDiffusion.
flux();
232 phiPsi = psiConvectionDiffusion.
flux() +
lambda*phiCorr;
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
const dimensionSet dimless(0, 0, 0, 0, 0, 0, 0)
IMULES: Multidimensional universal limiter for implicit solution.
tmp< surfaceScalarField > interpolate(const volScalarField &rho)
A class for managing temporary objects.
const dimensionSet dimVelocity
Upwind differencing scheme class.
const dimensionSet dimDensity
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate(const GeometricField< Type, fvPatchField, volMesh > &vf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
ITstream & lookup(const word &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream.
void limiter(scalarField &allLambda, const RdeltaTType &rDeltaT, const RhoType &rho, const volScalarField &psi, const surfaceScalarField &phiBD, const surfaceScalarField &phiCorr, const SpType &Sp, const SuType &Su, const scalar psiMax, const scalar psiMin)
Calculate the divergence of the given field.
tmp< surfaceScalarField > interpolate(const RhoType &rho)
tmp< GeometricField< Type, fvPatchField, volMesh > > div(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
Ostream & endl(Ostream &os)
Add newline and flush stream.
dimensioned< scalar > mag(const dimensioned< Type > &)
Basic second-order convection using face-gradients and Gauss' theorem.
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
const dimensionSet dimArea(sqr(dimLength))
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Pre-declare SubField and related Field type.
tmp< GeometricField< Type, fvPatchField, volMesh > > Su(const GeometricField< Type, fvPatchField, volMesh > &su, const GeometricField< Type, fvPatchField, volMesh > &vf)
A list of keyword definitions, which are a keyword followed by any number of values (e....
Mesh data needed to do the Finite Volume discretisation.
Calculate the matrix for implicit and explicit sources.
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
void implicitSolve(const RhoType &rho, volScalarField &gamma, const surfaceScalarField &phi, surfaceScalarField &phiCorr, const SpType &Sp, const SuType &Su, const scalar psiMax, const scalar psiMin)
const volScalarField & psi
A special matrix type and solver, designed for finite volume solutions of scalar equations....
label readLabel(Istream &is)
Specialization of GeometricField which holds slices of given complete fields in a form that they act ...
tmp< GeometricField< Type, fvPatchField, volMesh > > ddt(const dimensioned< Type > dt, const fvMesh &mesh)
Central-differencing interpolation scheme class.
Type gMin(const FieldField< Field, Type > &f)
tmp< GeometricField< Type, fvPatchField, volMesh > > Sp(const volScalarField &sp, const GeometricField< Type, fvPatchField, volMesh > &vf)
Generic GeometricField class.
dimensioned< Type > min(const dimensioned< Type > &, const dimensioned< Type > &)
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > flux() const
Return the face-flux field from the matrix.
dimensionedScalar lambda(laminarTransport.lookup("lambda"))
Type gMax(const FieldField< Field, Type > &f)
Calulate the matrix for the first temporal derivative.