/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2016-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- 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::twoPhaseMixtureEThermo Description SourceFiles twoPhaseMixtureEThermo.C \*---------------------------------------------------------------------------*/ #ifndef twoPhaseMixtureEThermo_H #define twoPhaseMixtureEThermo_H #include "volFields.H" #include "basicThermo.H" #include "thermoIncompressibleTwoPhaseMixture.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { /*---------------------------------------------------------------------------*\ Class twoPhaseMixtureEThermo Declaration \*---------------------------------------------------------------------------*/ class twoPhaseMixtureEThermo : public basicThermo, public thermoIncompressibleTwoPhaseMixture { protected: // Protected Data //- Saturation Temperature dimensionedScalar TSat_; public: TypeName("twoPhaseMixtureEThermo"); // Constructor twoPhaseMixtureEThermo ( const volVectorField& U, const surfaceScalarField& phi ); //- Destructor virtual ~twoPhaseMixtureEThermo() = default; // Member Functions //- Return access to the internal energy field [J/Kg] virtual volScalarField& he() { NotImplemented; return p(); } //- Return access to the internal energy field [J/Kg] virtual const volScalarField& he() const { NotImplemented; return p(); } //- Enthalpy/Internal energy //- for given pressure and temperature [J/kg] virtual tmp he ( const volScalarField& p, const volScalarField& T ) const; //- Enthalpy/Internal energy for cell-set [J/kg] virtual tmp he ( const scalarField& p, const scalarField& T, const labelList& cells ) const; //- Enthalpy/Internal energy for patch [J/kg] virtual tmp he ( const scalarField& p, const scalarField& T, const label patchi ) const; //- Chemical enthalpy [J/kg] virtual tmp hc() const; //- Temperature from enthalpy/internal energy for cell-set virtual tmp THE ( const scalarField& h, const scalarField& p, const scalarField& T0, // starting temperature const labelList& cells ) const; //- Temperature from enthalpy/internal energy for patch virtual tmp THE ( const scalarField& h, const scalarField& p, const scalarField& T0, // starting temperature const label patchi ) const; //- Return true if the equation of state is incompressible //- i.e. rho != f(p) bool incompressible() const { return true; } //- Return true if the equation of state is isochoric //- i.e. rho = const bool isochoric() const { return false; } //- Return rho of the mixture virtual tmp rho() const; //- Return rho for patch virtual tmp rho(const label patchi) const; //- Return Cp of the mixture virtual tmp Cp() const; //- Heat capacity at constant pressure for patch [J/kg/K] virtual tmp Cp ( const scalarField& p, const scalarField& T, const label patchi ) const; //- Heat capacity using pressure and temperature virtual tmp Cp ( const scalarField& p, const scalarField& T, const labelList& cells ) const { NotImplemented; return tmp::New(p); } //- Return Cv of the mixture virtual tmp Cv() const; //- Heat capacity at constant volume for patch [J/kg/K] virtual tmp Cv ( const scalarField& p, const scalarField& T, const label patchI ) const; //- Density from pressure and temperature virtual tmp rhoEoS ( const scalarField& p, const scalarField& T, const labelList& cells ) const { NotImplemented; return tmp::New(p); } //- Gamma = Cp/Cv [] virtual tmp gamma() const; //- Gamma = Cp/Cv for patch [] virtual tmp gamma ( const scalarField& p, const scalarField& T, const label patchi ) const; //- Heat capacity at constant pressure/volume [J/kg/K] virtual tmp Cpv() const; //- Heat capacity at constant pressure/volume for patch [J/kg/K] virtual tmp Cpv ( const scalarField& p, const scalarField& T, const label patchi ) const; //- Heat capacity ratio [] virtual tmp CpByCpv() const; //- Heat capacity ratio for patch [] virtual tmp CpByCpv ( const scalarField& p, const scalarField& T, const label patchi ) const; //- Molecular weight [kg/kmol] virtual tmp W() const; //- Thermal diffusivity for temperature of mixture [J/m/s/K] virtual tmp kappa() const; //- Thermal diffusivity for temperature //- of mixture for patch [J/m/s/K] virtual tmp kappa ( const label patchi ) const; //- Thermal diffusivity for energy of mixture [kg/m/s] virtual tmp alphahe() const; //- Thermal diffusivity for energy of mixture for patch [kg/m/s] virtual tmp alphahe(const label patchi) const; //- Effective thermal diffusivity for temperature //- of mixture [J/m/s/K] virtual tmp kappaEff ( const volScalarField& ) const; //- Effective thermal diffusivity for temperature //- of mixture for patch [J/m/s/K] virtual tmp kappaEff ( const scalarField& alphat, const label patchi ) const; //- Effective thermal diffusivity of mixture [kg/m/s] virtual tmp alphaEff ( const volScalarField& alphat ) const; //- Effective thermal diffusivity of mixture for patch [kg/m/s] virtual tmp alphaEff ( const scalarField& alphat, const label patchi ) const; //- Correct the thermo fields virtual void correct(); //- Return the name of the thermo physics virtual word thermoName() const; //- Read properties virtual bool read(); // Access to thermodynamic state variables //- Return const-access to the saturation temperature const dimensionedScalar& TSat() const { return TSat_; } //- Return transport properties dictionary const incompressibleTwoPhaseMixture& transportPropertiesDict() { return *this; } }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //