Go to the documentation of this file.
43 #include "phaseModel.H"
44 #include "phasePair.H"
45 #include "orderedPhasePair.H"
62 template<
class modelType>
class BlendedInterfacialModel;
63 class surfaceTensionModel;
64 class aspectRatioModel;
183 template<
class modelType>
196 template<
class modelType>
199 const word& modelName,
209 template<
class modelType>
212 const word& modelName,
219 const bool correctFixedFluxBCs =
true
223 template<
class modelType>
226 const word& modelName,
233 const bool correctFixedFluxBCs =
true
238 template<
class GeoField>
242 const word& fieldName,
249 template<
class GeoField>
253 const word& fieldName,
254 const GeoField&
field,
260 template<
class GeoField>
264 const word& fieldName,
271 template<
class GeoField>
275 const word& fieldName,
276 const GeoField&
field,
362 template<
class modelType>
366 template<
class modelType>
370 template<
class modelType>
378 template<
class modelType>
386 template<
class modelType>
390 template<
class modelType>
401 template<
class>
class PatchField,
415 template<
class>
class PatchField,
508 const bool includeVirtualMass =
false
525 virtual void solve();
phaseModelPartialList stationaryPhaseModels_
Stationary phase models.
phaseModelList phaseModels_
Phase models.
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...
virtual autoPtr< momentumTransferTable > momentumTransfer()=0
Return the momentum transfer matrices for the cell-based.
UPtrList< phaseModel > phaseModelPartialList
HashTable< autoPtr< phasePair >, phasePairKey, phasePairKey::hash > phasePairTable
PtrList< volScalarField > rAUs
const phaseModelPartialList & anisothermalPhases() const
Return the models for phases that have variable temperature.
Hashing functor for phasePairKey.
tmp< surfaceScalarField > calcPhi(const phaseModelList &phaseModels) const
Calculate and return the mixture flux.
A class for handling words, derived from Foam::string.
IOMRFZoneList MRF_
Optional MRF zones.
virtual PtrList< surfaceScalarField > phiFs(const PtrList< volScalarField > &rAUs)=0
Return the force fluxes for the cell-based algorithm.
virtual autoPtr< massTransferTable > massTransfer() const =0
Return the mass transfer matrices.
surfaceTensionModelTable surfaceTensionModels_
Surface tension models.
Single incompressible phase derived from the phase-fraction. Used as part of the multiPhaseMixture fo...
virtual PtrList< surfaceScalarField > phiKdPhifs(const PtrList< surfaceScalarField > &rAUfs) const =0
Return the force fluxes for the face-based algorithm.
virtual void partialEliminationf(const PtrList< surfaceScalarField > &rAUfs)=0
Solve the drag system for the new fluxes.
A class for managing temporary objects.
virtual PtrList< surfaceScalarField > phiKdPhis(const PtrList< volScalarField > &rAUs) const =0
Return the force fluxes for the cell-based algorithm.
tmp< volScalarField > sigma(const phasePairKey &key) const
Return the surface tension coefficient for a pair.
HashTable< autoPtr< phasePair >, phasePairKey, phasePairKey::hash > phasePairTable
virtual PtrList< volVectorField > KdUByAs(const PtrList< volScalarField > &rAUs) const =0
Return the explicit part of the drag force.
phaseModelPartialList movingPhaseModels_
Moving phase models.
virtual autoPtr< momentumTransferTable > momentumTransferf()=0
Return the momentum transfer matrices for the face-based.
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.
phaseSystem(const fvMesh &mesh)
Construct from fvMesh.
const volScalarField & dpdt() const
Return the rate of change of the pressure.
auto key(const Type &t) -> typename std::enable_if< std::is_enum< Type >::value, typename std::underlying_type< Type >::type >::type
void createSubModels(const dictTable &modelDicts, HashTable< autoPtr< modelType >, phasePairKey, phasePairKey::hash > &models)
Generate pairs and sub-model tables using pair keys.
blendingMethodTable blendingMethods_
Blending methods.
const surfaceScalarField & phi() const
Constant access to the total flux.
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,.
Forward declarations of fvMatrix specializations.
virtual const HashPtrTable< surfaceScalarField > & DByAfs() const =0
Return the phase diffusivities divided by the momentum.
tmp< volVectorField > U() const
Mixture U.
const modelType & lookupSubModel(const phasePair &key) const
Access a sub model between a phase pair.
Dimension set for the base types, which can be used to implement rigorous dimension checking for alge...
virtual ~phaseSystem()
Destructor.
HashTable< autoPtr< aspectRatioModel >, phasePairKey, phasePairKey::hash > aspectRatioModelTable
HashTable< dictionary, phasePairKey, phasePairKey::hash > dictTable
virtual tmp< volScalarField > dmdt(const phasePairKey &key) const =0
Return interfacial source mass rate per phase pair.
const word & name() const
virtual PtrList< volScalarField > dmdts() const
Return the mass transfer rates for each phase.
bool foundSubModel(const phasePair &key) const
Check availability of a sub model for a given phase pair.
HashPtrTable< fvScalarMatrix > heatTransferTable
const phaseModelPartialList & multiComponentPhases() const
Return the models for phases that have multiple species.
surfaceScalarField phi_
Mixture total volumetric flux.
void generatePairsAndSubModels(const word &modelName, HashTable< autoPtr< modelType >, phasePairKey, phasePairKey::hash > &models)
Generate pairs and sub-model tables.
virtual autoPtr< heatTransferTable > heatTransfer() const =0
Return the heat transfer matrices.
virtual void correctKinematics()
Correct the kinematics.
virtual void correct()
Correct the mixture thermos.
const fvMesh & mesh_
Reference to the mesh.
phaseModelPartialList anisothermalPhaseModels_
Anisothermal phase models.
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
virtual PtrList< surfaceScalarField > ddtCorrByAs(const PtrList< volScalarField > &rAUs, const bool includeVirtualMass=false) const =0
Return the flux corrections for the cell-based algorithm.
fv::options & fvOptions() const
Access the fvOptions.
An ordered or unorder pair of phase names. Typically specified as follows.
virtual void partialElimination(const PtrList< volScalarField > &rAUs)=0
Solve the drag system for the new velocities and fluxes.
const BlendedInterfacialModel< modelType > & lookupBlendedSubModel(const phasePair &key) const
Return a blended sub model between a phase pair.
HashTable< autoPtr< blendingMethod > > blendingMethodTable
virtual void correctEnergyTransport()
Correct the energy transport e.g. alphat.
HashTable< autoPtr< surfaceTensionModel >, phasePairKey, phasePairKey::hash > surfaceTensionModelTable
const phaseModelPartialList & movingPhases() const
Return the models for phases that are moving.
static const word propertiesName
Default name of the phase properties dictionary.
virtual PtrList< surfaceScalarField > phiFfs(const PtrList< surfaceScalarField > &rAUfs)=0
Return the force fluxes for the face-based algorithm.
Generic mesh wrapper used by volMesh, surfaceMesh, pointMesh etc.
Mesh data needed to do the Finite Volume discretisation.
const fvMesh & mesh() const
Return mesh.
virtual void solve()=0
Solve for the phase transport equations.
A HashTable similar to std::unordered_map.
HashPtrTable< fvScalarMatrix > massTransferTable
const phasePairTable & phasePairs() const
Return the phase pairs.
TypeName("phaseSystem")
Runtime type information.
volScalarField dpdt_
Rate of change of pressure.
virtual PtrList< surfaceScalarField > AFfs() const =0
Return the implicit force coefficients for the face-based.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
virtual void correctTurbulence()
Correct the turbulence.
aspectRatioModelTable aspectRatioModels_
Aspect ratio models.
phaseModelTable phaseModels_
Phase models.
An ordered pair of two objects of type <T> with first() and second() elements.
A HashTable of pointers to objects of type <T>, with deallocation management of the pointers.
PtrListDictionary< phaseModel > phaseModelList
List of MRF zones with IO functionality. MRF zones are specified by a list of dictionary entries,...
PtrList< surfaceScalarField > rAUfs
virtual void correctThermo()
Correct the thermodynamics.
HashTable< autoPtr< multiphaseInter::surfaceTensionModel >, phasePairKey, phasePairKey::hash > surfaceTensionModelTable
phasePairTable phasePairs_
Phase pairs.
bool foundBlendedSubModel(const phasePair &key) const
Check availability of a blended sub model for a given phase pair.
const phaseModelTable & phases() const
Constant access the phases.
HashPtrTable< fvVectorMatrix > momentumTransferTable
tmp< volScalarField > byDt(const volScalarField &vf)
virtual tmp< volScalarField > rho() const
Return the mixture density.
phaseModelPartialList multiComponentPhaseModels_
Multi-component phase models.
const phaseModelPartialList & stationaryPhases() const
Return the models for phases that are stationary.
virtual bool read()
Read base phaseProperties dictionary.
tmp< volScalarField > E(const phasePairKey &key) const
Return the aspect-ratio for a pair.
void generatePairs(const dictTable &modelDicts)
Generate pairs.
const IOMRFZoneList & MRF() const
Return MRF zones.