28 #include "surfaceInterpolate.H" 39 template<
class RhoType>
55 template<
class RhoType,
class SpType,
class SuType>
77 scalar maxUnboundedness
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));
164 for (
label i=0; i<maxIter; i++)
168 allLambda = allCoLambda;
187 psiConvectionDiffusion +
fvc::div(lambda*phiCorr),
191 scalar maxPsiM1 =
gMax(psi.primitiveField()) - 1.0;
192 scalar minPsi =
gMin(psi.primitiveField());
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;
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
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)
A list of keyword definitions, which are a keyword followed by any number of values (e...
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
Type gMin(const FieldField< Field, Type > &f)
tmp< fvMatrix< Type > > Sp(const DimensionedField< scalar, volMesh > &, const GeometricField< Type, fvPatchField, volMesh > &)
Central-differencing interpolation scheme class.
tmp< GeometricField< Type, fvPatchField, volMesh > > div(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > flux() const
Return the face-flux field from the matrix.
Ostream & endl(Ostream &os)
Add newline and flush stream.
tmp< GeometricField< Type, fvPatchField, volMesh > > Sp(const volScalarField &sp, const GeometricField< Type, fvPatchField, volMesh > &vf)
static word timeName(const scalar, const int precision=precision_)
Return time name of given scalar time.
tmp< surfaceScalarField > interpolate(const RhoType &rho)
SolverPerformance< Type > solve(fvMatrix< Type > &, const dictionary &)
Solve returning the solution statistics given convergence tolerance.
tmp< fvMatrix< Type > > ddt(const GeometricField< Type, fvPatchField, volMesh > &vf)
Calulate the matrix for the first temporal derivative.
const surfaceScalarField & magSf() const
Return cell face area magnitudes.
A special matrix type and solver, designed for finite volume solutions of scalar equations. Face addressing is used to make all matrix assembly and solution loops vectorise.
bool readScalar(const char *buf, doubleScalar &s)
Read whole of buf as a scalar. Return true if succesful.
label readLabel(Istream &is)
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 dimensionSet & dimensions() const
Return dimensions.
Calculate the divergence of the given field.
Type gMax(const FieldField< Field, Type > &f)
scalar deltaTValue() const
Return time step value.
dimensioned< Type > min(const dimensioned< Type > &, const dimensioned< Type > &)
static tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate(const GeometricField< Type, fvPatchField, volMesh > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
const dimensionSet dimDensity
Basic second-order convection using face-gradients and Gauss' theorem.
const dimensionSet dimless(0, 0, 0, 0, 0, 0, 0)
dimensionedScalar deltaT() const
Return time step.
const Mesh & mesh() const
Return mesh.
Upwind differencing scheme class.
Mesh data needed to do the Finite Volume discretisation.
dimensionedScalar lambda(laminarTransport.lookup("lambda"))
dimensioned< scalar > mag(const dimensioned< Type > &)
const volScalarField & psi
const dictionary & solverDict(const word &name) const
Return the solver controls dictionary for the given field.
A class for managing temporary objects.
Specialization of GeometricField which holds slices of given complete fields in a form that they act ...
tmp< GeometricField< Type, fvPatchField, volMesh > > Su(const GeometricField< Type, fvPatchField, volMesh > &su, const GeometricField< Type, fvPatchField, volMesh > &vf)
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
const word & name() const
Return name.
Calculate the matrix for implicit and explicit sources.
IMULES: Multidimensional universal limiter for implicit solution.
const dimensionSet dimArea(sqr(dimLength))
const Time & time() const
Return the top-level database.
ITstream & lookup(const word &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream.
const dimensionSet dimVelocity