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>&
112 if (!mesh().objectRegistry::template foundObject<GeoField>(
name))
114 const Time& runTime = mesh().
time();
133 new DDt0Field<GeoField>
151 new DDt0Field<GeoField>
156 mesh().time().
name(),
173 DDt0Field<GeoField>& ddt0 =
static_cast<DDt0Field<GeoField>&
>
175 mesh().objectRegistry::template lookupObjectRef<GeoField>(
name)
183 template<
class GeoField>
186 const DDt0Field<GeoField>& ddt0
189 return ddt0.timeIndex() != mesh().time().timeIndex();
193 template<
class GeoField>
194 scalar CrankNicolsonDdtScheme<Type>::coef_
196 const DDt0Field<GeoField>& ddt0
199 if (mesh().time().
timeIndex() > ddt0.startTimeIndex())
201 return 1 + ocCoeff();
211 template<
class GeoField>
212 scalar CrankNicolsonDdtScheme<Type>::coef0_
214 const DDt0Field<GeoField>& ddt0
217 if (mesh().time().
timeIndex() > ddt0.startTimeIndex() + 1)
219 return 1 + ocCoeff();
229 template<
class GeoField>
232 const DDt0Field<GeoField>& ddt0
235 return coef_(ddt0)/mesh().time().deltaT();
240 template<
class GeoField>
243 const DDt0Field<GeoField>& ddt0
246 return coef0_(ddt0)/mesh().time().deltaT0();
251 template<
class GeoField>
252 tmp<GeoField> CrankNicolsonDdtScheme<Type>::offCentre_
259 return ocCoeff()*ddt0;
284 ocCoeff_(new Function1s::Constant<scalar>(
"ocCoeff", 1))
304 token firstToken(is);
309 if (ocCoeff < 0 || ocCoeff > 1)
314 ) <<
"Off-centreing coefficient = " <<
ocCoeff
315 <<
" should be >= 0 and <= 1"
350 DDt0Field<VolField<Type>>& ddt0 =
351 ddt0_<VolField<Type>>
353 "ddt0(" + dt.
name() +
')',
357 const word ddtName(
"ddt(" + dt.
name() +
')');
384 (rDtCoef0*dt)*(mesh().V0() - mesh().V00())
385 - mesh().V00()*offCentre_(ddt0.internalField())
391 (rDtCoef*dt)*(mesh().V() - mesh().V0())
392 - mesh().V0()*offCentre_(ddt0.internalField())
407 DDt0Field<VolField<Type>>& ddt0 =
408 ddt0_<VolField<Type>>
410 "ddt0(" + vf.
name() +
')',
414 const word ddtName(
"ddt(" + vf.
name() +
')');
422 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
424 ddt0.primitiveFieldRef() =
428 mesh().V0()*vf.
oldTime().primitiveField()
429 - mesh().V00()*vf.
oldTime().oldTime().primitiveField()
430 ) - mesh().V00()*offCentre_(ddt0.primitiveField())
433 ddt0.boundaryFieldRef() =
438 - vf.
oldTime().oldTime().boundaryField()
439 ) - offCentre_(
ff(ddt0.boundaryField()))
451 ) - mesh().V0()*offCentre_(ddt0()())
456 ) - offCentre_(
ff(ddt0.boundaryField()))
464 - offCentre_(ddt0());
470 rDtCoef*(vf - vf.
oldTime()) - offCentre_(ddt0())
484 DDt0Field<VolField<Type>>& ddt0 =
485 ddt0_<VolField<Type>>
487 "ddt0(" +
rho.name() +
',' + vf.
name() +
')',
491 const word ddtName(
"ddt(" +
rho.name() +
',' + vf.
name() +
')');
499 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
501 ddt0.primitiveFieldRef() =
503 rDtCoef0*
rho.value()*
505 mesh().V0()*vf.
oldTime().primitiveField()
506 - mesh().V00()*vf.
oldTime().oldTime().primitiveField()
507 ) - mesh().V00()*offCentre_(ddt0.primitiveField())
510 ddt0.boundaryFieldRef() =
512 rDtCoef0*
rho.value()*
515 - vf.
oldTime().oldTime().boundaryField()
516 ) - offCentre_(
ff(ddt0.boundaryField()))
528 ) - mesh().V0()*offCentre_(ddt0())()
533 ) - offCentre_(
ff(ddt0.boundaryField()))
541 - offCentre_(ddt0());
547 rDtCoef*
rho*(vf - vf.
oldTime()) - offCentre_(ddt0())
561 DDt0Field<VolField<Type>>& ddt0 =
562 ddt0_<VolField<Type>>
564 "ddt0(" +
rho.name() +
',' + vf.
name() +
')',
568 const word ddtName(
"ddt(" +
rho.name() +
',' + vf.
name() +
')');
576 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
578 ddt0.primitiveFieldRef() =
582 mesh().V0()*
rho.oldTime().primitiveField()
584 - mesh().V00()*
rho.oldTime().oldTime().primitiveField()
585 *vf.
oldTime().oldTime().primitiveField()
586 ) - mesh().V00()*offCentre_(ddt0.primitiveField())
589 ddt0.boundaryFieldRef() =
593 rho.oldTime().boundaryField()
595 -
rho.oldTime().oldTime().boundaryField()
596 *vf.
oldTime().oldTime().boundaryField()
597 ) - offCentre_(
ff(ddt0.boundaryField()))
607 mesh().V()*
rho()*vf()
608 - mesh().V0()*
rho.oldTime()()
610 ) - mesh().V00()*offCentre_(ddt0())()
615 -
rho.oldTime().boundaryField()*vf.
oldTime().boundaryField()
616 ) - offCentre_(
ff(ddt0.boundaryField()))
623 ddt0 = rDtCoef0_(ddt0)*
626 -
rho.oldTime().oldTime()*vf.
oldTime().oldTime()
627 ) - offCentre_(ddt0());
633 rDtCoef*(
rho*vf -
rho.oldTime()*vf.
oldTime()) - offCentre_(ddt0())
648 DDt0Field<VolField<Type>>& ddt0 =
649 ddt0_<VolField<Type>>
651 "ddt0(" +
alpha.name() +
',' +
rho.name() +
',' + vf.
name() +
')',
657 "ddt(" +
alpha.name() +
',' +
rho.name() +
',' + vf.
name() +
')'
666 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
668 ddt0.primitiveFieldRef() =
673 *
alpha.oldTime().primitiveField()
674 *
rho.oldTime().primitiveField()
678 *
alpha.oldTime().oldTime().primitiveField()
679 *
rho.oldTime().oldTime().primitiveField()
680 *vf.
oldTime().oldTime().primitiveField()
681 ) - mesh().V00()*offCentre_(ddt0.primitiveField())
684 ddt0.boundaryFieldRef() =
688 alpha.oldTime().boundaryField()
689 *
rho.oldTime().boundaryField()
692 -
alpha.oldTime().oldTime().boundaryField()
693 *
rho.oldTime().oldTime().boundaryField()
694 *vf.
oldTime().oldTime().boundaryField()
695 ) - offCentre_(
ff(ddt0.boundaryField()))
707 ) - mesh().V00()*offCentre_(ddt0())()
711 alpha.boundaryField()
715 -
alpha.oldTime().boundaryField()
716 *
rho.oldTime().boundaryField()
718 ) - offCentre_(
ff(ddt0.boundaryField()))
725 ddt0 = rDtCoef0_(ddt0)*
731 -
alpha.oldTime().oldTime()
732 *
rho.oldTime().oldTime()
734 ) - offCentre_(ddt0());
758 DDt0Field<VolField<Type>>& ddt0 =
759 ddt0_<VolField<Type>>
761 "ddt0(" + vf.
name() +
')',
776 const scalar rDtCoef = rDtCoef_(ddt0).value();
777 fvm.
diag() = rDtCoef*mesh().V();
785 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
787 ddt0.primitiveFieldRef() =
791 mesh().V0()*vf.
oldTime().primitiveField()
792 - mesh().V00()*vf.
oldTime().oldTime().primitiveField()
794 - mesh().V00()*offCentre_(ddt0.primitiveField())
797 ddt0.boundaryFieldRef() =
802 - vf.
oldTime().oldTime().boundaryField()
804 - offCentre_(
ff(ddt0.boundaryField()))
810 rDtCoef*vf.
oldTime().primitiveField()
811 + offCentre_(ddt0.primitiveField())
819 - offCentre_(ddt0());
824 rDtCoef*vf.
oldTime().primitiveField()
825 + offCentre_(ddt0.primitiveField())
841 DDt0Field<VolField<Type>>& ddt0 =
842 ddt0_<VolField<Type>>
844 "ddt0(" +
rho.name() +
',' + vf.
name() +
')',
858 const scalar rDtCoef = rDtCoef_(ddt0).value();
859 fvm.
diag() = rDtCoef*
rho.value()*mesh().V();
867 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
869 ddt0.primitiveFieldRef() =
871 rDtCoef0*
rho.value()*
873 mesh().V0()*vf.
oldTime().primitiveField()
874 - mesh().V00()*vf.
oldTime().oldTime().primitiveField()
876 - mesh().V00()*offCentre_(ddt0.primitiveField())
879 ddt0.boundaryFieldRef() =
881 rDtCoef0*
rho.value()*
884 - vf.
oldTime().oldTime().boundaryField()
886 - offCentre_(
ff(ddt0.boundaryField()))
892 rDtCoef*
rho.value()*vf.
oldTime().primitiveField()
893 + offCentre_(ddt0.primitiveField())
901 - offCentre_(ddt0());
906 rDtCoef*
rho.value()*vf.
oldTime().primitiveField()
907 + offCentre_(ddt0.primitiveField())
923 DDt0Field<VolField<Type>>& ddt0 =
924 ddt0_<VolField<Type>>
926 "ddt0(" +
rho.name() +
',' + vf.
name() +
')',
940 const scalar rDtCoef = rDtCoef_(ddt0).value();
941 fvm.
diag() = rDtCoef*
rho.primitiveField()*mesh().V();
944 rho.oldTime().oldTime();
950 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
952 ddt0.primitiveFieldRef() =
956 mesh().V0()*
rho.oldTime().primitiveField()
958 - mesh().V00()*
rho.oldTime().oldTime().primitiveField()
959 *vf.
oldTime().oldTime().primitiveField()
961 - mesh().V00()*offCentre_(ddt0.primitiveField())
964 ddt0.boundaryFieldRef() =
968 rho.oldTime().boundaryField()
970 -
rho.oldTime().oldTime().boundaryField()
971 *vf.
oldTime().oldTime().boundaryField()
973 - offCentre_(
ff(ddt0.boundaryField()))
979 rDtCoef*
rho.oldTime().primitiveField()*vf.
oldTime().primitiveField()
980 + offCentre_(ddt0.primitiveField())
987 ddt0 = rDtCoef0_(ddt0)*
990 -
rho.oldTime().oldTime()*vf.
oldTime().oldTime()
991 ) - offCentre_(ddt0());
996 rDtCoef*
rho.oldTime().primitiveField()*vf.
oldTime().primitiveField()
997 + offCentre_(ddt0.primitiveField())
1005 template<
class Type>
1014 DDt0Field<VolField<Type>>& ddt0 =
1015 ddt0_<VolField<Type>>
1017 "ddt0(" +
alpha.name() +
',' +
rho.name() +
',' + vf.
name() +
')',
1031 const scalar rDtCoef = rDtCoef_(ddt0).value();
1032 fvm.
diag() = rDtCoef*
alpha.primitiveField()*
rho.primitiveField()*mesh().V();
1035 alpha.oldTime().oldTime();
1036 rho.oldTime().oldTime();
1038 if (mesh().moving())
1042 const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
1044 ddt0.primitiveFieldRef() =
1049 *
alpha.oldTime().primitiveField()
1050 *
rho.oldTime().primitiveField()
1051 *vf.
oldTime().primitiveField()
1054 *
alpha.oldTime().oldTime().primitiveField()
1055 *
rho.oldTime().oldTime().primitiveField()
1056 *vf.
oldTime().oldTime().primitiveField()
1058 - mesh().V00()*offCentre_(ddt0.primitiveField())
1061 ddt0.boundaryFieldRef() =
1065 alpha.oldTime().boundaryField()
1066 *
rho.oldTime().boundaryField()
1069 -
alpha.oldTime().oldTime().boundaryField()
1070 *
rho.oldTime().oldTime().boundaryField()
1071 *vf.
oldTime().oldTime().boundaryField()
1073 - offCentre_(
ff(ddt0.boundaryField()))
1080 *
alpha.oldTime().primitiveField()
1081 *
rho.oldTime().primitiveField()
1082 *vf.
oldTime().primitiveField()
1083 + offCentre_(ddt0.primitiveField())
1090 ddt0 = rDtCoef0_(ddt0)*
1096 -
alpha.oldTime().oldTime()
1097 *
rho.oldTime().oldTime()
1099 ) - offCentre_(ddt0());
1105 *
alpha.oldTime().primitiveField()
1106 *
rho.oldTime().primitiveField()
1107 *vf.
oldTime().primitiveField()
1108 + offCentre_(ddt0.primitiveField())
1116 template<
class Type>
1124 DDt0Field<VolField<Type>>& ddt0 =
1125 ddt0_<VolField<Type>>
1127 "ddtCorrDdt0(" +
U.name() +
')',
1131 DDt0Field<SurfaceField<Type>>& dUfdt0 =
1132 ddt0_<SurfaceField<Type>>
1134 "ddtCorrDdt0(" + Uf.
name() +
')',
1143 rDtCoef0_(ddt0)*(
U.oldTime() -
U.oldTime().oldTime())
1144 - offCentre_(ddt0());
1151 - offCentre_(dUfdt0());
1156 "ddtCorr(" +
U.name() +
',' + Uf.
name() +
')',
1157 this->fvcDdtPhiCoeff(
U.oldTime(), mesh().Sf() & Uf.
oldTime())
1161 (rDtCoef*Uf.
oldTime() + offCentre_(dUfdt0()))
1169 template<
class Type>
1177 DDt0Field<VolField<Type>>& ddt0 =
1178 ddt0_<VolField<Type>>
1180 "ddtCorrDdt0(" +
U.name() +
')',
1184 DDt0Field<fluxFieldType>& dphidt0 =
1185 ddt0_<fluxFieldType>
1187 "ddtCorrDdt0(" + phi.
name() +
')',
1196 rDtCoef0_(ddt0)*(
U.oldTime() -
U.oldTime().oldTime())
1197 - offCentre_(ddt0());
1204 - offCentre_(dphidt0());
1209 "ddtCorr(" +
U.name() +
',' + phi.
name() +
')',
1210 this->fvcDdtPhiCoeff(
U.oldTime(), phi.
oldTime())
1212 (rDtCoef*phi.
oldTime() + offCentre_(dphidt0()))
1216 rDtCoef*
U.oldTime() + offCentre_(ddt0())
1223 template<
class Type>
1238 DDt0Field<VolField<Type>>& ddt0 =
1239 ddt0_<VolField<Type>>
1241 "ddtCorrDdt0(" +
rho.name() +
',' +
U.name() +
')',
1242 rho.dimensions()*
U.dimensions()
1245 DDt0Field<SurfaceField<Type>>& drhoUfdt0 =
1246 ddt0_<SurfaceField<Type>>
1248 "ddtCorrDdt0(" + rhoUf.
name() +
')',
1256 rho.oldTime()*
U.oldTime()
1263 *(rhoU0 -
rho.oldTime().oldTime()*
U.oldTime().oldTime())
1264 - offCentre_(ddt0());
1270 rDtCoef0_(drhoUfdt0)
1272 - offCentre_(drhoUfdt0());
1277 "ddtCorr(" +
rho.name() +
',' +
U.name() +
',' + rhoUf.
name() +
')',
1278 this->fvcDdtPhiCoeff
1281 mesh().Sf() & rhoUf.
oldTime(),
1287 (rDtCoef*rhoUf.
oldTime() + offCentre_(drhoUfdt0()))
1299 DDt0Field<VolField<Type>>& ddt0 =
1300 ddt0_<VolField<Type>>
1302 "ddtCorrDdt0(" +
U.name() +
')',
1306 DDt0Field<SurfaceField<Type>>& drhoUfdt0 =
1307 ddt0_<SurfaceField<Type>>
1309 "ddtCorrDdt0(" + rhoUf.
name() +
')',
1318 rDtCoef0_(ddt0)*(
U.oldTime() -
U.oldTime().oldTime())
1319 - offCentre_(ddt0());
1325 rDtCoef0_(drhoUfdt0)
1327 - offCentre_(drhoUfdt0());
1332 "ddtCorr(" +
U.name() +
',' + rhoUf.
name() +
')',
1333 this->fvcDdtPhiCoeff
1336 mesh().Sf() & rhoUf.
oldTime(),
1342 (rDtCoef*rhoUf.
oldTime() + offCentre_(drhoUfdt0()))
1345 rDtCoef*
U.oldTime() + offCentre_(ddt0())
1354 <<
"dimensions of rhoUf are not correct"
1357 return fluxFieldType::null();
1362 template<
class Type>
1377 DDt0Field<VolField<Type>>& ddt0 =
1378 ddt0_<VolField<Type>>
1380 "ddtCorrDdt0(" +
rho.name() +
',' +
U.name() +
')',
1381 rho.dimensions()*
U.dimensions()
1384 DDt0Field<fluxFieldType>& dphidt0 =
1385 ddt0_<fluxFieldType>
1387 "ddtCorrDdt0(" + phi.
name() +
')',
1395 rho.oldTime()*
U.oldTime()
1402 *(rhoU0 -
rho.oldTime().oldTime()*
U.oldTime().oldTime())
1403 - offCentre_(ddt0());
1411 - offCentre_(dphidt0());
1416 "ddtCorr(" +
rho.name() +
',' +
U.name() +
',' + phi.
name() +
')',
1417 this->fvcDdtPhiCoeff(rhoU0, phi.
oldTime(),
rho.oldTime())
1419 (rDtCoef*phi.
oldTime() + offCentre_(dphidt0()))
1423 rDtCoef*rhoU0 + offCentre_(ddt0())
1434 DDt0Field<VolField<Type>>& ddt0 =
1435 ddt0_<VolField<Type>>
1437 "ddtCorrDdt0(" +
U.name() +
')',
1441 DDt0Field<fluxFieldType>& dphidt0 =
1442 ddt0_<fluxFieldType>
1444 "ddtCorrDdt0(" + phi.
name() +
')',
1453 rDtCoef0_(ddt0)*(
U.oldTime() -
U.oldTime().oldTime())
1454 - offCentre_(ddt0());
1461 - offCentre_(dphidt0());
1466 "ddtCorr(" +
U.name() +
',' + phi.
name() +
')',
1467 this->fvcDdtPhiCoeff(
U.oldTime(), phi.
oldTime(),
rho.oldTime())
1469 (rDtCoef*phi.
oldTime() + offCentre_(dphidt0()))
1473 rDtCoef*
U.oldTime() + offCentre_(ddt0())
1481 <<
"dimensions of phi are not correct"
1484 return fluxFieldType::null();
1489 template<
class Type>
1495 DDt0Field<surfaceScalarField>& meshPhi0 = ddt0_<surfaceScalarField>
1504 coef0_(meshPhi0)*mesh().phi().oldTime() - offCentre_(meshPhi0());
1509 mesh().phi().
name(),
1510 coef_(meshPhi0)*mesh().phi() - offCentre_(meshPhi0())
1515 template<
class Type>
1522 DDt0Field<surfaceScalarField>& meshPhi0 = ddt0_<surfaceScalarField>
1531 coef0_(meshPhi0)*mesh().phi().oldTime() - offCentre_(meshPhi0());
1536 coef_(meshPhi0)*mesh().phi().boundaryField()[
patchi]
const dimensionSet & dimensions() const
Return dimensions.
static autoPtr< Function1< Type > > New(const word &name, const dictionary &dict)
Selector.
Templated function that returns a constant value.
Generic GeometricField class.
const GeometricField< Type, PatchField, GeoMesh > & oldTime() const
Return old time field.
static tmp< GeometricField< Type, PatchField, GeoMesh > > New(const word &name, const Internal &, const PtrList< PatchField< Type >> &)
Return a temporary field constructed from name,.
const Boundary & boundaryField() const
Return const-reference to the boundary field.
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.
label timeIndex() const
Return current time index.
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
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 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)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
errorManip< error > abort(error &err)
const dimensionSet dimTime
const dimensionSet dimVol
const dimensionSet dimVolume
const dimensionSet dimVelocity
void evaluate(GeometricField< Type, PatchField, GeoMesh > &result, const Function1< Type > &func, const GeometricField< Type, PatchField, GeoMesh > &x)
word name(const complex &)
Return a string representation of a complex.
const dimensionSet dimFlux