ECOGEN 4.0
Evolutive, Compressible, Open, Genuine, Easy, N-phase
Loading...
Searching...
No Matches
EosSG.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 EOSSG_H
32#define EOSSG_H
33
34#include "Eos.h"
35
38class EosSG : public Eos
39{
40 public:
41 EosSG(std::vector<std::string>& nameParameterEos, int& number);
42 virtual ~EosSG();
43
48 virtual void assignParametersEos(std::string name, std::vector<double> parametersEos);
49
50 //Constant methods (virtual because inherited from class Eos )
56 virtual double computeTemperature(const double& density,const double& pressure) const;
57
63 virtual double computeEnergy(const double& density,const double& pressure) const;
64
65
71 virtual double computePressure(const double& density,const double& energy) const;
72
78 virtual double computeDensity(const double& pressure, const double& temperature) const;
79
85 virtual double computeSoundSpeed(const double& density,const double& pressure) const;
86
93 virtual double computeInterfaceSoundSpeed(const double& density, const double& interfacePressure, const double& pressure) const;
94
100 virtual double computeAcousticImpedance(const double& density, const double& pressure) const;
101
108 virtual double computeDensityTimesInterfaceSoundSpeedSquare(const double& /*density*/, const double& interfacePressure, const double& pressure) const;
109
115 virtual double computeEntropy(const double& temperature, const double& pressure) const;
116
123 virtual double computePressureIsentropic(const double& initialPressure, const double& initialDensity, const double& finalDensity) const;
124
131 virtual double computePressureHugoniot(const double& initialPressure, const double& initialDensity, const double& finalDensity) const;
132
139 virtual double computeDensityIsentropic(const double& initialPressure, const double& initialDensity, const double& finalPressure, double* drhodp=0) const;
140
147 virtual double computeDensityHugoniot(const double& initialPressure, const double& initialDensity, const double& finalPressure, double* drhodp = 0) const;
148
155 virtual double computeDensityPfinal(const double& initialPressure, const double& initialDensity, const double& finalPressure, double* drhodp = 0) const;
156
163 virtual double computeEnthalpyIsentropic(const double& initialPressure, const double& initialDensity, const double& finalPressure, double* dhdp = 0) const;
164
171 virtual double computeDensitySaturation(const double& pressure, const double& Tsat, const double& dTsatdP, double* drhodp = 0) const;
172
173
180 virtual double computeDensityEnergySaturation(const double& pressure, const double& rho, const double& drhodp, double* drhoedp = 0) const;
181
186 virtual void sendSpecialMixtureEos(double& gamPinfOverGamMinusOne, double& eRef, double& oneOverGamMinusOne, double& covolume) const;
187
188
193 virtual double vfpfh(const double& pressure, const double& enthalpy) const;
194
195 //Partial derivatives
200 virtual double dvdpch(const double& pressure, const double& enthalpy) const;
204 virtual double dvdhcp(const double& pressure) const;
205
209 virtual double drhodpcT(const double& /*pressure*/, const double& temperature) const;
210
211 //Checking
216 virtual void verifyPressure(const double& pressure, const std::string& message = "") const;
220 virtual void verifyAndModifyPressure(double& pressure) const;
222 virtual void verifyAndCorrectDensityMax(const double& /*mass*/, double& /*alpha*/, double& /*density*/) const {};
224 virtual void verifyAndCorrectDensityMax(double& /*density*/) const {};
225
226 //Get
229 virtual const double& getGamma() const { return m_gamma; };
232 virtual const double& getPInf() const { return m_pInf; };
235 virtual const double& getCv() const { return m_cv; };
238 virtual const double& getERef() const { return m_eRef; };
241 virtual const double& getSRef() const { return m_sRef; };
244 virtual TypeEOS getType() const { return TypeEOS::SG; };
245
246 private:
247 double m_gamma;
248 double m_pInf;
249 double m_cv;
250 double m_eRef;
251 double m_sRef;
252};
253
254#endif // EOSSG_H
TypeEOS
Enumeration for the type of EOS (IG: ideal gas, SG: stiffened gas, NASG: Noble-Abel stiffened gas,...
Definition Eos.h:40
@ SG
Definition Eos.h:40
@ rho
Definition Tools.h:60
Class describing a stiffened gas equation of state.
Definition EosSG.h:39
virtual double drhodpcT(const double &, const double &temperature) const
compute the partial derivative of density versus pressure at constant temperature
Definition EosSG.cpp:239
virtual TypeEOS getType() const
Get the type that is to say the reduced name of the EOS in ECOGEN.
Definition EosSG.h:244
double m_sRef
Enthalpy of the fluid.
Definition EosSG.h:251
double m_pInf
Infinit (reference) pressure of the fluid.
Definition EosSG.h:248
virtual const double & getSRef() const
Get the entropy of reference of the fluid.
Definition EosSG.h:241
virtual void sendSpecialMixtureEos(double &gamPinfOverGamMinusOne, double &eRef, double &oneOverGamMinusOne, double &covolume) const
Send specific values of the parameters useful for mixture EOS based on Ideal Gas and Stiffened Gas.
Definition EosSG.cpp:208
virtual double computeEntropy(const double &temperature, const double &pressure) const
Compute entropy.
Definition EosSG.cpp:122
virtual double computeDensityTimesInterfaceSoundSpeedSquare(const double &, const double &interfacePressure, const double &pressure) const
Compute density times interface sound speed square.
Definition EosSG.cpp:115
virtual const double & getERef() const
Get the energy of reference of the fluid.
Definition EosSG.h:238
virtual void verifyAndCorrectDensityMax(double &) const
Do nothing for SG.
Definition EosSG.h:224
virtual const double & getPInf() const
Get the constant pressure.
Definition EosSG.h:232
virtual ~EosSG()
Definition EosSG.cpp:47
virtual double computeDensity(const double &pressure, const double &temperature) const
Compute density.
Definition EosSG.cpp:87
virtual double computePressureIsentropic(const double &initialPressure, const double &initialDensity, const double &finalDensity) const
Compute phase pressure along an isentropic path.
Definition EosSG.cpp:129
virtual double vfpfh(const double &pressure, const double &enthalpy) const
Compute the specific volume with the pressure and the enthalpy.
Definition EosSG.cpp:218
virtual double computeTemperature(const double &density, const double &pressure) const
Compute temperature.
Definition EosSG.cpp:66
virtual double dvdhcp(const double &pressure) const
Compute the partial derivative of the specific volume versus enthalpy at constant pressure.
Definition EosSG.cpp:232
virtual double computeDensityHugoniot(const double &initialPressure, const double &initialDensity, const double &finalPressure, double *drhodp=0) const
Compute density along the Hugoniot curve AND its derivature versus the pressure along Hugoniot curve.
Definition EosSG.cpp:152
virtual void assignParametersEos(std::string name, std::vector< double > parametersEos)
assign the values of the attributes for EosSG from data defined in the code
Definition EosSG.cpp:51
virtual double computeDensityIsentropic(const double &initialPressure, const double &initialDensity, const double &finalPressure, double *drhodp=0) const
Compute density along an isentropic path AND its derivature versus the pressure at constant entropy.
Definition EosSG.cpp:143
double m_eRef
Energy of reference of the fluid.
Definition EosSG.h:250
virtual double computeAcousticImpedance(const double &density, const double &pressure) const
Compute acoustic impedance.
Definition EosSG.cpp:108
virtual const double & getCv() const
Get the volume calorific energy of the fluid.
Definition EosSG.h:235
virtual double computeEnthalpyIsentropic(const double &initialPressure, const double &initialDensity, const double &finalPressure, double *dhdp=0) const
Compute enthalpy at the end of an isentropic path AND the enthalpy derivature versus the pressure.
Definition EosSG.cpp:174
virtual void verifyAndModifyPressure(double &pressure) const
Modify the pressure if its value is under a limit value equal to .
Definition EosSG.cpp:253
virtual double computeDensityPfinal(const double &initialPressure, const double &initialDensity, const double &finalPressure, double *drhodp=0) const
Compute density during relaxation step AND its derivative versus the pressure.
Definition EosSG.cpp:163
virtual const double & getGamma() const
Get the adiabatic exponent of the fluid.
Definition EosSG.h:229
virtual double computeSoundSpeed(const double &density, const double &pressure) const
Compute sound speed.
Definition EosSG.cpp:94
virtual double computeDensityEnergySaturation(const double &pressure, const double &rho, const double &drhodp, double *drhoedp=0) const
Compute the volumic internal energy at the saturation AND its derivative versus the pressure at const...
Definition EosSG.cpp:198
virtual double computeEnergy(const double &density, const double &pressure) const
Compute internal energy.
Definition EosSG.cpp:73
virtual double computePressure(const double &density, const double &energy) const
Compute pressure.
Definition EosSG.cpp:80
double m_cv
Volume calorific energy of the fluid.
Definition EosSG.h:249
virtual double computeDensitySaturation(const double &pressure, const double &Tsat, const double &dTsatdP, double *drhodp=0) const
Compute density on the saturation curve at the saturation temperature AND its derivative versus the p...
Definition EosSG.cpp:185
virtual void verifyAndCorrectDensityMax(const double &, double &, double &) const
Do nothing for SG.
Definition EosSG.h:222
virtual double dvdpch(const double &pressure, const double &enthalpy) const
Compute the partial derivative of the specific volume versus pressure at constant enthalpy.
Definition EosSG.cpp:225
virtual double computePressureHugoniot(const double &initialPressure, const double &initialDensity, const double &finalDensity) const
Compute pressure along the Hugoniot curve.
Definition EosSG.cpp:136
virtual double computeInterfaceSoundSpeed(const double &density, const double &interfacePressure, const double &pressure) const
Compute interface sound speed.
Definition EosSG.cpp:101
double m_gamma
Adiabatic exponent of the fluid.
Definition EosSG.h:247
virtual void verifyPressure(const double &pressure, const std::string &message="") const
Add a message error if the pressure is too low and under a limit value equal to .
Definition EosSG.cpp:246
General class for Equation of State (EOS).
Definition Eos.h:54