32 template<
class BasePhaseSystem>
36 autoPtr<phaseSystem::dmdtfTable> totalDmdtfsPtr
38 new phaseSystem::dmdtfTable
40 phaseSystem::dmdtfTable& totalDmdtfs = totalDmdtfsPtr();
44 phaseTransferModelTable,
46 phaseTransferModelIter
49 const phasePair& pair =
50 this->phasePairs_[phaseTransferModelIter.key()];
52 totalDmdtfs.insert(pair, phaseSystem::dmdtf(pair).ptr());
54 if (phaseTransferModelIter()->mixture())
56 *totalDmdtfs[pair] += *dmdtfs_[pair];
61 HashPtrTable<volScalarField>,
66 *totalDmdtfs[pair] += *dmidtfIter();
70 return totalDmdtfsPtr;
76 template<
class BasePhaseSystem>
79 const phaseSystem::dmdtfTable& dmdtfs,
80 phaseSystem::specieTransferTable& eqns
85 const phasePairKey& key = dmdtfIter.key();
86 const phasePair& pair(this->phasePairs_[key]);
92 const phaseModel& phase1 = pair.phase1();
93 const phaseModel& phase2 = pair.phase2();
100 *eqns[Y1.name()] += dmdtf21*Y2 +
fvm::Sp(dmdtf12, Y1);
101 *eqns[Y2.name()] -= dmdtf12*Y1 +
fvm::Sp(dmdtf21, Y2);
107 template<
class BasePhaseSystem>
110 const phaseSystem::dmidtfTable& dmidtfs,
111 phaseSystem::specieTransferTable& eqns
116 const phasePairKey& key = dmidtfIter.key();
117 const phasePair& pair(this->phasePairs_[key]);
119 const phaseModel& phase1 = pair.phase1();
120 const phaseModel& phase2 = pair.phase2();
122 forAllConstIter(HashPtrTable<volScalarField>, *dmidtfIter(), dmidtfJter)
124 const word& member = dmidtfJter.key();
134 *eqns[Y1.name()] += dmidtf;
140 *eqns[Y2.name()] -= dmidtf;
149 template<
class BasePhaseSystem>
155 BasePhaseSystem(mesh)
157 this->generatePairsAndSubModels
160 phaseTransferModels_,
166 phaseTransferModelTable,
167 phaseTransferModels_,
168 phaseTransferModelIter
171 const phasePair& pair = this->phasePairs_[phaseTransferModelIter.key()];
173 this->
template validateMassTransfer<phaseTransferModel>(pair);
175 if (phaseTransferModelIter()->mixture())
186 "phaseTransfer:dmdtf",
189 this->
mesh().time().timeName(),
198 dmidtfs_.insert(pair,
new HashPtrTable<volScalarField>());
200 const hashedWordList species(phaseTransferModelIter()->species());
204 const word& specie = *specieIter;
206 dmidtfs_[pair]->insert
217 "phaseTransfer:dmidtf",
222 this->
mesh().time().timeName(),
236 template<
class BasePhaseSystem>
243 template<
class BasePhaseSystem>
247 const phasePairKey& key
250 tmp<volScalarField> tDmdtf = BasePhaseSystem::dmdtf(key);
252 if (phaseTransferModels_.found(key))
256 if (phaseTransferModels_[key]->mixture())
258 tDmdtf.ref() += dmdtfSign**dmdtfs_[key];
263 HashPtrTable<volScalarField>,
268 tDmdtf.ref() += dmdtfSign**dmidtfIter();
276 template<
class BasePhaseSystem>
280 PtrList<volScalarField> dmdts(BasePhaseSystem::dmdts());
282 autoPtr<phaseSystem::dmdtfTable> totalDmdtfsPtr = this->totalDmdtfs();
287 const phasePair& pair = this->phasePairs_[totalDmdtfIter.key()];
289 addField(pair.phase1(),
"dmdt", *totalDmdtfIter(), dmdts);
290 addField(pair.phase2(),
"dmdt", - *totalDmdtfIter(), dmdts);
297 template<
class BasePhaseSystem>
301 autoPtr<phaseSystem::momentumTransferTable> eqnsPtr =
306 this->addDmdtUfs(totalDmdtfs(), eqns);
312 template<
class BasePhaseSystem>
316 autoPtr<phaseSystem::momentumTransferTable> eqnsPtr =
317 BasePhaseSystem::momentumTransferf();
321 this->addDmdtUfs(totalDmdtfs(), eqns);
327 template<
class BasePhaseSystem>
331 autoPtr<phaseSystem::heatTransferTable> eqnsPtr =
332 BasePhaseSystem::heatTransfer();
343 template<
class BasePhaseSystem>
347 autoPtr<phaseSystem::specieTransferTable> eqnsPtr
357 const phaseModel& phase = this->phaseModels_[
phasei];
359 const PtrList<volScalarField>& Yi = phase.Y();
371 this->addDmdtYfs(dmdtfs_, eqns);
372 this->addDmidtYf(dmidtfs_, eqns);
378 template<
class BasePhaseSystem>
386 phaseTransferModelTable,
387 phaseTransferModels_,
388 phaseTransferModelIter
391 const phasePair& pair = this->phasePairs_[phaseTransferModelIter.key()];
393 if (phaseTransferModelIter()->mixture())
395 *dmdtfs_[pair] =
Zero;
398 const hashedWordList species(phaseTransferModelIter()->species());
402 const word& specie = *specieIter;
404 *(*dmidtfs_[pair])[specie] =
Zero;
411 phaseTransferModelTable,
412 phaseTransferModels_,
413 phaseTransferModelIter
416 const phasePair& pair = this->phasePairs_[phaseTransferModelIter.key()];
418 if (phaseTransferModelIter()->mixture())
420 *dmdtfs_[pair] += phaseTransferModelIter()->dmdtf();
423 const HashPtrTable<volScalarField> dmidtf
425 phaseTransferModelIter()->dmidtf()
430 *(*dmidtfs_[pair])[dmidtfIter.key()] += *dmidtfIter();
436 template<
class BasePhaseSystem>
fvMatrix< scalar > fvScalarMatrix
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
PhaseTransferPhaseSystem(const fvMesh &)
Construct from fvMesh.
HashPtrTable< fvVectorMatrix > momentumTransferTable
virtual autoPtr< phaseSystem::heatTransferTable > heatTransfer() const
Return the heat transfer matrices.
#define forAllIter(Container, container, iter)
Iterate across all elements in the container object of type.
virtual autoPtr< phaseSystem::momentumTransferTable > momentumTransferf()
Return the momentum transfer matrices for the face-based algorithm.
static int compare(const Pair< word > &a, const Pair< word > &b)
Compare Pairs.
Class which models non-thermally-coupled or weakly thermally coupled mass transfers.
HashPtrTable< fvScalarMatrix > heatTransferTable
HashPtrTable< fvScalarMatrix > specieTransferTable
dimensionedScalar posPart(const dimensionedScalar &ds)
virtual void correct()
Correct the mass transfer rates.
void addDmdtHefs(const phaseSystem::dmdtfTable &dmdtfs, phaseSystem::heatTransferTable &eqns) const
Add energy transfer terms which result from bulk mass transfers.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
void addDmidtHefs(const phaseSystem::dmidtfTable &dmidtfs, phaseSystem::heatTransferTable &eqns) const
Add energy transfer terms which result from specie mass transfers.
const dimensionSet dimTime
virtual bool read()
Read base phaseProperties dictionary.
Info<< "Predicted p max-min : "<< max(p).value()<< " "<< min(p).value()<< endl;rho==max(rho0+psi *p, rhoMin);# 1 "/home/ubuntu/OpenFOAM-9/applications/solvers/multiphase/cavitatingFoam/alphavPsi.H" 1{ alphav=max(min((rho - rholSat)/(rhovSat - rholSat), scalar(1)), scalar(0));alphal=1.0 - alphav;Info<< "max-min alphav: "<< max(alphav).value()<< " "<< min(alphav).value()<< endl;psiModel-> correct()
static word groupName(Name name, const word &group)
HashPtrTable< volScalarField, phasePairKey, phasePairKey::hash > dmdtfTable
virtual tmp< volScalarField > dmdtf(const phasePairKey &key) const
Return the mass transfer rate for an interface.
const dimensionSet dimDensity
void addDmdtYfs(const phaseSystem::dmdtfTable &dmdtfs, phaseSystem::specieTransferTable &eqns) const
Add specie transfer terms which result from bulk mass transfers.
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
virtual PtrList< volScalarField > dmdts() const
Return the mass transfer rates for each phase.
const dimensionSet dimMass
word name(const complex &)
Return a string representation of a complex.
phaseSystem::momentumTransferTable & momentumTransfer(momentumTransferPtr())
virtual autoPtr< phaseSystem::momentumTransferTable > momentumTransfer()
Return the momentum transfer matrices for the cell-based algorithm.
const tmp< volScalarField::Internal > & Sp
virtual autoPtr< phaseSystem::specieTransferTable > specieTransfer() const
Return the specie transfer matrices.
void addDmidtYf(const phaseSystem::dmidtfTable &dmidtfs, phaseSystem::specieTransferTable &eqns) const
Add specie transfer terms which result from specie mass transfers.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
A class for managing temporary objects.
Calculate the matrix for implicit and explicit sources.
dimensionedScalar negPart(const dimensionedScalar &ds)
virtual ~PhaseTransferPhaseSystem()
Destructor.