Go to the documentation of this file.
57 diag[owner[faceI]] +=
phi[faceI];
58 rD[neighbour[faceI]] +=
phi[faceI];
62 diag[neighbour[faceI]] -=
phi[faceI];
63 rD[owner[faceI]] -=
phi[faceI];
74 if (pphi[patchFacei] > 0.0)
76 diag[faceCells[patchFacei]] += pphi[patchFacei];
80 rD[faceCells[patchFacei]] -= pphi[patchFacei];
85 rD += (1.0/alpha_ - 2.0)*
diag;
93 mesh().objectRegistry::template
94 lookupObject<surfaceScalarField>(phiName_);
110 zeroGradientFvPatchScalarField::typeName
116 relaxedDiag(rDeltaT,
phi);
123 scalar(1)/deltaT.
value()
129 mesh().objectRegistry::template lookupObject<volScalarField>
137 scalar(1)/deltaT.
value()
143 <<
"Incorrect dimensions of phi: " <<
phi.dimensions()
164 "ddt("+dt.
name()+
')',
186 tdtdt().internalField() =
223 "ddt("+vf.name()+
')',
236 rDeltaT.dimensions()*vf.dimensions(),
275 "ddt("+
rho.name()+
','+vf.name()+
')',
288 rDeltaT.dimensions()*
rho.dimensions()*vf.dimensions(),
327 "ddt("+
rho.name()+
','+vf.name()+
')',
340 rDeltaT.dimensions()*
rho.dimensions()*vf.dimensions(),
344 -
rho.oldTime().internalField()
350 -
rho.oldTime().boundaryField()
400 alpha.internalField()
404 -
alpha.oldTime().internalField()
405 *
rho.oldTime().internalField()
410 alpha.boundaryField()
414 -
alpha.oldTime().boundaryField()
415 *
rho.oldTime().boundaryField()
459 Info<<
"SLTSDdtScheme<Type>::fvmDdt: max/min rDeltaT "
462 fvm.diag() = rDeltaT*
mesh().V();
497 fvm.diag() = rDeltaT*
rho.value()*
mesh().V();
534 fvm.diag() = rDeltaT*
rho.internalField()*
mesh().V();
539 *
rho.oldTime().internalField()
545 *
rho.oldTime().internalField()
574 fvm.diag() = rDeltaT*
alpha.internalField()*
rho.internalField()*
mesh().Vsc();
579 *
alpha.oldTime().internalField()
580 *
rho.oldTime().internalField()
586 *
alpha.oldTime().internalField()
587 *
rho.oldTime().internalField()
616 "ddtCorr(" +
U.name() +
',' +
Uf.name() +
')',
623 (
mesh().Sf() &
Uf.oldTime()),
653 "ddtCorr(" +
U.name() +
',' +
phi.name() +
')',
657 this->fvcDdtPhiCoeff(
U.oldTime(),
phi.oldTime(), phiCorr)
683 rho.oldTime()*
U.oldTime()
698 +
rho.name() +
',' +
U.name() +
',' +
Uf.name() +
')',
705 mesh().Sf() &
Uf.oldTime(),
718 return fvcDdtUfCorr(
U,
Uf);
723 <<
"dimensions of Uf are not correct"
726 return fluxFieldType::null();
750 rho.oldTime()*
U.oldTime()
765 +
rho.name() +
',' +
U.name() +
',' +
phi.name() +
')',
769 this->fvcDdtPhiCoeff(rhoU0,
phi.oldTime(), phiCorr)
780 return fvcDdtPhiCorr(
U,
phi);
785 <<
"dimensions of phi are not correct"
788 return fluxFieldType::null();
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
tmp< fvMatrix< Type > > fvmDdt(const GeometricField< Type, fvPatchField, volMesh > &)
const dimensionSet dimless(0, 0, 0, 0, 0, 0, 0)
tmp< volScalarField > SLrDeltaT() const
Return the reciprocal of the stabilised local time-step.
#define forAll(list, i)
Loop across all elements in list.
A class for managing temporary objects.
const dimensionSet dimVelocity
const dimensionSet dimDensity
void diag(pointPatchField< vector > &, const pointPatchField< tensor > &)
const dimensionedScalar alpha
Fine-structure constant: default SI units: [].
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.
An abstract base class with a fat-interface to all derived classes covering all possible ways in whic...
const GeometricField< Type, PatchField, GeoMesh > & oldTime() const
Return old time field.
const word & name() const
Return const reference to name.
GeometricBoundaryField & boundaryField()
Return reference to GeometricBoundaryField.
Ostream & endl(Ostream &os)
Add newline and flush stream.
const Type & value() const
Return const reference to value.
Dimension set for the base types.
A special matrix type and solver, designed for finite volume solutions of scalar equations.
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
const dimensionSet dimArea(sqr(dimLength))
Pre-declare SubField and related Field type.
InternalField & internalField()
Return internal field.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Generic dimensioned Type class.
tmp< fluxFieldType > fvcDdtUfCorr(const GeometricField< Type, fvPatchField, volMesh > &U, const GeometricField< Type, fvsPatchField, surfaceMesh > &Uf)
This boundary condition is not designed to be evaluated; it is assmued that the value is assigned via...
errorManip< error > abort(error &err)
const labelUList & faceCells() const
Return face-cell addressing.
void correctBoundaryConditions()
Correct boundary field.
conserve internalField()+
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
const fvPatch & patch() const
Return patch.
tmp< surfaceScalarField > meshPhi(const GeometricField< Type, fvPatchField, volMesh > &)
Traits class for primitives.
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
const polyPatch & patch() const
Return the polyPatch.
void relaxedDiag(scalarField &rD, const surfaceScalarField &phi) const
Calculate a relaxed diagonal from the given flux field.
tmp< volScalarField > trDeltaT
const dimensionSet dimVol(dimVolume)
tmp< GeometricField< Type, fvPatchField, volMesh > > fvcDdt(const dimensioned< Type > &)
Type gMin(const FieldField< Field, Type > &f)
const dimensionSet & dimensions() const
Return const reference to dimensions.
const dimensionSet dimVolume(pow3(dimLength))
Generic GeometricField class.
tmp< fluxFieldType > fvcDdtPhiCorr(const GeometricField< Type, fvPatchField, volMesh > &U, const fluxFieldType &phi)
Type gMax(const FieldField< Field, Type > &f)