31#include "surfaceInterpolate.H"
41inline tmp<Foam::volScalarField>
61template<
class ModelType>
62template<
class GeoField>
70 forAll(phase1_.phi()().boundaryField(), patchi)
74 isA<fixedValueFvsPatchScalarField>
76 phase1_.phi()().boundaryField()[patchi]
80 fieldBf[patchi] = Zero;
86template<
class ModelType>
90 template<
class>
class PatchField,
98 (ModelType::*method)(Args ...)
const,
110 if (model_ || model1In2_)
113 blendedInterfacialModel::interpolate<scalarGeoField>
115 blending_.f1(phase1_, phase2_)
119 if (model_ || model2In1_)
122 blendedInterfacialModel::interpolate<scalarGeoField>
124 blending_.f2(phase1_, phase2_)
134 ModelType::typeName +
":" +
name,
135 phase1_.mesh().time().timeName(),
151 <<
"Cannot treat an interfacial model with no distinction "
152 <<
"between continuous and dispersed phases as signed"
156 x.ref() += (model_().*method)(
args ...)*(scalar(1) - f1() - f2());
161 x.ref() += (model1In2_().*method)(
args ...)*f1;
181 && (model_ || model1In2_ || model2In1_)
184 correctFixedFluxBCs(
x.ref());
193template<
class ModelType>
202 const bool correctFixedFluxBCs
210 phase1.mesh().time().timeName(),
218 model1In2_(model1In2),
219 model2In1_(model2In1),
220 correctFixedFluxBCs_(correctFixedFluxBCs)
224template<
class ModelType>
232 const bool correctFixedFluxBCs
247 correctFixedFluxBCs_(correctFixedFluxBCs)
249 if (modelTable.
found(pair))
261 if (modelTable.
found(pair1In2))
267 modelTable[pair1In2],
273 if (modelTable.
found(pair2In1))
279 modelTable[pair2In1],
289template<
class ModelType>
296template<
class ModelType>
309template<
class ModelType>
315 return &
phase == &(phase1_) ? model1In2_ : model2In1_;
319template<
class ModelType>
325 return evaluate(
k,
"K", ModelType::dimK,
false);
329template<
class ModelType>
335 return evaluate(
k,
"K", ModelType::dimK,
false, residualAlpha);
339template<
class ModelType>
343 return evaluate(&ModelType::Kf,
"Kf", ModelType::dimK,
false);
347template<
class ModelType>
352 return evaluate(&ModelType::F,
"F", ModelType::dimF,
true);
356template<
class ModelType>
360 return evaluate(&ModelType::Ff,
"Ff", ModelType::dimF*
dimArea,
true);
364template<
class ModelType>
368 return evaluate(&ModelType::D,
"D", ModelType::dimD,
false);
372template<
class ModelType>
376 return evaluate(&ModelType::dmdt,
"dmdt", ModelType::dimDmdt,
false);
380template<
class ModelType>
tmp< surfaceScalarField > Kf() const
Return the face blended force coefficient.
tmp< surfaceScalarField > Ff() const
Return the face blended force.
tmp< volScalarField > D() const
Return the blended diffusivity.
bool hasModel(const phaseModel &phase) const
Return true if a model is specified for the supplied phase.
tmp< GeometricField< Type, fvPatchField, volMesh > > F() const
Return the blended force.
tmp< volScalarField > K() const
Return the blended force coefficient.
~BlendedInterfacialModel()
Destructor.
tmp< volScalarField > dmdt() const
Return the blended mass transfer rate.
void evaluate()
Evaluate boundary conditions.
Generic GeometricField class.
GeometricBoundaryField< Type, PatchField, GeoMesh > Boundary
Type of boundary fields.
A HashTable similar to std::unordered_map.
bool found(const Key &key) const
Return true if hashed entry is found in table.
Defines the attributes of an object for which implicit objectRegistry management is supported,...
bool good() const noexcept
True if next operation might succeed.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
void set(T *p) noexcept
Deprecated(2018-02) Identical to reset().
Dimension set for the base types, which can be used to implement rigorous dimension checking for alge...
Generic dimensioned Type class.
Single incompressible phase derived from the phase-fraction. Used as part of the multiPhaseMixture fo...
Description for mass transfer between a pair of phases. The direction of the mass transfer is from th...
Single incompressible phase derived from the phase-fraction. Used as part of the multiPhaseMixture fo...
regIOobject is an abstract class derived from IOobject to handle automatic object registration with t...
bool interpolate() const noexcept
Same as isPointData()
A class for managing temporary objects.
A class for handling words, derived from Foam::string.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
OBJstream os(runTime.globalPath()/outputName)
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.
void subtract(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
const dimensionSet dimArea(sqr(dimLength))
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
errorManipArg< error, int > exit(error &err, const int errNo=1)
Foam::argList args(argc, argv)
#define forAll(list, i)
Loop across all elements in list.