63 class interfaceSurfaceTensionModel;
64 class pressureReference;
65 class nonOrthogonalSolutionControl;
350 template<
class ModelType>
354 template<
class ModelType,
class ... InterfaceTypes>
364 template<
class ModelType>
377 template<
class ModelType>
389 template<
class ValueType>
402 template<
class ValueType>
405 const word& valueName,
417 template<
class ModelType>
421 template<
class ModelType>
428 template<
class ModelType>
432 template<
class ModelType>
445 template<
class>
class PatchField,
459 template<
class>
class PatchField,
Generic mesh wrapper used by volMesh, surfaceMesh, pointMesh etc.
Generic GeometricField class.
A HashTable specialisation for hashing pointers.
An STL-conforming hash table.
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...
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...
const fileName & name() const
Return the dictionary name.
A list of keyword definitions, which are a keyword followed by any number of values (e....
Dimension set for the base types.
Finite volume constraints.
Mesh data needed to do the Finite Volume discretisation.
Non-orthogonal solution control class. Provides non-orthogonal-loop control methods.
Word-pair based class used for keying interface models in hash tables.
Class to represent an interface between phases. Derivations can further specify the configuration of ...
Class to represent a system of phases and model interfacial transfers between them.
phaseModelPartialList stationaryPhaseModels_
Stationary phase models.
virtual autoPtr< specieTransferTable > specieTransfer() const =0
Return the specie transfer matrices.
virtual PtrList< surfaceScalarField > KdPhis() const =0
Return the force fluxes for the cell-based algorithm.
virtual void correctKinematics()
Correct the kinematics.
tmp< volScalarField > nearInterface() const
Indicator of the proximity of the interface.
virtual PtrList< surfaceScalarField > Ffs() const =0
Return the force fluxes for the face-based algorithm.
dictionary interfacialDict(const word &name) const
Return the dictionary containing interfacial model or value.
void correctPhi(const volScalarField &p_rgh, const autoPtr< volScalarField > &divU, const pressureReference &pressureReference, nonOrthogonalSolutionControl &pimple)
bool foundInterfacialModel(const phaseInterface &interface) const
Check availability of a sub model for a given interface.
static const word propertiesName
Default name of the phase properties dictionary.
virtual PtrList< volScalarField > Kds() const =0
Return the implicit part of the drag force.
void validateMassTransfer(const phaseInterface &interface) const
Check that mass transfer is supported across the given interface.
void generateInterfacialModels(const dictionary &dict, const phaseInterface &interface, PtrList< phaseInterface > &interfaces, PtrList< ModelType > &models) const
Generate interfacial-model lists.
const IOMRFZoneList & MRF() const
Return MRF zones.
const phaseModel & otherPhase(const phaseModel &phase) const
Return the phase not given as an argument in a two-phase system.
virtual void correctReactions()
Correct the reactions.
const fvMesh & mesh_
Reference to the mesh.
phaseModelPartialList multicomponentPhaseModels_
Multi-component phase models.
phaseModelList phaseModels_
Phase models.
phaseModelPartialList movingPhaseModels_
Moving phase models.
void setMixtureU(const volVectorField &Um)
Re-normalise the velocity of the phases.
const dimensionedScalar & deltaN() const
Stabilisation for normalisation of the interface normal.
virtual PtrList< surfaceScalarField > ddtCorrs() const =0
Return the flux corrections for the cell-based algorithm.
virtual void correctSpecies()
Correct the species mass fractions.
const Foam::fvModels & fvModels() const
Access the fvModels.
const surfaceScalarField & phi() const
Return the mixture flux.
virtual void correctThermo()
Correct the thermodynamics.
const pimpleNoLoopControl & pimple_
Reference to pimpleNoLoopControl.
const volScalarField & dpdt() const
Return the rate of change of the pressure.
virtual void correct()
Correct the fluid properties other than those listed below.
tmp< volScalarField > sigma(const phaseInterfaceKey &key) const
Return the surface tension coefficient for an interface.
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 PtrList< surfaceScalarField > KdVmfs() const =0
Return the implicit force coefficients for the face-based.
virtual PtrList< volVectorField > KdUs() const =0
Return the explicit part of the drag force.
phaseModelPartialList anisothermalPhaseModels_
Anisothermal phase models.
const phaseModelPartialList & movingPhases() const
Return the models for phases that are moving.
virtual void predictThermophysicalTransport()
Predict the energy transport e.g. alphat.
tmp< volScalarField > K(const phaseModel &alpha1, const phaseModel &alpha2) const
Curvature of interface between two phases.
HashTable< scalar, phaseInterfaceKey, phaseInterfaceKey::hash > cAlphaTable
tmp< volVectorField > U() const
Return the mixture velocity.
virtual void correctMomentumTransport()
Correct the momentumTransport.
void correctBoundaryFlux()
Correct fixed-flux BCs to be consistent with the velocity BCs.
tmp< surfaceScalarField > calcPhi(const phaseModelList &phaseModels) const
Calculate and return the mixture flux.
static autoPtr< phaseSystem > New(const fvMesh &mesh)
const phaseModelList & phases() const
Return the phase models.
PtrListDictionary< phaseModel > phaseModelList
const phaseModelPartialList & anisothermalPhases() const
Return the models for phases that have variable temperature.
virtual void partialEliminationf(const PtrList< surfaceScalarField > &rAUfs, const PtrList< surfaceScalarField > &alphafs, const PtrList< surfaceScalarField > &KdPhifs)=0
Solve the drag system for the new fluxes.
virtual tmp< volScalarField > dmdtf(const phaseInterfaceKey &key) const
Return the mass transfer rate for an interface.
virtual void dragCorrs(PtrList< volVectorField > &dragCorrs, PtrList< surfaceScalarField > &dragCorrf) const =0
Set the cell and faces drag correction fields.
virtual void solve(const PtrList< volScalarField > &rAUs, const PtrList< surfaceScalarField > &rAUfs)
Solve for the phase fractions.
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.
const dimensionedScalar deltaN_
Stabilisation for normalisation of the interface normal.
interfaceSurfaceTensionModelTable interfaceSurfaceTensionModels_
Surface tension models.
const pimpleNoLoopControl & pimple() const
Return pimpleNoLoopControl.
virtual autoPtr< momentumTransferTable > momentumTransferf()=0
Return the momentum transfer matrices for the face-based.
HashPtrTable< fvScalarMatrix > specieTransferTable
virtual void correctThermophysicalTransport()
Correct the energy transport e.g. alphat.
static const bool fillFields_
Flag to indicate that returned lists of fields are "complete"; i.e.,.
virtual PtrList< volScalarField > dmdts() const
Return the mass transfer rates for each phase.
virtual void meshUpdate()
Update the fluid properties for mesh changes.
cAlphaTable cAlphas_
Interface compression coefficients.
virtual autoPtr< momentumTransferTable > momentumTransfer()=0
Return the momentum transfer matrices for the cell-based.
const phaseModelPartialList & stationaryPhases() const
Return the models for phases that are stationary.
word modelName() const
Return the model name. This is the same as the model's typename.
surfaceScalarField phi_
Total volumetric flux.
HashPtrTable< fvVectorMatrix > momentumTransferTable
virtual PtrList< surfaceScalarField > Fs() const =0
Return the force fluxes for the cell-based algorithm.
virtual bool implicitPhasePressure() const
Returns true if the phase pressure is treated implicitly.
tmp< surfaceScalarField > surfaceTension(const phaseModel &phase) const
Return the surface tension force.
tmp< volScalarField > sumAlphaMoving() const
Return the sum of the phase fractions of the moving phases.
HashPtrTable< fvScalarMatrix > heatTransferTable
phaseSystem(const fvMesh &mesh)
Construct from fvMesh.
virtual PtrList< surfaceScalarField > KdPhifs() const =0
Return the force fluxes for the face-based algorithm.
void setMixturePhi(const PtrList< surfaceScalarField > &alphafs, const surfaceScalarField &phim)
Re-normalise the flux of the phases.
HashTable< autoPtr< interfaceSurfaceTensionModel >, phaseInterfaceKey, phaseInterfaceKey::hash > interfaceSurfaceTensionModelTable
virtual void partialElimination(const PtrList< volScalarField > &rAUs, const PtrList< volVectorField > &KdUs, const PtrList< surfaceScalarField > &alphafs, const PtrList< surfaceScalarField > &rAUfs, const PtrList< surfaceScalarField > &KdPhis)=0
Solve the drag system for the new velocities and fluxes.
virtual ~phaseSystem()
Destructor.
HashPtrTable< HashPtrTable< volScalarField >, phaseInterfaceKey, phaseInterfaceKey::hash > dmidtfTable
void generateInterfacialValues(const dictionary &dict, HashTable< ValueType, phaseInterfaceKey, phaseInterfaceKey::hash > &values) const
Generate interfacial-model tables.
const fvMesh & mesh() const
Return the mesh.
TypeName("phaseSystem")
Runtime type information.
UPtrList< phaseModel > phaseModelPartialList
tmp< surfaceScalarField > nHatf(const volScalarField &alpha1, const volScalarField &alpha2) const
Normal to interface between two phases dotted with face areas.
tmp< volScalarField > rho() const
Return the mixture density.
IOMRFZoneList MRF_
Optional MRF zones.
HashPtrTable< volScalarField, phaseInterfaceKey, phaseInterfaceKey::hash > dmdtfTable
const Foam::fvConstraints & fvConstraints() const
Access the fvConstraints.
virtual tmp< surfaceScalarField > alphaDByAf(const PtrList< volScalarField > &rAUs, const PtrList< surfaceScalarField > &rAUfs) const =0
Return the phase diffusivity.
word referencePhaseName_
Name of optional reference phase which is not solved for.
tmp< surfaceVectorField > nHatfv(const volScalarField &alpha1, const volScalarField &alpha2) const
Normal to interface between two phases.
volScalarField dpdt_
Rate of change of pressure.
virtual void predictMomentumTransport()
Predict the momentumTransport.
static const dictionary & modelSubDict(const dictionary &dict)
Return the dictionary from which to construct a low-level.
declareRunTimeSelectionTable(autoPtr, phaseSystem, dictionary,(const fvMesh &mesh),(mesh))
virtual PtrList< volScalarField > d2mdtdps() const
Return the mass transfer pressure implicit coefficients.
virtual bool read()
Read base phaseProperties dictionary.
const ModelType & lookupInterfacialModel(const phaseInterface &interface) const
Return a sub model for an interface.
virtual void correctContinuityError()
Correct the continuity errors.
bool incompressible() const
Return incompressibility.
Pimple no-loop control class. Implements various option flags, but leaves loop controls to the deriva...
Provides controls for the pressure reference in closed-volume simulations.
A class for managing temporary objects.
A class for handling words, derived from string.
Forward declarations of fvMatrix specialisations.
volScalarField sf(fieldObject, mesh)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
tmp< volScalarField > byDt(const volScalarField &vf)
VolField< scalar > volScalarField