28 #include "surfaceInterpolate.H"
40 namespace blendedInterfacialModel
43 template<
class GeoField>
58 template<
class ModelType>
77 template<
class ModelType>
85 const phaseModel& phase1 = interface_.phase1();
86 const phaseModel& phase2 = interface_.phase2();
88 const bool can1In2 = blending_->canBeContinuous(1);
89 const bool can2In1 = blending_->canBeContinuous(0);
90 const bool canS = blending_->canSegregate();
98 model1DispersedIn2_.valid()
105 << dispersedPhaseInterface(phase1, phase2).name()
106 <<
" but the associated blending does not permit " << phase2.name()
107 <<
" to be continuous so this model will not be used" <<
endl;
114 model2DispersedIn1_.valid()
121 << dispersedPhaseInterface(phase2, phase1).name()
122 <<
" but the associated blending does not permit " << phase1.name()
123 <<
" to be continuous so this model will not be used" <<
endl;
130 model1SegregatedWith2_.valid()
137 << segregatedPhaseInterface(phase1, phase2).name()
138 <<
" but the associated blending does not permit segregation"
139 <<
" so this model will not be used" <<
endl;
144 modelGeneral_.valid()
145 && (can1In2 || can2In1 || canS)
146 && (!can1In2 || model1DispersedIn2_.valid())
147 && (!can2In1 || model2DispersedIn1_.valid())
148 && (!canS || model1SegregatedWith2_.valid())
154 <<
" but other displaced and/or segregated models apply"
155 <<
" across the entire phase fraction space so this model"
156 <<
" will not be used" <<
endl;
159 forAll(interface_.fluid().phases(), phasei)
165 modelsGeneralDisplaced_.set(phasei)
166 && (can1In2 || can2In1 || canS)
167 && (!can1In2 || models1DispersedIn2Displaced_.set(phasei))
168 && (!can2In1 || models2DispersedIn1Displaced_.set(phasei))
169 && (!canS || models1SegregatedWith2Displaced_.set(phasei))
175 <<
" but other displaced and/or segregated models apply"
176 <<
" across the entire phase fraction space so this model"
177 <<
" will not be used" <<
endl;
183 if (can1In2 && !modelGeneral_.valid() && !model1DispersedIn2_.valid())
187 << phase2.name() <<
" to become continuous, but no model was "
188 <<
"provided for " << dispersedPhaseInterface(phase1, phase2).name()
189 <<
". Consider adding a model for this configuration (or for "
190 << phaseInterface(phase1, phase2).name() <<
"), or if no model is "
191 <<
"needed then add a \"none\" model to suppress this warning."
195 if (can2In1 && !modelGeneral_.valid() && !model2DispersedIn1_.valid())
199 << phase1.name() <<
" to become continuous, but no model was "
201 <<
". Consider adding a model for this configuration (or for "
203 <<
"needed then add a \"none\" model to suppress this warning."
207 if (canS && !modelGeneral_.valid() && !model1SegregatedWith2_.valid())
211 <<
"segregation but no model was provided for "
213 <<
". Consider adding a model for this configuration (or for "
215 <<
"needed then add a \"none\" model to suppress this warning."
221 template<
class ModelType>
222 template<
class GeoMesh>
239 auto constant = [&](
const scalar
k)
245 alphas.
first().mesh(),
251 tmp<scalarGeoField> F1D2, F2D1;
254 model1DispersedIn2_.valid()
255 || model1SegregatedWith2_.valid()
261 blendedInterfacialModel::interpolate<scalarGeoField>
263 blending_->f1DispersedIn2(alphas)
268 model2DispersedIn1_.valid()
269 || model1SegregatedWith2_.valid()
275 blendedInterfacialModel::interpolate<scalarGeoField>
277 blending_->f2DispersedIn1(alphas)
283 if (model1DispersedIn2_.valid())
285 f1D2 = F1D2().clone();
288 if (model2DispersedIn1_.valid())
290 f2D1 = F2D1().clone();
293 if (model1SegregatedWith2_.valid())
296 if (f1D2.valid()) { fS.ref() -= f1D2(); }
297 if (f2D1.valid()) { fS.ref() -= f2D1(); }
300 if (modelGeneral_.valid())
303 if (f1D2.valid()) { fG.ref() -= f1D2(); }
304 if (f2D1.valid()) { fG.ref() -= f2D1(); }
305 if (fS.valid()) { fG.ref() -= fS(); }
310 tmp<scalarGeoField> FD;
320 blendedInterfacialModel::interpolate<scalarGeoField>
322 blending_->fDisplaced(alphas)
327 tmp<scalarGeoField> fDSum;
340 const phaseModel& phaseD = interface_.fluid().phases()[phasei];
342 if (interface_.contains(phaseD))
continue;
350 tmp<scalarGeoField>
alpha;
353 models1DispersedIn2Displaced_.set(phasei)
354 || models2DispersedIn1Displaced_.set(phasei)
355 || models1SegregatedWith2Displaced_.set(phasei)
356 || modelsGeneralDisplaced_.set(phasei)
360 blendedInterfacialModel::interpolate<scalarGeoField>
366 - alphas[interface_.phase1().index()]
367 - alphas[interface_.phase2().index()],
368 phaseD.residualAlpha()
373 if (models1DispersedIn2Displaced_.set(phasei))
375 f1D2D.set(phasei,
alpha()*FD()*F1D2());
376 fDSum.ref() += f1D2D[phasei];
379 if (models2DispersedIn1Displaced_.set(phasei))
381 f2D1D.set(phasei,
alpha()*FD()*F2D1());
382 fDSum.ref() += f2D1D[phasei];
385 if (models1SegregatedWith2Displaced_.set(phasei))
387 fSD.set(phasei,
alpha()*FD());
388 if (f1D2D.set(phasei)) fSD[phasei] -= f1D2D[phasei];
389 if (f2D1D.set(phasei)) fSD[phasei] -= f2D1D[phasei];
390 fDSum.ref() += fSD[phasei];
393 if (modelsGeneralDisplaced_.set(phasei))
395 fGD.set(phasei,
alpha()*FD());
396 if (f1D2D.set(phasei)) fGD[phasei] -= f1D2D[phasei];
397 if (f2D1D.set(phasei)) fGD[phasei] -= f2D1D[phasei];
398 if (fSD.set(phasei)) fGD[phasei] -= fSD[phasei];
399 fDSum.ref() += fGD[phasei];
407 if (f1D2.valid()) f1D2.ref() *= 1 - fDSum();
408 if (f2D1.valid()) f2D1.ref() *= 1 - fDSum();
409 if (fS.valid()) fS.ref() *= 1 - fDSum();
410 if (fG.valid()) fG.ref() *= 1 - fDSum();
415 template<
class ModelType>
421 using namespace constant::mathematical;
423 const phaseSystem& fluid = interface_.fluid();
424 const label nPhases = fluid.phases().size();
430 PtrList<scalarField>
fields(nPhases);
434 fieldNames[0] = fluid.phases()[0].volScalarField::name();
437 else if (nPhases == 2)
440 static const label nDivisions = 128;
441 fieldNames[0] = fluid.phases()[0].volScalarField::name();
442 fieldNames[1] = fluid.phases()[1].volScalarField::name();
459 forAll(phaseNodes, phasei)
461 const scalar theta = 2*
pi*phasei/nPhases;
462 phaseNodes[phasei] =
point(
cos(theta),
sin(theta), 0);
466 static const label nDivisions = 32;
467 points.append(point::zero);
468 for (
label divi = 0; divi < nDivisions; ++ divi)
470 const scalar
s = scalar(divi + 1)/nDivisions;
472 forAll(phaseNodes, phasei)
474 for (
label i = 0; i < divi + 1; ++ i)
476 const scalar t = scalar(i)/(divi + 1);
480 s*(1 - t)*phaseNodes[phasei]
481 +
s*t*phaseNodes[(phasei + 1) % nPhases]
488 forAll(phaseNodes, phasei)
490 faces.append(
triFace(0, phasei + 1, (phasei + 1) % nPhases + 1));
492 for (
label divi = 1; divi < nDivisions; ++ divi)
494 const label pointi0 = nPhases*(divi - 1)*divi/2 + 1;
495 const label pointi1 = nPhases*divi*(divi + 1)/2 + 1;
497 forAll(phaseNodes, phasei)
499 for (
label i = 0; i < divi + 1; ++ i)
503 + ((phasei*divi + i) % (nPhases*divi));
506 + ((phasei*divi + i + 1) % (nPhases*divi));
509 + ((phasei*(divi + 1) + i) % (nPhases*(divi + 1)));
512 + ((phasei*(divi + 1) + i + 1) % (nPhases*(divi + 1)));
514 faces.append(
triFace({pi00, pi10, pi11}));
515 if (i < divi) faces.append(
triFace({pi00, pi11, pi01}));
521 forAll(fluid.phases(), phasei)
523 fieldNames[phasei] = fluid.phases()[phasei].volScalarField::name();
526 const label phasei0 = (phasei + nPhases - 1) % nPhases;
527 const label phasei1 = (phasei + 1) % nPhases;
529 const point& node0 = phaseNodes[phasei0];
530 const point& node = phaseNodes[phasei];
531 const point& node1 = phaseNodes[phasei1];
535 const scalar
A =
mag((node - node0) ^ (node1 - node0));
536 const scalar A0 =
mag((node - node0) ^ (
points[i] - node0));
537 const scalar A1 =
mag((node1 - node) ^ (
points[i] - node));
544 else if (A1 < rootSmall)
558 forAll(fluid.phases(), phasei)
562 forAll(fluid.phases(), phasei)
573 PtrList<volScalarField> alphas(nPhases);
574 forAll(fluid.phases(), phasei)
583 fluid.phases()[phasei].volScalarField::name(),
595 tmp<volScalarField> fG, f1D2, f2D1, fS;
596 PtrList<volScalarField> fGD(nPhases);
597 PtrList<volScalarField> f1D2D(nPhases);
598 PtrList<volScalarField> f2D1D(nPhases);
599 PtrList<volScalarField> fSD(nPhases);
600 calculateBlendingCoeffs
604 fGD, f1D2D, f2D1D, fSD
607 const phaseModel& phase1 = interface_.phase1();
608 const phaseModel& phase2 = interface_.phase2();
610 auto addField = [&](
const phaseInterface& interface)
618 addField(phaseInterface(phase1, phase2));
622 addField(dispersedPhaseInterface(phase1, phase2));
626 addField(dispersedPhaseInterface(phase2, phase1));
630 addField(segregatedPhaseInterface(phase2, phase1));
633 forAll(fluid.phases(), phasei)
635 const phaseModel& phaseD = fluid.phases()[phasei];
639 addField(displacedPhaseInterface(phase1, phase2, phaseD));
641 if (f1D2D.set(phasei))
645 dispersedDisplacedPhaseInterface
653 if (f2D1D.set(phasei))
657 dispersedDisplacedPhaseInterface
669 segregatedDisplacedPhaseInterface
683 forAll(fluid.phases(), phasei)
685 alphas[phasei] =
fields[phasei][i];
688 tmp<volScalarField> fG, f1D2, f2D1, fS;
689 PtrList<volScalarField> fGD(nPhases);
690 PtrList<volScalarField> f1D2D(nPhases);
691 PtrList<volScalarField> f2D1D(nPhases);
692 PtrList<volScalarField> fSD(nPhases);
693 calculateBlendingCoeffs
697 fGD, f1D2D, f2D1D, fSD
700 label fieldi = nPhases;
704 fields[fieldi ++][i] = fG()[0];
708 fields[fieldi ++][i] = f1D2()[0];
712 fields[fieldi ++][i] = f2D1()[0];
716 fields[fieldi ++][i] = fS()[0];
719 forAll(fluid.phases(), phasei)
723 fields[fieldi ++][i] = fGD[phasei][0];
725 if (f1D2D.set(phasei))
727 fields[fieldi ++][i] = f1D2D[phasei][0];
729 if (f2D1D.set(phasei))
731 fields[fieldi ++][i] = f2D1D[phasei][0];
735 fields[fieldi ++][i] = fSD[phasei][0];
742 const fileName path =
743 fluid.mesh().time().globalPath()
744 /functionObjects::writeFile::outputPrefix
746 Info<<
"Writing blending coefficients to " << path/interface_.name()
751 const autoPtr<scalarField> field0 =
fields.set(0,
nullptr);
753 for (
label fieldi = 1; fieldi <
fields.size(); ++ fieldi)
755 fields.set(fieldi - 1,
fields.set(fieldi,
nullptr).ptr());
765 IOstream::UNCOMPRESSED
770 coordSet(
true, field0Name, field0),
781 IOstream::UNCOMPRESSED
798 template<
class ModelType>
799 template<
class Type,
class GeoMesh,
class ... Args>
815 const label nPhases = interface_.fluid().phases().size();
821 calculateBlendingCoeffs
823 interface_.fluid().phases()
824 .PtrList<
phaseModel>::convert<const volScalarField>(),
826 fGD, f1D2D, f2D1D, fSD
834 + IOobject::groupName(
name, interface_.name()),
840 if (modelGeneral_.valid())
842 x.ref() += fG*(modelGeneral_().*method)(
args ...);
844 if (model1DispersedIn2_.valid())
846 x.ref() += f1D2*(model1DispersedIn2_().*method)(
args ...);
848 if (model2DispersedIn1_.valid())
850 x.ref() += f2D1*(model2DispersedIn1_().*method)(
args ...);
852 if (model1SegregatedWith2_.valid())
854 x.ref() += fS*(model1SegregatedWith2_().*method)(
args ...);
856 forAll(interface_.fluid().phases(), phasei)
858 if (modelsGeneralDisplaced_.set(phasei))
862 *(modelsGeneralDisplaced_[phasei].*method)(
args ...);
864 if (models1DispersedIn2Displaced_.set(phasei))
868 *(models1DispersedIn2Displaced_[phasei].*method)(
args ...);
870 if (models2DispersedIn1Displaced_.set(phasei))
874 *(models2DispersedIn1Displaced_[phasei].*method)(
args ...);
876 if (models1SegregatedWith2Displaced_.set(phasei))
880 *(models1SegregatedWith2Displaced_[phasei].*method)(
args ...);
888 template<
class ModelType>
889 template<
class Type,
class GeoMesh,
class ... Args>
894 (ModelType::*method)(Args ...)
const,
906 const label nPhases = interface_.fluid().phases().size();
912 calculateBlendingCoeffs
914 interface_.fluid().phases()
915 .PtrList<
phaseModel>::convert<const volScalarField>(),
917 fGD, f1D2D, f2D1D, fSD
926 const scalarGeoField&
f,
932 if (xs.
found(dxIter.key()))
934 *xs[dxIter.key()] +=
f**dxIter();
944 + IOobject::groupName
946 IOobject::groupName(
name, dxIter.key()),
955 if (modelGeneral_.valid())
957 addToXs(fG, (modelGeneral_().*method)(
args ...));
959 if (model1DispersedIn2_.valid())
961 addToXs(f1D2, (model1DispersedIn2_().*method)(
args ...));
963 if (model2DispersedIn1_.valid())
965 addToXs(f2D1, (model2DispersedIn1_().*method)(
args ...));
967 if (model1SegregatedWith2_.valid())
969 addToXs(fS, (model1SegregatedWith2_().*method)(
args ...));
971 forAll(interface_.fluid().phases(), phasei)
973 if (modelsGeneralDisplaced_.set(phasei))
978 (modelsGeneralDisplaced_[phasei].*method)(
args ...)
981 if (models1DispersedIn2Displaced_.set(phasei))
986 (models1DispersedIn2Displaced_[phasei].*method)(
args ...)
989 if (models2DispersedIn1Displaced_.set(phasei))
994 (models2DispersedIn1Displaced_[phasei].*method)(
args ...)
997 if (models1SegregatedWith2Displaced_.set(phasei))
1002 (models1SegregatedWith2Displaced_[phasei].*method)(
args ...)
1011 template<
class ModelType>
1012 template<
class ... Args>
1015 bool (ModelType::*method)(Args ...)
const,
1021 bool result =
false;
1023 if (modelGeneral_.valid())
1025 result = result || (modelGeneral_().*method)(
args ...);
1027 if (model1DispersedIn2_.valid())
1029 result = result || (model1DispersedIn2_().*method)(
args ...);
1031 if (model2DispersedIn1_.valid())
1033 result = result || (model2DispersedIn1_().*method)(
args ...);
1035 if (model1SegregatedWith2_.valid())
1037 result = result || (model1SegregatedWith2_().*method)(
args ...);
1040 forAll(interface_.fluid().phases(), phasei)
1042 if (modelsGeneralDisplaced_.set(phasei))
1046 || (modelsGeneralDisplaced_[phasei].*method)(
args ...);
1048 if (models1DispersedIn2Displaced_.set(phasei))
1052 || (models1DispersedIn2Displaced_[phasei].*method)(
args ...);
1054 if (models2DispersedIn1Displaced_.set(phasei))
1058 || (models2DispersedIn1Displaced_[phasei].*method)(
args ...);
1060 if (models1SegregatedWith2Displaced_.set(phasei))
1064 || (models1SegregatedWith2Displaced_[phasei].*method)(
args ...);
1072 template<
class ModelType>
1073 template<
class ... Args>
1084 if (modelGeneral_.valid())
1086 result.
append((modelGeneral_().*method)(
args ...));
1088 if (model1DispersedIn2_.valid())
1090 result.
append((model1DispersedIn2_().*method)(
args ...));
1092 if (model2DispersedIn1_.valid())
1094 result.
append((model2DispersedIn1_().*method)(
args ...));
1096 if (model1SegregatedWith2_.valid())
1098 result.
append((model1SegregatedWith2_().*method)(
args ...));
1101 forAll(interface_.fluid().phases(), phasei)
1103 if (modelsGeneralDisplaced_.set(phasei))
1107 (modelsGeneralDisplaced_[phasei].*method)(
args ...)
1110 if (models1DispersedIn2Displaced_.set(phasei))
1114 (models1DispersedIn2Displaced_[phasei].*method)(
args ...)
1117 if (models2DispersedIn1Displaced_.set(phasei))
1121 (models2DispersedIn1Displaced_[phasei].*method)(
args ...)
1124 if (models1SegregatedWith2Displaced_.set(phasei))
1128 (models1SegregatedWith2Displaced_[phasei].*method)(
args ...)
1139 template<
class ModelType>
1140 template<
class ... Args>
1146 const Args& ...
args
1155 interface.fluid().
mesh()
1158 interface_(interface),
1164 model1DispersedIn2_(),
1165 model2DispersedIn1_(),
1166 model1SegregatedWith2_(),
1167 modelsGeneralDisplaced_(interface.fluid().phases().size()),
1168 models1DispersedIn2Displaced_(interface.fluid().phases().size()),
1169 models2DispersedIn1Displaced_(interface.fluid().phases().size()),
1170 models1SegregatedWith2Displaced_(interface.fluid().phases().size()),
1205 if (isA<dispersedPhaseInterface>(
interface))
1208 refCast<const dispersedPhaseInterface>(
interface).dispersed();
1211 interface_.
index(dispersed) == 0
1212 ? &model1DispersedIn2_
1213 : &model2DispersedIn1_;
1215 interface_.
index(dispersed) == 0
1216 ? &models1DispersedIn2Displaced_
1217 : &models2DispersedIn1Displaced_;
1219 else if (isA<segregatedPhaseInterface>(
interface))
1221 modelPtrPtr = &model1SegregatedWith2_;
1222 modelPtrsPtr = &models1SegregatedWith2Displaced_;
1226 modelPtrPtr = &modelGeneral_;
1227 modelPtrsPtr = &modelsGeneralDisplaced_;
1230 if (!isA<displacedPhaseInterface>(
interface))
1232 *modelPtrPtr = models.
set(i,
nullptr);
1237 refCast<const displacedPhaseInterface>(
interface).displacing();
1239 modelPtrsPtr->
set(displacing.
index(), models.
set(i,
nullptr));
1256 postProcessBlendingCoefficients(
format);
1264 template<
class ModelType>
1271 template<
class ModelType>
1279 template<
class ModelType>
#define forAll(list, i)
Loop across all elements in list.
#define forAllConstIter(Container, container, iter)
Iterate across all elements in the container object of type.
Wrapper class for interfacial models for which multiple instances of the model are used for different...
const phaseInterface & interface() const
Access the interface.
bool writeData(Ostream &os) const
Dummy write for regIOobject.
BlendedInterfacialModel(const UPtrList< const dictionary > &subDicts, const phaseInterface &interface, const dictionary &blendingDict, const Args &... args)
Construct from a dictionary, an interface and a blending dictionary.
tmp< GeometricField< Type, GeoMesh > > evaluate(tmp< GeometricField< Type, GeoMesh >>(ModelType::*method)(Args ...) const, const word &name, const dimensionSet &dims, Args ... args) const
Return a blended field.
~BlendedInterfacialModel()
Destructor.
Generic GeometricField class.
A HashTable specialisation for hashing pointers.
bool insert(const Key &, const T &newElmt)
Insert a new hashedEntry.
bool found(const Key &) const
Return true if hashedEntry is found in table.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
bool good() const
Return true if next operation might succeed.
void append(const T &)
Append an element at the end of the list.
void resize(const label)
Alias for setSize(const label)
void size(const label)
Override size to be inconsistent with allocated storage.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
bool set(const label) const
Is element set.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
UPtrList< T2 > convert()
Convert to list of different pointer type.
T & first()
Return reference to the first element of the list.
bool set(const label) const
Is element set.
Abstract base class for functions that are used to combine interfacial sub-models according to the vo...
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
ITstream & lookup(const word &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream.
bool found(const word &, bool recursive=false, bool patternMatch=true) const
Search dictionary for given keyword.
Dimension set for the base types.
const word & name() const
Return const reference to name.
Class to represent a interface between phases where one phase is considered dispersed within the othe...
Class to represent a interface between phases where one phase is considered dispersed within the othe...
virtual word name() const
Name.
Class to represent an interface between phases which has been displaced to some extent by a third pha...
virtual word name() const
Name.
const Time & time() const
Return the top-level database.
A wordList with hashed indices for faster lookup by name.
Class to represent an interface between phases. Derivations can further specify the configuration of ...
const phaseSystem & fluid() const
Return the phase system.
virtual word name() const
Name.
label index(const phaseModel &phase) const
Return the index of the given phase. Generates a FatalError if.
const phaseSystem & fluid() const
Return the system to which this phase belongs.
label index() const
Return the index of the phase.
const phaseModelList & phases() const
Return the phase models.
Motion of the mesh specified as a list of pointMeshMovers.
regIOobject is an abstract class derived from IOobject to handle automatic object registration with t...
Class to represent a interface between phases where the two phases are considered to be segregated,...
Class to represent a interface between phases where the two phases are considered to be segregated; t...
virtual word name() const
Name.
A class for managing temporary objects.
Template function which returns the un-mangled name of a given type. Useful for types which do not ha...
A class for handling words, derived from string.
Foam::fvMesh mesh(Foam::IOobject(regionName, runTime.name(), runTime, Foam::IOobject::MUST_READ), false)
volScalarField scalarField(fieldObject, mesh)
static List< word > fieldNames
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(lagrangian::Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(lagrangian::Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(lagrangian::Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.name(), lagrangian::cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
Info<< "Calculating turbulent flame speed field St\n"<< endl;volScalarField St(IOobject("St", runTime.name(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), flameWrinkling->Xi() *Su);multivariateSurfaceInterpolationScheme< scalar >::fieldTable fields
volScalarField alpha(IOobject("alpha", runTime.name(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE), lambda *max(Ua &U, zeroSensitivity))
#define WarningInFunction
Report a warning using Foam::Warning.
bool valid(const PtrList< ModelType > &l)
tmp< GeoField > interpolate(tmp< volScalarField > f)
const dimensionSet dimless
static tmp< SurfaceField< Type > > interpolate(const VolField< Type > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
static const coefficient A("A", dimPressure, 611.21)
List< word > wordList
A List of words.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void addField(const label phasei, const word &name, tmp< GeoField > field, PtrList< GeoField > &fieldList)
String typeName(const std::type_info &info)
Return the un-mangled name given the standard type info.
void generateInterfacialModels(PtrList< phaseInterface > &interfaces, PtrList< ModelType > &models, const phaseSystem &fluid, const UPtrList< const dictionary > &subDicts, const wordHashSet &ignoreKeys, const phaseInterface &interface, const Args &... args)
dimensionedScalar sin(const dimensionedScalar &ds)
vectorField pointField
pointField is a vectorField.
vector point
Point is a vector.
tmp< scalarField > linearSequence01(const label n)
VolField< scalar > volScalarField
const dictionary & blendingDict(const phaseSystem &fluid, const dictionary &dict)
word name(const LagrangianState state)
Return a string representation of a Lagrangian state enumeration.
HashSet wordHashSet
A HashSet with word keys.
tmp< DimensionedField< scalar, GeoMesh, Field > > mag(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
fvMesh zeroDimensionalFvMesh(const objectRegistry &db)
Construct a zero-dimensional unit-cube FV mesh.
tmp< DimensionedField< TypeR, GeoMesh, Field > > New(const tmp< DimensionedField< TypeR, GeoMesh, Field >> &tdf1, const word &name, const dimensionSet &dimensions)
dimensionedScalar cos(const dimensionedScalar &ds)
dimensioned< Type > max(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
word format(conversionProperties.lookup("format"))
Foam::argList args(argc, argv)