/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see . Class Foam::twoPhaseSystem Description SourceFiles twoPhaseSystem.C \*---------------------------------------------------------------------------*/ #ifndef twoPhaseSystem_H #define twoPhaseSystem_H #include "IOdictionary.H" #include "phaseModel.H" #include "phasePair.H" #include "orderedPhasePair.H" #include "volFields.H" #include "surfaceFields.H" #include "dragModel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { class virtualMassModel; class heatTransferModel; class liftModel; class wallLubricationModel; class turbulentDispersionModel; class blendingMethod; template class BlendedInterfacialModel; /*---------------------------------------------------------------------------*\ Class twoPhaseSystem Declaration \*---------------------------------------------------------------------------*/ class twoPhaseSystem : public IOdictionary { // Private data //- Reference to the mesh const fvMesh& mesh_; //- Phase model 1 phaseModel phase1_; //- Phase model 2 phaseModel phase2_; //- Total volumetric flux surfaceScalarField phi_; //- Dilatation term volScalarField dgdt_; //- Optional dispersion diffusivity tmp pPrimeByA_; //- Unordered phase pair autoPtr pair_; //- Phase pair for phase 1 dispersed in phase 2 autoPtr pair1In2_; //- Phase pair for phase 2 dispersed in phase 1 autoPtr pair2In1_; //- Blending methods HashTable, word, word::hash> blendingMethods_; //- Drag model autoPtr > drag_; //- Virtual mass model autoPtr > virtualMass_; //- Heat transfer model autoPtr > heatTransfer_; //- Lift model autoPtr > lift_; //- Wall lubrication model autoPtr > wallLubrication_; //- Wall lubrication model autoPtr > turbulentDispersion_; // Private member functions //- Return the mixture flux tmp calcPhi() const; public: // Constructors //- Construct from fvMesh twoPhaseSystem(const fvMesh&, const dimensionedVector& g); //- Destructor virtual ~twoPhaseSystem(); // Member Functions //- Return the mixture density tmp rho() const; //- Return the mixture velocity tmp U() const; //- Return the drag coefficient tmp Kd() const; //- Return the face drag coefficient tmp Kdf() const; //- Return the virtual mass coefficient tmp Vm() const; //- Return the face virtual mass coefficient tmp Vmf() const; //- Return the heat transfer coefficient tmp Kh() const; //- Return the combined force (lift + wall-lubrication) tmp F() const; //- Return the combined face-force (lift + wall-lubrication) tmp Ff() const; //- Return the turbulent diffusivity // Multiplies the phase-fraction gradient tmp D() const; //- Solve for the two-phase-fractions void solve(); //- Correct two-phase properties other than turbulence void correct(); //- Correct two-phase turbulence void correctTurbulence(); //- Read base phaseProperties dictionary bool read(); // Access //- Return the drag model for the given phase const dragModel& drag(const phaseModel& phase) const; //- Return the virtual mass model for the given phase const virtualMassModel& virtualMass(const phaseModel& phase) const; //- Return the surface tension coefficient const dimensionedScalar& sigma() const; //- Return the mesh inline const fvMesh& mesh() const; //- Return phase model 1 inline const phaseModel& phase1() const; //- Return non-const access to phase model 1 inline phaseModel& phase1(); //- Return phase model 2 inline const phaseModel& phase2() const; //- Return non-const access to phase model 2 inline phaseModel& phase2(); //- Return the phase not given as an argument inline const phaseModel& otherPhase(const phaseModel& phase) const; //- Return the mixture flux inline const surfaceScalarField& phi() const; //- Return non-const access to the the mixture flux inline surfaceScalarField& phi(); //- Return the dilatation term inline const volScalarField& dgdt() const; //- Return non-const access to the dilatation parameter inline volScalarField& dgdt(); //- Return non-const access to the dispersion diffusivity inline tmp& pPrimeByA(); }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #include "twoPhaseSystemI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //