ECOGEN 4.0
Evolutive, Compressible, Open, Genuine, Easy, N-phase
Loading...
Searching...
No Matches
Eos.h
Go to the documentation of this file.
1//
2// ,---. ,--, .---. ,--, ,---. .-. .-.
3// | .-' .' .') / .-. ) .' .' | .-' | \| |
4// | `-. | |(_) | | |(_) | | __ | `-. | | |
5// | .-' \ \ | | | | \ \ ( _) | .-' | |\ |
6// | `--. \ `-. \ `-' / \ `-) ) | `--. | | |)|
7// /( __.' \____\ )---' )\____/ /( __.' /( (_)
8// (__) (_) (__) (__) (__)
9// Official webSite: https://code-mphi.github.io/ECOGEN/
10//
11// This file is part of ECOGEN.
12//
13// ECOGEN is the legal property of its developers, whose names
14// are listed in the copyright file included with this source
15// distribution.
16//
17// ECOGEN is free software: you can redistribute it and/or modify
18// it under the terms of the GNU General Public License as published
19// by the Free Software Foundation, either version 3 of the License,
20// or (at your option) any later version.
21//
22// ECOGEN is distributed in the hope that it will be useful,
23// but WITHOUT ANY WARRANTY; without even the implied warranty of
24// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25// GNU General Public License for more details.
26//
27// You should have received a copy of the GNU General Public License
28// along with ECOGEN (file LICENSE).
29// If not, see <http://www.gnu.org/licenses/>.
30
31#ifndef EOS_H
32#define EOS_H
33
34#include "../Maths/Coord.h"
35#include "../Maths/Tensor.h"
36#include "../Errors.h"
37#include "../libTierces/tinyxml2.h"
38
41
42class Eos; //Predeclaration of class to include following .h
43
44#include "../Tools.h"
45
53class Eos
54{
55 public:
56 Eos(int& number);
57 virtual ~Eos();
58
59 //Constant methods
60 const std::string& getName() const { return m_name; };
62 virtual TypeEOS getType() const { return TypeEOS::IG; };
65 const int& getNumber() const { return m_number; };
66
70
75 double computeEnthalpy(const double& density, const double& pressure) const;
82 double computeTotalEnthalpy(const double& density, const double& pressure, const double& velX, const double& velY = 0., const double& velZ = 0.) const;
89 double computeTotalEnthalpy(const double& density, const double& pressure, const Coord& velocity) const;
92 const double& getMu() const { return m_mu; };
95 const double& getLambda() const { return m_lambda; };
98 void assignEpsilonForAlphaNull(bool alphaNull) const;
99
100 //Gereral methods for all EOS
101
102 //Virtual methods for child classes
104 virtual void assignParametersEos(std::string name, std::vector<double> parametersEos) = 0;
106 virtual double computeTemperature(const double& /*density*/, const double& /*pressure or energy*/) const { Errors::errorMessage("computeTemperature not yet programmed for EOS : " + m_name); return 0.; };
108 virtual double computeEnergy(const double& /*density*/, const double& /*pressure or temperature*/) const { Errors::errorMessage("computeEnergy not yet programmed for EOS : " + m_name); return 0.; };
110 virtual double computePressure(const double& /*density*/, const double& /*energy or temperature*/) const { Errors::errorMessage("computePressure not yet programmed for EOS : " + m_name); return 0.; };
112 virtual double computeDensity(const double& /*pressure*/, const double& /*temperature*/) const { Errors::errorMessage("computeDensity not yet programmed for EOS : " + m_name); return 0.; };
114 virtual double computeSoundSpeed(const double& /*density*/, const double& /*pressure*/) const { Errors::errorMessage("computeSoundSpeed not yet programmed for EOS : " + m_name); return 0.; };
116 virtual double computeInterfaceSoundSpeed(const double& /*density*/, const double& /*interfacePressure*/, const double& /*pressure*/) const { Errors::errorMessage("computeInterfaceSoundSpeed not yet programmed for EOS : " + m_name); return 0.; };
118 virtual double computeAcousticImpedance(const double& /*density*/, const double& /*pressure*/) const { Errors::errorMessage("computeAcousticImpedance not yet programmed for EOS : " + m_name); return 0.; };
120 virtual double computeDensityTimesInterfaceSoundSpeedSquare(const double& /*density*/, const double& /*interfacePressure*/, const double& /*pressure*/) const { Errors::errorMessage("computeDensityTimesInterfaceSoundSpeedSquare not yet programmed for EOS : " + m_name); return 0.; };
122 virtual double computeEntropy(const double& /*temperature*/, const double& /*pressure*/) const { Errors::errorMessage("computeEntropy not yet programmed for EOS : " + m_name); return 0.; };
124 virtual double computePressureIsentropic(const double& /*initialPressure*/, const double& /*initialDensity*/, const double& /*finalDensity*/) const { Errors::errorMessage("computePressureIsentropic not yet programmed for EOS : " + m_name); return 0.; };
126 virtual double computePressureHugoniot(const double& /*initialPressure*/, const double& /*initialDensity*/, const double& /*finalDensity*/) const { Errors::errorMessage("computePressureHugoniot not yet programmed for EOS : " + m_name); return 0.; };
128 virtual double computeDensityIsentropic(const double& /*initialPressure*/, const double& /*initialDensity*/, const double& /*finalPressure*/, double* /*drhodp*/ = 0) const { Errors::errorMessage("computeDensityIsentropic not yet programmed for EOS : " + m_name); return 0.; };
130 virtual double computeDensityHugoniot(const double& /*initialPressure*/, const double& /*initialDensity*/, const double& /*finalPressure*/, double* /*drhodp*/ = 0) const { Errors::errorMessage("computeDensityHugoniot not yet programmed for EOS : " + m_name); return 0.; };
132 virtual double computeDensityPfinal(const double& /*initialPressure*/, const double& /*initialDensity*/, const double& /*finalPressure*/, double* /*drhodp*/ = 0) const { Errors::errorMessage("computeDensityPfinal not yet programmed for EOS : " + m_name); return 0.; };
133
135 virtual double computeEnthalpyIsentropic(const double& /*initialPressure*/, const double& /*initialDensity*/, const double& /*finalPressure*/, double* /*dhdp*/ = 0) const { Errors::errorMessage("computeEnthalpyIsentropic not yet programmed for EOS : " + m_name); return 0.; };
137 virtual double computeDensitySaturation(const double& /*pressure*/, const double& /*Tsat*/, const double& /*dTsatdP*/, double* /*drhodp*/ = 0) const { Errors::errorMessage("computeDensitySaturation not yet programmed for EOS : " + m_name); return 0.; };
139 virtual double computeDensityEnergySaturation(const double& /*pressure*/, const double& /*rho*/, const double& /*drhodp*/, double* /*drhoedp*/ = 0) const { Errors::errorMessage("computeDensityEnergySaturation not available for EOS : " + m_name); return 0.; };
141 virtual void sendSpecialMixtureEos(double& /*gamPinfOverGamMinusOne*/, double& /*eRef*/, double& /*oneOverGamMinusOne*/, double& /*covolume*/) const { Errors::errorMessage("sendSpecialMixtureEos not yet programmed for EOS : " + m_name); };
143 virtual double vfpfh(const double& /*pressure*/, const double& /*enthalpy*/) const { Errors::errorMessage("vfpfh not yet programmed for EOS : " + m_name); return 0.; };
144
145 //Partial derivatives
147 virtual double dvdpch(const double& /*pressure*/, const double& /*enthalpy*/) const { Errors::errorMessage("dvdpch not yet programmed for EOS : " + m_name); return 0.; };
149 virtual double dvdhcp(const double& /*pressure*/) const { Errors::errorMessage("dvdhcp not yet programmed for EOS : " + m_name); return 0.; };
151 virtual double drhodpcT(const double& /*pressure*/, const double& /*temperature*/) const { Errors::errorMessage("drhodpcT not yet programmed for EOS : " + m_name); return 0.; };
153 virtual double dedrho(const double& /*density*/, const double& /*temperature*/) const { Errors::errorMessage("dedrho not yet programmed for EOS : " + m_name); return 0.; };
155 virtual double dedrhoSecond(const double& /*density*/, const double& /*temperature*/) const { Errors::errorMessage("dedrhoSecond not yet programmed for EOS : " + m_name); return 0.; };
156
157 //Checking..
158 virtual void verifyPressure(const double& /*pressure*/, const std::string& /*message*/ = " ") const { Errors::errorMessage("verifyPressure not yet programmed Eos : " + m_name); };
160 virtual void verifyAndModifyPressure(double& /*pressure*/) const { Errors::errorMessage("verifyAndModifyPressure not yet programmed Eos : "+ m_name); };
162 virtual void verifyAndCorrectDensityMax(const double& /*mass*/, double& /*alpha*/, double& /*density*/) const { Errors::errorMessage("verifyAndCorrectDensityMax not yet programmed Eos : "+ m_name); };
164 virtual void verifyAndCorrectDensityMax(double& /*density*/) const { Errors::errorMessage("verifyAndCorrectDensityMax not yet programmed Eos : "+ m_name); };
165
166 //Get
168 virtual const double& getGamma() const { return Errors::defaultDouble; };
170 virtual const double& getPInf() const { return Errors::defaultDouble; };
172 virtual const double& getCv() const { return Errors::defaultDouble; };
174 virtual const double& getERef() const { return Errors::defaultDouble; };
176 virtual const double& getSRef() const { return Errors::defaultDouble; };
177
178 protected:
180 std::string m_name;
181
182 double m_mu;
183 double m_lambda;
184};
185
186extern double epsilonAlphaNull;
187
188#endif // EOS_H
Coord velocity
Definition Coord.cpp:34
double epsilonAlphaNull
Epsilon value to avoid division by 0 when alpha = 0 is activated. If alpha = 0 desactivated,...
Definition Eos.cpp:35
TypeEOS
Enumeration for the type of EOS (IG: ideal gas, SG: stiffened gas, NASG: Noble-Abel stiffened gas,...
Definition Eos.h:40
@ NASG
Definition Eos.h:40
@ Polynomial
Definition Eos.h:40
@ VDW
Definition Eos.h:40
@ SG
Definition Eos.h:40
@ IG
Definition Eos.h:40
Class for a coordinate system object such as coordinates of the vertex or a vector.
Definition Coord.h:43
General class for Equation of State (EOS).
Definition Eos.h:54
virtual double computeDensityHugoniot(const double &, const double &, const double &, double *=0) const
See derived classes.
Definition Eos.h:130
double computeTotalEnthalpy(const double &density, const double &pressure, const double &velX, const double &velY=0., const double &velZ=0.) const
Compute the total enthalpy of the phase.
Definition Eos.cpp:74
virtual const double & getPInf() const
See derived classes.
Definition Eos.h:170
virtual const double & getCv() const
See derived classes.
Definition Eos.h:172
virtual double dedrho(const double &, const double &) const
See derived classes.
Definition Eos.h:153
const double & getLambda() const
get the thermal conductivity of the fluid return (Unit: W/(m.K)).
Definition Eos.h:95
const std::string & getName() const
Definition Eos.h:60
virtual double computePressureIsentropic(const double &, const double &, const double &) const
See derived classes.
Definition Eos.h:124
virtual double computeDensityPfinal(const double &, const double &, const double &, double *=0) const
See derived classes.
Definition Eos.h:132
void assignEpsilonForAlphaNull(bool alphaNull) const
Assign the epsilonAlphaNull value for alphaNull option (alpha = 0 => epsilonAlphaNull !...
Definition Eos.cpp:88
virtual const double & getSRef() const
See derived classes.
Definition Eos.h:176
virtual double dvdpch(const double &, const double &) const
See derived classes.
Definition Eos.h:147
virtual double computeEnergy(const double &, const double &) const
See derived classes.
Definition Eos.h:108
virtual void assignParametersEos(std::string name, std::vector< double > parametersEos)=0
See derived classes
virtual double computeDensityIsentropic(const double &, const double &, const double &, double *=0) const
See derived classes.
Definition Eos.h:128
double m_lambda
Thermal conductivity (W/(m.K))
Definition Eos.h:183
virtual const double & getGamma() const
See derived classes.
Definition Eos.h:168
virtual double dvdhcp(const double &) const
See derived classes.
Definition Eos.h:149
const double & getMu() const
Return the dynamic viscosity of the fluid return (Unit: Pa.s).
Definition Eos.h:92
virtual double computeDensityTimesInterfaceSoundSpeedSquare(const double &, const double &, const double &) const
See derived classes.
Definition Eos.h:120
virtual ~Eos()
Definition Eos.cpp:47
std::string m_name
Name of the equation of state.
Definition Eos.h:180
virtual double computeSoundSpeed(const double &, const double &) const
See derived classes.
Definition Eos.h:114
int m_number
Corresponding number of the equation of state.
Definition Eos.h:179
virtual void verifyPressure(const double &, const std::string &=" ") const
Definition Eos.h:158
virtual void verifyAndModifyPressure(double &) const
See derived classes.
Definition Eos.h:160
virtual void verifyAndCorrectDensityMax(const double &, double &, double &) const
See derived classes.
Definition Eos.h:162
void readPhysicalParameters(tinyxml2::XMLNode *element)
Read physical parameters (viscosity, thermal conductivity....)
Definition Eos.cpp:51
virtual double computeTemperature(const double &, const double &) const
See derived classes.
Definition Eos.h:106
virtual const double & getERef() const
See derived classes.
Definition Eos.h:174
double m_mu
Dynamic viscosity (kg/m/s or Pa.s)
Definition Eos.h:182
virtual double computePressure(const double &, const double &) const
See derived classes.
Definition Eos.h:110
virtual double computeInterfaceSoundSpeed(const double &, const double &, const double &) const
See derived classes.
Definition Eos.h:116
virtual double computeDensityEnergySaturation(const double &, const double &, const double &, double *=0) const
See derived classes.
Definition Eos.h:139
virtual double computeAcousticImpedance(const double &, const double &) const
See derived classes.
Definition Eos.h:118
double computeEnthalpy(const double &density, const double &pressure) const
Compute the enthalpy of the phase.
Definition Eos.cpp:67
virtual void sendSpecialMixtureEos(double &, double &, double &, double &) const
See derived classes.
Definition Eos.h:141
const int & getNumber() const
Return the number associated to the EOS.
Definition Eos.h:65
virtual double dedrhoSecond(const double &, const double &) const
See derived classes.
Definition Eos.h:155
virtual double vfpfh(const double &, const double &) const
See derived classes.
Definition Eos.h:143
virtual void verifyAndCorrectDensityMax(double &) const
See derived classes.
Definition Eos.h:164
virtual double computeEnthalpyIsentropic(const double &, const double &, const double &, double *=0) const
See derived classes.
Definition Eos.h:135
virtual double computePressureHugoniot(const double &, const double &, const double &) const
See derived classes.
Definition Eos.h:126
virtual double computeEntropy(const double &, const double &) const
See derived classes.
Definition Eos.h:122
virtual double computeDensity(const double &, const double &) const
See derived classes.
Definition Eos.h:112
virtual TypeEOS getType() const
See derived classes.
Definition Eos.h:62
virtual double drhodpcT(const double &, const double &) const
See derived classes.
Definition Eos.h:151
virtual double computeDensitySaturation(const double &, const double &, const double &, double *=0) const
See derived classes.
Definition Eos.h:137
static void errorMessage(const std::string &message)
Definition Errors.cpp:56
static constexpr double defaultDouble
Definition Errors.h:93
Definition tinyxml2.h:637