27 #include "surfaceInterpolate.H"
52 const word ddtName(
"ddt("+dt.
name()+
')');
71 tdtdt.
ref().primitiveFieldRef() =
72 rDeltaT.
value()*dt.
value()*(1.0 - mesh().Vsc0()/mesh().Vsc());
103 const word ddtName(
"ddt("+vf.
name()+
')');
113 - vf.
oldTime()()*mesh().Vsc0()/mesh().Vsc()
142 const word ddtName(
"ddt("+
rho.name()+
','+vf.
name()+
')');
152 - vf.
oldTime()()*mesh().Vsc0()/mesh().Vsc()
181 const word ddtName(
"ddt("+
rho.name()+
','+vf.
name()+
')');
192 *vf.
oldTime()()*mesh().Vsc0()/mesh().Vsc()
197 -
rho.oldTime().boundaryField()
239 *vf.
oldTime()()*mesh().Vsc0()/mesh().Vsc()
243 alpha.boundaryField()
247 -
alpha.oldTime().boundaryField()
248 *
rho.oldTime().boundaryField()
277 const word ddtName(
"ddt("+
sf.name()+
')');
282 rDeltaT*(
sf -
sf.oldTime())
305 const scalar rDeltaT = 1.0/mesh().time().deltaTValue();
307 fvm.
diag() = rDeltaT*mesh().Vsc();
311 fvm.
source() = rDeltaT*vf.
oldTime().primitiveField()*mesh().Vsc0();
315 fvm.
source() = rDeltaT*vf.
oldTime().primitiveField()*mesh().Vsc();
340 const scalar rDeltaT = 1.0/mesh().time().deltaTValue();
342 fvm.
diag() = rDeltaT*
rho.value()*mesh().Vsc();
347 *
rho.value()*vf.
oldTime().primitiveField()*mesh().Vsc0();
352 *
rho.value()*vf.
oldTime().primitiveField()*mesh().Vsc();
377 const scalar rDeltaT = 1.0/mesh().time().deltaTValue();
379 fvm.
diag() = rDeltaT*
rho.primitiveField()*mesh().Vsc();
384 *
rho.oldTime().primitiveField()
385 *vf.
oldTime().primitiveField()*mesh().Vsc0();
390 *
rho.oldTime().primitiveField()
391 *vf.
oldTime().primitiveField()*mesh().Vsc();
421 const scalar rDeltaT = 1.0/mesh().time().deltaTValue();
424 rDeltaT*
alpha.primitiveField()*
rho.primitiveField()*mesh().Vsc();
429 *
alpha.oldTime().primitiveField()
430 *
rho.oldTime().primitiveField()
431 *vf.
oldTime().primitiveField()*mesh().Vsc0();
436 *
alpha.oldTime().primitiveField()
437 *
rho.oldTime().primitiveField()
438 *vf.
oldTime().primitiveField()*mesh().Vsc();
463 "ddtCorr(" +
U.name() +
',' + Uf.
name() +
')',
464 this->fvcDdtPhiCoeff(
U.oldTime(), phiUf0, phiCorr)*rDeltaT*phiCorr
486 "ddtCorr(" +
U.name() +
',' + phi.
name() +
')',
487 this->fvcDdtPhiCoeff(
U.oldTime(), phi.
oldTime(), phiCorr)
516 "ddtCorr(" +
rho.name() +
',' +
U.name() +
',' + rhoUf.
name() +
')',
517 this->fvcDdtPhiCoeff(rhoU0, phiUf0, phiCorr,
rho.oldTime())
535 "ddtCorr(" +
rho.name() +
',' +
U.name() +
',' + rhoUf.
name() +
')',
548 <<
"dimensions of rhoUf are not correct"
551 return fluxFieldType::null();
575 rho.oldTime()*
U.oldTime()
585 "ddtCorr(" +
rho.name() +
',' +
U.name() +
',' + phi.
name() +
')',
608 "ddtCorr(" +
rho.name() +
',' +
U.name() +
',' + phi.
name() +
')',
621 <<
"dimensions of phi are not correct"
624 return fluxFieldType::null();
648 +
alpha.name() +
rho.name() +
',' +
U.name() +
',' + Uf.
name()
650 this->fvcDdtPhiCoeff(
U.oldTime(), mesh().Sf() & Uf.
oldTime())
664 <<
"dimensions of Uf are not correct"
667 return fluxFieldType::null();
691 +
alpha.name() +
rho.name() +
',' +
U.name() +
',' + phi.
name()
693 this->fvcDdtPhiCoeff(
U.oldTime(), phi.
oldTime())
704 <<
"dimensions of phi are not correct"
707 return fluxFieldType::null();
729 return mesh().phi().boundaryField()[
patchi];
const dimensionSet & dimensions() const
Return dimensions.
Generic GeometricField class.
const Boundary & boundaryField() const
Return const-reference to the boundary field.
static tmp< GeometricField< Type, PatchField, GeoMesh > > New(const word &name, const Internal &, const PtrList< PatchField< Type >> &, const HashPtrTable< Source > &=HashPtrTable< Source >())
Return a temporary field constructed from name,.
const word & name() const
Return name.
const FieldType & oldTime() const
Return the old time field.
This boundary condition is not designed to be evaluated; it is assumed that the value is assigned via...
Generic dimensioned Type class.
const dimensionSet & dimensions() const
Return const reference to dimensions.
const Type & value() const
Return const reference to value.
const word & name() const
Return const reference to name.
A special matrix type and solver, designed for finite volume solutions of scalar equations....
virtual tmp< fluxFieldType > fvcDdtPhiCorr(const VolField< Type > &U, const fluxFieldType &phi)
virtual tmp< fvMatrix< Type > > fvmDdt(const VolField< Type > &)
virtual tmp< surfaceScalarField > meshPhi(const VolField< Type > &)
virtual tmp< fluxFieldType > fvcDdtUfCorr(const VolField< Type > &U, const SurfaceField< Type > &Uf)
virtual tmp< VolField< Type > > fvcDdt(const dimensioned< Type > &)
A class for managing temporary objects.
T & ref() const
Return non-const reference or generate a fatal error.
A class for handling words, derived from string.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
A special matrix type and solver, designed for finite volume solutions of scalar equations.
Calculate the divergence of the given field.
volScalarField sf(fieldObject, mesh)
volScalarField alpha(IOobject("alpha", runTime.name(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE), lambda *max(Ua &U, zeroSensitivity))
autoPtr< CompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const viscosity &viscosity)
static tmp< SurfaceField< Type > > interpolate(const VolField< Type > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
static tmp< SurfaceField< typename innerProduct< vector, Type >::type > > dotInterpolate(const surfaceVectorField &Sf, const VolField< Type > &tvf)
Interpolate field onto faces.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
const dimensionSet dimVolumetricFlux
errorManip< error > abort(error &err)
const dimensionSet dimTime
const dimensionSet dimVolume
const dimensionSet dimVelocity