44#include "phaseModel.H"
46#include "orderedPhasePair.H"
63template<
class modelType>
class BlendedInterfacialModel;
64class aspectRatioModel;
66namespace reactingMultiphaseEuler
68 class surfaceTensionModel;
187 template<
class modelType>
200 template<
class modelType>
203 const word& modelName,
213 template<
class modelType>
216 const word& modelName,
223 const bool correctFixedFluxBCs =
true
227 template<
class modelType>
230 const word& modelName,
237 const bool correctFixedFluxBCs =
true
242 template<
class GeoField>
246 const word& fieldName,
253 template<
class GeoField>
257 const word& fieldName,
258 const GeoField&
field,
264 template<
class GeoField>
268 const word& fieldName,
275 template<
class GeoField>
279 const word& fieldName,
280 const GeoField&
field,
366 template<
class modelType>
370 template<
class modelType>
374 template<
class modelType>
382 template<
class modelType>
390 template<
class modelType>
394 template<
class modelType>
405 template<
class>
class PatchField,
419 template<
class>
class PatchField,
512 const bool includeVirtualMass =
false
529 virtual void solve();
Generic mesh wrapper used by volMesh, surfaceMesh, pointMesh etc.
A HashTable of pointers to objects of type <T>, with deallocation management of the pointers.
A HashTable similar to std::unordered_map.
List of MRF zones with IO functionality. MRF zones are specified by a list of dictionary entries,...
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
An ordered pair of two objects of type <T> with first() and second() elements.
Template dictionary class which manages the storage associated with it.
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
A list of pointers to objects of type <T>, without allocation/deallocation management of the pointers...
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
const word & name() const
Dimension set for the base types, which can be used to implement rigorous dimension checking for alge...
Mesh data needed to do the Finite Volume discretisation.
Single incompressible phase derived from the phase-fraction. Used as part of the multiPhaseMixture fo...
An ordered or unorder pair of phase names. Typically specified as follows.
Description for mass transfer between a pair of phases. The direction of the mass transfer is from th...
Class to represent a system of phases and model interfacial transfers between them.
phaseModelPartialList stationaryPhaseModels_
Stationary phase models.
void createSubModels(const dictTable &modelDicts, HashTable< autoPtr< modelType >, phasePairKey, phasePairKey::hash > &models)
Generate pairs and sub-model tables.
virtual void correctKinematics()
Correct the kinematics.
virtual void correctEnergyTransport()
Correct the energy transport e.g. alphat.
const phasePairTable & phasePairs() const
Return the phase pairs.
virtual PtrList< surfaceScalarField > phiKdPhifs(const PtrList< surfaceScalarField > &rAUfs) const =0
Return the force fluxes for the face-based algorithm.
virtual tmp< volScalarField > dmdt(const phasePairKey &key) const
Return the mass transfer rate for a pair.
static const word propertiesName
Default name of the phase properties dictionary.
HashTable< autoPtr< blendingMethod > > blendingMethodTable
const IOMRFZoneList & MRF() const
Return MRF zones.
void generatePairs(const dictTable &modelDicts)
Generate pairs.
const fvMesh & mesh_
Reference to the mesh.
phaseModelList phaseModels_
Phase models.
virtual PtrList< surfaceScalarField > phiKdPhis(const PtrList< volScalarField > &rAUs) const =0
Return the force fluxes for the cell-based algorithm.
phaseModelPartialList movingPhaseModels_
Moving phase models.
const surfaceScalarField & phi() const
Return the mixture flux.
virtual void correctThermo()
Correct the thermodynamics.
const volScalarField & dpdt() const
Return the rate of change of the pressure.
virtual void correct()
Correct the fluid properties other than those listed below.
virtual autoPtr< massTransferTable > massTransfer() const =0
Return the mass transfer matrices.
tmp< volScalarField > sigma(const phasePairKey &key) const
Return the surface tension coefficient for a pair.
phaseModelPartialList multiComponentPhaseModels_
Multi-component phase models.
phaseModelPartialList anisothermalPhaseModels_
Anisothermal phase models.
const phaseModelPartialList & movingPhases() const
Return the models for phases that are moving.
virtual const HashPtrTable< surfaceScalarField > & DByAfs() const =0
Return the phase diffusivities divided by the momentum.
tmp< volVectorField > U() const
Return the mixture velocity.
void fillFields(const word &name, const dimensionSet &dims, PtrList< GeometricField< Type, PatchField, GeoMesh > > &fieldList) const
Fill up gaps in a phase-indexed list of fields with zeros.
HashPtrTable< fvScalarMatrix > massTransferTable
tmp< surfaceScalarField > calcPhi(const phaseModelList &phaseModels) const
Calculate and return the mixture flux.
const phaseModelList & phases() const
Return the phase models.
PtrListDictionary< phaseModel > phaseModelList
const phaseModelPartialList & anisothermalPhases() const
Return the models for phases that have variable temperature.
const modelType & lookupSubModel(const phasePair &key) const
Return a sub model between a phase pair.
aspectRatioModelTable aspectRatioModels_
Aspect ratio models.
const BlendedInterfacialModel< modelType > & lookupBlendedSubModel(const phasePair &key) const
Return a blended sub model between a phase pair.
HashTable< autoPtr< phasePair >, phasePairKey, phasePairKey::hash > phasePairTable
virtual PtrList< surfaceScalarField > AFfs() const =0
Return the implicit force coefficients for the face-based.
bool foundBlendedSubModel(const phasePair &key) const
Check availability of a blended sub model for a given phase pair.
surfaceTensionModelTable surfaceTensionModels_
Surface tension models.
HashTable< autoPtr< reactingMultiphaseEuler::surfaceTensionModel >, phasePairKey, phasePairKey::hash > surfaceTensionModelTable
const phaseModelPartialList & multiComponentPhases() const
Return the models for phases that have multiple species.
virtual autoPtr< heatTransferTable > heatTransfer() const =0
Return the heat transfer matrices.
virtual void correctTurbulence()
Correct the turbulence.
void generatePairsAndSubModels(const word &modelName, HashTable< autoPtr< modelType >, phasePairKey, phasePairKey::hash > &models)
Generate pairs and sub-model tables.
virtual PtrList< volScalarField > dmdts() const
Return the mass transfer rates for each phase.
const phaseModelPartialList & stationaryPhases() const
Return the models for phases that are stationary.
virtual PtrList< surfaceScalarField > ddtCorrByAs(const PtrList< volScalarField > &rAUs, const bool includeVirtualMass=false) const =0
Return the flux corrections for the cell-based algorithm.
bool foundSubModel(const phasePair &key) const
Check availability of a sub model for a given phase pair.
virtual autoPtr< momentumTransferTable > momentumTransferf()=0
Return the momentum transfer matrices for the face-based.
HashTable< autoPtr< aspectRatioModel >, phasePairKey, phasePairKey::hash > aspectRatioModelTable
phasePairTable phasePairs_
Phase pairs.
surfaceScalarField phi_
Total volumetric flux.
virtual PtrList< surfaceScalarField > phiFs(const PtrList< volScalarField > &rAUs)=0
Return the force fluxes for the cell-based algorithm.
HashPtrTable< fvVectorMatrix > momentumTransferTable
HashPtrTable< fvScalarMatrix > heatTransferTable
virtual void partialEliminationf(const PtrList< surfaceScalarField > &rAUfs)=0
Solve the drag system for the new fluxes.
virtual PtrList< volVectorField > KdUByAs(const PtrList< volScalarField > &rAUs) const =0
Return the explicit part of the drag force.
virtual ~phaseSystem()
Destructor.
const fvMesh & mesh() const
Return the mesh.
TypeName("phaseSystem")
Runtime type information.
UPtrList< phaseModel > phaseModelPartialList
void addField(const phaseModel &phase, const word &fieldName, tmp< GeoField > field, PtrList< GeoField > &fieldList) const
Add the field to a phase-indexed list, with the given name,.
tmp< volScalarField > rho() const
Return the mixture density.
virtual PtrList< surfaceScalarField > phiFfs(const PtrList< surfaceScalarField > &rAUfs)=0
Return the force fluxes for the face-based algorithm.
IOMRFZoneList MRF_
Optional MRF zones.
fv::options & fvOptions() const
Access the fvOptions.
volScalarField dpdt_
Rate of change of pressure.
blendingMethodTable blendingMethods_
Blending methods.
virtual void partialElimination(const PtrList< volScalarField > &rAUs)=0
Solve the drag system for the new velocities and fluxes.
virtual autoPtr< momentumTransferTable > momentumTransfer()=0
Return the momentum transfer matrices for the cell-based.
tmp< volScalarField > E(const phasePairKey &key) const
Return the aspect-ratio for a pair.
HashTable< dictionary, phasePairKey, phasePairKey::hash > dictTable
virtual void solve()
Solve for the phase fractions.
virtual bool read()
Read base phaseProperties dictionary.
Single incompressible phase derived from the phase-fraction. Used as part of the multiPhaseMixture fo...
A class for managing temporary objects.
A class for handling words, derived from Foam::string.
Forward declarations of fvMatrix specializations.
PtrList< volScalarField > rAUs
PtrList< surfaceScalarField > rAUfs
tmp< volScalarField > byDt(const volScalarField &vf)
Hashing functor for phasePairKey.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.