27 #include "surfaceInterpolate.H"
45 template<
class GeoField>
46 CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>::DDt0Field
58 this->
timeIndex() = mesh.time().startTimeIndex();
63 template<
class GeoField>
64 CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>::DDt0Field
68 const dimensioned<typename GeoField::value_type>& dimType
71 GeoField(io, mesh, dimType),
77 template<
class GeoField>
78 label CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>::
79 startTimeIndex()
const
81 return startTimeIndex_;
86 template<
class GeoField>
87 GeoField& CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>::
95 template<
class GeoField>
99 GeoField::operator=(gf);
104 template<
class GeoField>
105 typename CrankNicolsonDdtScheme<Type>::template DDt0Field<GeoField>&
108 const word& unTypedName,
114 if (!mesh().objectRegistry::template foundObject<GeoField>(
name))
116 const Time& runTime = mesh().
time();
135 new DDt0Field<GeoField>
153 new DDt0Field<GeoField>
158 mesh().time().
name(),
175 DDt0Field<GeoField>& ddt0 =
static_cast<DDt0Field<GeoField>&
>
177 mesh().objectRegistry::template lookupObjectRef<GeoField>(
name)
185 template<
class GeoField>
188 const DDt0Field<GeoField>& ddt0
191 return ddt0.timeIndex() != mesh().time().timeIndex();
195 template<
class GeoField>
196 scalar CrankNicolsonDdtScheme<Type>::coef_
198 const DDt0Field<GeoField>& ddt0
201 if (mesh().time().
timeIndex() > ddt0.startTimeIndex())
203 return 1 + ocCoeff();
213 template<
class GeoField>
214 scalar CrankNicolsonDdtScheme<Type>::coef0_
216 const DDt0Field<GeoField>& ddt0
219 if (mesh().time().
timeIndex() > ddt0.startTimeIndex() + 1)
221 return 1 + ocCoeff();
231 template<
class GeoField>
234 const DDt0Field<GeoField>& ddt0
237 return coef_(ddt0)/mesh().time().deltaT();
242 template<
class GeoField>
245 const DDt0Field<GeoField>& ddt0
248 return coef0_(ddt0)/mesh().time().deltaT0();
253 template<
class GeoField>
254 tmp<GeoField> CrankNicolsonDdtScheme<Type>::offCentre_
261 return ocCoeff()*ddt0;
286 ocCoeff_(new Function1s::Constant<scalar>(
"ocCoeff", 1))
306 token firstToken(is);
312 if (ocCoeff < 0 || ocCoeff > 1)
315 <<
"Off-centreing coefficient = " <<
ocCoeff
316 <<
" should be >= 0 and <= 1"
355 DDt0Field<VolField<Type>>& ddt0 =
356 ddt0_<VolField<Type>>
358 "ddt0(" + dt.
name() +
')',
362 const word ddtName(
"ddt(" + dt.
name() +
')');
387 ddt0.internalFieldRef() =
389 (rDtCoef0*dt)*(mesh().V0() - mesh().V00())
390 - mesh().V00()*offCentre_(ddt0.internalField())
394 tdtdt.
ref().internalFieldRef() =
396 (rDtCoef*dt)*(mesh().V() - mesh().V0())
397 - mesh().V0()*offCentre_(ddt0.internalField())
412 DDt0Field<VolField<Type>>& ddt0 =
413 ddt0_<VolField<Type>>
415 "ddt0(" + vf.
name() +
')',
419 const word ddtName(
"ddt(" + vf.
name() +
')');
427 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
429 ddt0.primitiveFieldRef() =
433 mesh().V0()*vf.
oldTime().primitiveField()
434 - mesh().V00()*vf.
oldTime().oldTime().primitiveField()
435 ) - mesh().V00()*offCentre_(ddt0.primitiveField())
438 ddt0.boundaryFieldRef() =
443 - vf.
oldTime().oldTime().boundaryField()
444 ) - offCentre_(
ff(ddt0.boundaryField()))
456 ) - mesh().V0()*offCentre_(ddt0()())
461 ) - offCentre_(
ff(ddt0.boundaryField()))
469 - offCentre_(ddt0());
475 rDtCoef*(vf - vf.
oldTime()) - offCentre_(ddt0())
489 DDt0Field<VolField<Type>>& ddt0 =
490 ddt0_<VolField<Type>>
492 "ddt0(" +
rho.name() +
',' + vf.
name() +
')',
496 const word ddtName(
"ddt(" +
rho.name() +
',' + vf.
name() +
')');
504 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
506 ddt0.primitiveFieldRef() =
508 rDtCoef0*
rho.value()*
510 mesh().V0()*vf.
oldTime().primitiveField()
511 - mesh().V00()*vf.
oldTime().oldTime().primitiveField()
512 ) - mesh().V00()*offCentre_(ddt0.primitiveField())
515 ddt0.boundaryFieldRef() =
517 rDtCoef0*
rho.value()*
520 - vf.
oldTime().oldTime().boundaryField()
521 ) - offCentre_(
ff(ddt0.boundaryField()))
533 ) - mesh().V0()*offCentre_(ddt0())()
538 ) - offCentre_(
ff(ddt0.boundaryField()))
546 - offCentre_(ddt0());
552 rDtCoef*
rho*(vf - vf.
oldTime()) - offCentre_(ddt0())
566 DDt0Field<VolField<Type>>& ddt0 =
567 ddt0_<VolField<Type>>
569 "ddt0(" +
rho.name() +
',' + vf.
name() +
')',
573 const word ddtName(
"ddt(" +
rho.name() +
',' + vf.
name() +
')');
581 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
583 ddt0.primitiveFieldRef() =
587 mesh().V0()*
rho.oldTime().primitiveField()
589 - mesh().V00()*
rho.oldTime().oldTime().primitiveField()
590 *vf.
oldTime().oldTime().primitiveField()
591 ) - mesh().V00()*offCentre_(ddt0.primitiveField())
594 ddt0.boundaryFieldRef() =
598 rho.oldTime().boundaryField()
600 -
rho.oldTime().oldTime().boundaryField()
601 *vf.
oldTime().oldTime().boundaryField()
602 ) - offCentre_(
ff(ddt0.boundaryField()))
612 mesh().V()*
rho()*vf()
613 - mesh().V0()*
rho.oldTime()()
615 ) - mesh().V00()*offCentre_(ddt0())()
620 -
rho.oldTime().boundaryField()*vf.
oldTime().boundaryField()
621 ) - offCentre_(
ff(ddt0.boundaryField()))
628 ddt0 = rDtCoef0_(ddt0)*
631 -
rho.oldTime().oldTime()*vf.
oldTime().oldTime()
632 ) - offCentre_(ddt0());
638 rDtCoef*(
rho*vf -
rho.oldTime()*vf.
oldTime()) - offCentre_(ddt0())
653 DDt0Field<VolField<Type>>& ddt0 =
654 ddt0_<VolField<Type>>
656 "ddt0(" +
alpha.name() +
',' +
rho.name() +
',' + vf.
name() +
')',
662 "ddt(" +
alpha.name() +
',' +
rho.name() +
',' + vf.
name() +
')'
671 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
673 ddt0.primitiveFieldRef() =
678 *
alpha.oldTime().primitiveField()
679 *
rho.oldTime().primitiveField()
683 *
alpha.oldTime().oldTime().primitiveField()
684 *
rho.oldTime().oldTime().primitiveField()
685 *vf.
oldTime().oldTime().primitiveField()
686 ) - mesh().V00()*offCentre_(ddt0.primitiveField())
689 ddt0.boundaryFieldRef() =
693 alpha.oldTime().boundaryField()
694 *
rho.oldTime().boundaryField()
697 -
alpha.oldTime().oldTime().boundaryField()
698 *
rho.oldTime().oldTime().boundaryField()
699 *vf.
oldTime().oldTime().boundaryField()
700 ) - offCentre_(
ff(ddt0.boundaryField()))
712 ) - mesh().V00()*offCentre_(ddt0())()
716 alpha.boundaryField()
720 -
alpha.oldTime().boundaryField()
721 *
rho.oldTime().boundaryField()
723 ) - offCentre_(
ff(ddt0.boundaryField()))
730 ddt0 = rDtCoef0_(ddt0)*
736 -
alpha.oldTime().oldTime()
737 *
rho.oldTime().oldTime()
739 ) - offCentre_(ddt0());
763 DDt0Field<VolField<Type>>& ddt0 =
764 ddt0_<VolField<Type>>
766 "ddt0(" + vf.
name() +
')',
781 const scalar rDtCoef = rDtCoef_(ddt0).value();
782 fvm.
diag() = rDtCoef*mesh().V();
790 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
792 ddt0.primitiveFieldRef() =
796 mesh().V0()*vf.
oldTime().primitiveField()
797 - mesh().V00()*vf.
oldTime().oldTime().primitiveField()
799 - mesh().V00()*offCentre_(ddt0.primitiveField())
802 ddt0.boundaryFieldRef() =
807 - vf.
oldTime().oldTime().boundaryField()
809 - offCentre_(
ff(ddt0.boundaryField()))
815 rDtCoef*vf.
oldTime().primitiveField()
816 + offCentre_(ddt0.primitiveField())
824 - offCentre_(ddt0());
829 rDtCoef*vf.
oldTime().primitiveField()
830 + offCentre_(ddt0.primitiveField())
846 DDt0Field<VolField<Type>>& ddt0 =
847 ddt0_<VolField<Type>>
849 "ddt0(" +
rho.name() +
',' + vf.
name() +
')',
863 const scalar rDtCoef = rDtCoef_(ddt0).value();
864 fvm.
diag() = rDtCoef*
rho.value()*mesh().V();
872 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
874 ddt0.primitiveFieldRef() =
876 rDtCoef0*
rho.value()*
878 mesh().V0()*vf.
oldTime().primitiveField()
879 - mesh().V00()*vf.
oldTime().oldTime().primitiveField()
881 - mesh().V00()*offCentre_(ddt0.primitiveField())
884 ddt0.boundaryFieldRef() =
886 rDtCoef0*
rho.value()*
889 - vf.
oldTime().oldTime().boundaryField()
891 - offCentre_(
ff(ddt0.boundaryField()))
897 rDtCoef*
rho.value()*vf.
oldTime().primitiveField()
898 + offCentre_(ddt0.primitiveField())
906 - offCentre_(ddt0());
911 rDtCoef*
rho.value()*vf.
oldTime().primitiveField()
912 + offCentre_(ddt0.primitiveField())
928 DDt0Field<VolField<Type>>& ddt0 =
929 ddt0_<VolField<Type>>
931 "ddt0(" +
rho.name() +
',' + vf.
name() +
')',
945 const scalar rDtCoef = rDtCoef_(ddt0).value();
946 fvm.
diag() = rDtCoef*
rho.primitiveField()*mesh().V();
949 rho.oldTime().oldTime();
955 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
957 ddt0.primitiveFieldRef() =
961 mesh().V0()*
rho.oldTime().primitiveField()
963 - mesh().V00()*
rho.oldTime().oldTime().primitiveField()
964 *vf.
oldTime().oldTime().primitiveField()
966 - mesh().V00()*offCentre_(ddt0.primitiveField())
969 ddt0.boundaryFieldRef() =
973 rho.oldTime().boundaryField()
975 -
rho.oldTime().oldTime().boundaryField()
976 *vf.
oldTime().oldTime().boundaryField()
978 - offCentre_(
ff(ddt0.boundaryField()))
984 rDtCoef*
rho.oldTime().primitiveField()*vf.
oldTime().primitiveField()
985 + offCentre_(ddt0.primitiveField())
992 ddt0 = rDtCoef0_(ddt0)*
995 -
rho.oldTime().oldTime()*vf.
oldTime().oldTime()
996 ) - offCentre_(ddt0());
1001 rDtCoef*
rho.oldTime().primitiveField()*vf.
oldTime().primitiveField()
1002 + offCentre_(ddt0.primitiveField())
1010 template<
class Type>
1019 DDt0Field<VolField<Type>>& ddt0 =
1020 ddt0_<VolField<Type>>
1022 "ddt0(" +
alpha.name() +
',' +
rho.name() +
',' + vf.
name() +
')',
1040 const scalar rDtCoef = rDtCoef_(ddt0).value();
1041 fvm.
diag() = rDtCoef*
alpha.primitiveField()*
rho.primitiveField()*mesh().V();
1044 alpha.oldTime().oldTime();
1045 rho.oldTime().oldTime();
1047 if (mesh().moving())
1051 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
1053 ddt0.primitiveFieldRef() =
1058 *
alpha.oldTime().primitiveField()
1059 *
rho.oldTime().primitiveField()
1060 *vf.
oldTime().primitiveField()
1063 *
alpha.oldTime().oldTime().primitiveField()
1064 *
rho.oldTime().oldTime().primitiveField()
1065 *vf.
oldTime().oldTime().primitiveField()
1067 - mesh().V00()*offCentre_(ddt0.primitiveField())
1070 ddt0.boundaryFieldRef() =
1074 alpha.oldTime().boundaryField()
1075 *
rho.oldTime().boundaryField()
1078 -
alpha.oldTime().oldTime().boundaryField()
1079 *
rho.oldTime().oldTime().boundaryField()
1080 *vf.
oldTime().oldTime().boundaryField()
1082 - offCentre_(
ff(ddt0.boundaryField()))
1089 *
alpha.oldTime().primitiveField()
1090 *
rho.oldTime().primitiveField()
1091 *vf.
oldTime().primitiveField()
1092 + offCentre_(ddt0.primitiveField())
1099 ddt0 = rDtCoef0_(ddt0)*
1105 -
alpha.oldTime().oldTime()
1106 *
rho.oldTime().oldTime()
1108 ) - offCentre_(ddt0());
1114 *
alpha.oldTime().primitiveField()
1115 *
rho.oldTime().primitiveField()
1116 *vf.
oldTime().primitiveField()
1117 + offCentre_(ddt0.primitiveField())
1125 template<
class Type>
1133 DDt0Field<VolField<Type>>& ddt0 =
1134 ddt0_<VolField<Type>>
1136 "ddtCorrDdt0(" +
U.name() +
')',
1140 DDt0Field<SurfaceField<Type>>& dUfdt0 =
1141 ddt0_<SurfaceField<Type>>
1143 "ddtCorrDdt0(" + Uf.
name() +
')',
1152 rDtCoef0_(ddt0)*(
U.oldTime() -
U.oldTime().oldTime())
1153 - offCentre_(ddt0());
1160 - offCentre_(dUfdt0());
1165 "ddtCorr(" +
U.name() +
',' + Uf.
name() +
')',
1166 this->fvcDdtPhiCoeff(
U.oldTime(), mesh().Sf() & Uf.
oldTime())
1170 (rDtCoef*Uf.
oldTime() + offCentre_(dUfdt0()))
1178 template<
class Type>
1186 DDt0Field<VolField<Type>>& ddt0 =
1187 ddt0_<VolField<Type>>
1189 "ddtCorrDdt0(" +
U.name() +
')',
1193 DDt0Field<fluxFieldType>& dphidt0 =
1194 ddt0_<fluxFieldType>
1196 "ddtCorrDdt0(" + phi.
name() +
')',
1205 rDtCoef0_(ddt0)*(
U.oldTime() -
U.oldTime().oldTime())
1206 - offCentre_(ddt0());
1213 - offCentre_(dphidt0());
1218 "ddtCorr(" +
U.name() +
',' + phi.
name() +
')',
1219 this->fvcDdtPhiCoeff(
U.oldTime(), phi.
oldTime())
1221 (rDtCoef*phi.
oldTime() + offCentre_(dphidt0()))
1225 rDtCoef*
U.oldTime() + offCentre_(ddt0())
1232 template<
class Type>
1247 DDt0Field<VolField<Type>>& ddt0 =
1248 ddt0_<VolField<Type>>
1250 "ddtCorrDdt0(" +
rho.name() +
',' +
U.name() +
')',
1251 rho.dimensions()*
U.dimensions()
1254 DDt0Field<SurfaceField<Type>>& drhoUfdt0 =
1255 ddt0_<SurfaceField<Type>>
1257 "ddtCorrDdt0(" + rhoUf.
name() +
')',
1265 rho.oldTime()*
U.oldTime()
1272 *(rhoU0 -
rho.oldTime().oldTime()*
U.oldTime().oldTime())
1273 - offCentre_(ddt0());
1279 rDtCoef0_(drhoUfdt0)
1281 - offCentre_(drhoUfdt0());
1286 "ddtCorr(" +
rho.name() +
',' +
U.name() +
',' + rhoUf.
name() +
')',
1287 this->fvcDdtPhiCoeff
1290 mesh().Sf() & rhoUf.
oldTime(),
1296 (rDtCoef*rhoUf.
oldTime() + offCentre_(drhoUfdt0()))
1308 DDt0Field<VolField<Type>>& ddt0 =
1309 ddt0_<VolField<Type>>
1311 "ddtCorrDdt0(" +
U.name() +
')',
1315 DDt0Field<SurfaceField<Type>>& drhoUfdt0 =
1316 ddt0_<SurfaceField<Type>>
1318 "ddtCorrDdt0(" + rhoUf.
name() +
')',
1327 rDtCoef0_(ddt0)*(
U.oldTime() -
U.oldTime().oldTime())
1328 - offCentre_(ddt0());
1334 rDtCoef0_(drhoUfdt0)
1336 - offCentre_(drhoUfdt0());
1341 "ddtCorr(" +
U.name() +
',' + rhoUf.
name() +
')',
1342 this->fvcDdtPhiCoeff
1345 mesh().Sf() & rhoUf.
oldTime(),
1351 (rDtCoef*rhoUf.
oldTime() + offCentre_(drhoUfdt0()))
1354 rDtCoef*
U.oldTime() + offCentre_(ddt0())
1363 <<
"dimensions of rhoUf are not correct"
1366 return fluxFieldType::null();
1371 template<
class Type>
1386 DDt0Field<VolField<Type>>& ddt0 =
1387 ddt0_<VolField<Type>>
1389 "ddtCorrDdt0(" +
rho.name() +
',' +
U.name() +
')',
1390 rho.dimensions()*
U.dimensions()
1393 DDt0Field<fluxFieldType>& dphidt0 =
1394 ddt0_<fluxFieldType>
1396 "ddtCorrDdt0(" + phi.
name() +
')',
1404 rho.oldTime()*
U.oldTime()
1411 *(rhoU0 -
rho.oldTime().oldTime()*
U.oldTime().oldTime())
1412 - offCentre_(ddt0());
1420 - offCentre_(dphidt0());
1425 "ddtCorr(" +
rho.name() +
',' +
U.name() +
',' + phi.
name() +
')',
1426 this->fvcDdtPhiCoeff(rhoU0, phi.
oldTime(),
rho.oldTime())
1428 (rDtCoef*phi.
oldTime() + offCentre_(dphidt0()))
1432 rDtCoef*rhoU0 + offCentre_(ddt0())
1443 DDt0Field<VolField<Type>>& ddt0 =
1444 ddt0_<VolField<Type>>
1446 "ddtCorrDdt0(" +
U.name() +
')',
1450 DDt0Field<fluxFieldType>& dphidt0 =
1451 ddt0_<fluxFieldType>
1453 "ddtCorrDdt0(" + phi.
name() +
')',
1462 rDtCoef0_(ddt0)*(
U.oldTime() -
U.oldTime().oldTime())
1463 - offCentre_(ddt0());
1470 - offCentre_(dphidt0());
1475 "ddtCorr(" +
U.name() +
',' + phi.
name() +
')',
1476 this->fvcDdtPhiCoeff(
U.oldTime(), phi.
oldTime(),
rho.oldTime())
1478 (rDtCoef*phi.
oldTime() + offCentre_(dphidt0()))
1482 rDtCoef*
U.oldTime() + offCentre_(ddt0())
1490 <<
"dimensions of phi are not correct"
1493 return fluxFieldType::null();
1498 template<
class Type>
1504 DDt0Field<surfaceScalarField>& meshPhi0 =
1505 ddt0_<surfaceScalarField>(
"meshPhi0",
dimVolume);
1510 coef0_(meshPhi0)*mesh().phi().oldTime() - offCentre_(meshPhi0());
1515 mesh().phi().
name(),
1516 coef_(meshPhi0)*mesh().phi() - offCentre_(meshPhi0())
1521 template<
class Type>
1528 DDt0Field<surfaceScalarField>& meshPhi0 =
1529 ddt0_<surfaceScalarField>(
"meshPhi0",
dimVolume);
1534 coef0_(meshPhi0)*mesh().phi().oldTime() - offCentre_(meshPhi0());
1539 coef_(meshPhi0)*mesh().phi().boundaryField()[
patchi]
const dimensionSet & dimensions() const
Return dimensions.
static autoPtr< Function1< Type > > New(const word &name, const Function1s::unitConversions &units, const dictionary &dict)
Select from dictionary.
Templated function that returns a constant value.
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,.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
const word & name() const
Return name.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
void putBack(const token &)
Put back token.
const FieldType & oldTime() const
Return the old time field.
label timeIndex() const
Return current time index.
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
const unitConversion & userUnits() const
Return the user-time unit conversion.
virtual dimensionedScalar startTime() const
Return start time.
static word timeName(const scalar, const int precision=curPrecision_)
Return time name of given scalar time.
virtual label startTimeIndex() const
Return start time index.
A list of keyword definitions, which are a keyword followed by any number of values (e....
Dimension set for the base types.
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....
Mesh data needed to do the Finite Volume discretisation.
const Time & time() const
Return the top-level database.
const DimensionedField< scalar, volMesh > & V00() const
Return old-old-time cell volumes.
Second-oder Crank-Nicolson implicit ddt using the current and previous time-step fields as well as th...
virtual tmp< fvMatrix< Type > > fvmDdt(const VolField< Type > &)
const fvMesh & mesh() const
Return mesh reference.
scalar ocCoeff() const
Return the current off-centering coefficient.
virtual tmp< fluxFieldType > fvcDdtPhiCorr(const VolField< Type > &U, const fluxFieldType &phi)
virtual tmp< surfaceScalarField > meshPhi(const VolField< Type > &)
virtual tmp< fluxFieldType > fvcDdtUfCorr(const VolField< Type > &U, const SurfaceField< Type > &Uf)
void operator=(const CrankNicolsonDdtScheme &)=delete
Disallow default bitwise assignment.
virtual tmp< VolField< Type > > fvcDdt(const dimensioned< Type > &)
CrankNicolsonDdtScheme(const fvMesh &mesh)
Construct from mesh.
Abstract base class for ddt schemes.
const Time & time() const
Return time.
bool moving() const
Is mesh moving.
void store()
Transfer ownership of this object to its registry.
A class for managing temporary objects.
T & ref() const
Return non-const reference or generate a fatal error.
A token holds items read from Istream.
Templated form of IOobject providing type information for file reading and header type checking.
A class for handling words, derived from string.
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
#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 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)
const FieldField< fvPatchField, Type > & ff(const FieldField< fvPatchField, Type > &bf)
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.
errorManipArg< error, int > exit(error &err, const int errNo=1)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
word name(const bool)
Return a word representation of a bool.
const dimensionSet dimVolumetricFlux
errorManip< error > abort(error &err)
const dimensionSet dimTime
const dimensionSet dimVolume
word typedName(Name name)
Return the name of the object within the given type.
const dimensionSet dimVelocity
void evaluate(GeometricField< Type, PatchField, GeoMesh > &result, const Function1< Type > &func, const GeometricField< Type, PatchField, GeoMesh > &x)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
const unitConversion unitFraction