ECOGEN 6.0
Evolutive, Compressible, Open, Genuine, Easy, N-phase
Loading...
Searching...
No Matches
EosNASG.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 EOSNASG_H
32#define EOSNASG_H
33
34#include "Eos.h"
35
38class EosNASG : public Eos
39{
40 public:
41 EosNASG(std::vector<std::string>& nameParameterEos, int& number);
42 ~EosNASG() override;
43
48 void assignParametersEos(std::string name, std::vector<double> parametersEos) override;
49
50 //Constant methods (virtual because inherited from class Eos)
56 double computeTemperature(const double& density, const double& pressure) const override;
57
63 double computeEnergy(const double& density, const double& pressure) const override;
64
70 double computePressure(const double& density, const double& energy) const override;
71
77 double computeDensity(const double& pressure, const double& temperature) const override;
78
84 double computeSoundSpeed(const double& density, const double& pressure) const override;
85
92 double computeInterfaceSoundSpeed(const double& density, const double& interfacePressure, const double& pressure) const override;
93
99 double computeAcousticImpedance(const double& density, const double& pressure) const override;
100
107 double computeDensityTimesInterfaceSoundSpeedSquare(const double& density, const double& interfacePressure, const double& pressure) const override;
108
114 double computeEntropy(const double& temperature, const double& pressure) const override;
115
122 double computePressureIsentropic(const double& initialPressure, const double& initialDensity, const double& finalDensity) const override;
123
130 double computePressureHugoniot(const double& initialPressure, const double& initialDensity, const double& finalDensity) const override;
131
138 double computeDensityIsentropic(const double& initialPressure,
139 const double& initialDensity,
140 const double& finalPressure,
141 double* drhodp = 0) const override;
142
149 double computeDensityHugoniot(const double& initialPressure,
150 const double& initialDensity,
151 const double& finalPressure,
152 double* drhodp = 0) const override;
153
160 double
161 computeDensityPfinal(const double& initialPressure, const double& initialDensity, const double& finalPressure, double* drhodp = 0) const override;
162
169 double computeEnthalpyIsentropic(const double& initialPressure,
170 const double& initialDensity,
171 const double& finalPressure,
172 double* dhdp = 0) const override;
173
180 double computeDensitySaturation(const double& pressure, const double& Tsat, const double& dTsatdP, double* drhodp = 0) const override;
181
188 double computeDensityEnergySaturation(const double& pressure, const double& rho, const double& drhodp, double* drhoedp = 0) const override;
189
194 void sendSpecialMixtureEos(double& gamPinfOverGamMinusOne, double& eRef, double& oneOverGamMinusOne, double& covolume) const override;
195
200 double vfpfh(const double& pressure, const double& enthalpy) const override;
201
202 //Partial derivatives
207 double dvdpch(const double& pressure, const double& enthalpy) const override;
208
212 double dvdhcp(const double& pressure) const override;
213
218 double drhodpcT(const double& pressure, const double& temperature) const override;
219
220 //Checking
225 void verifyPressure(const double& pressure, const std::string& message = "") const override;
229 void verifyAndModifyPressure(double& pressure) const override;
234 void verifyAndCorrectDensityMax(const double& mass, double& alpha, double& density) const override;
237 void verifyAndCorrectDensityMax(double& density) const override;
238
239 //Get
242 const double& getGamma() const override { return m_gamma; };
245 const double& getPInf() const override { return m_pInf; };
248 const double& getCv() const override { return m_cv; };
251 const double& getERef() const override { return m_eRef; };
254 const double& getSRef() const override { return m_sRef; };
257 virtual const double& getB() const { return m_b; };
258
261 TypeEOS getType() const override { return TypeEOS::NASG; };
262
263 private:
264 double m_gamma;
265 double m_pInf;
266 double m_b;
267 double m_cv;
268 double m_eRef;
269 double m_sRef;
270};
271
272#endif // EOSNASG_H
TypeEOS
Enumeration for the type of EOS (IG: ideal gas, SG: stiffened gas, NASG: Noble-Abel stiffened gas,...
Definition Eos.h:41
@ NASG
Definition Eos.h:44
@ rho
Definition Tools.h:108
@ alpha
Definition Tools.h:167
@ density
Definition Tools.h:166
@ pressure
Definition Tools.h:165
@ temperature
Definition Tools.h:172
double m_cv
Volume calorific energy of the fluid.
Definition EosNASG.h:267
double computePressureHugoniot(const double &initialPressure, const double &initialDensity, const double &finalDensity) const override
Compute pressure along the Hugoniot curve.
Definition EosNASG.cpp:141
double computeDensityPfinal(const double &initialPressure, const double &initialDensity, const double &finalPressure, double *drhodp=0) const override
Compute density during relaxation step AND its derivative versus the pressure.
Definition EosNASG.cpp:176
const double & getPInf() const override
Get the constant pressure.
Definition EosNASG.h:245
double m_pInf
Infinit (reference) pressure of the fluid.
Definition EosNASG.h:265
double dvdhcp(const double &pressure) const override
Compute the partial derivative of the specific volume versus enthalpy at constant pressure.
Definition EosNASG.cpp:253
double computeTemperature(const double &density, const double &pressure) const override
Compute temperature.
Definition EosNASG.cpp:68
const double & getCv() const override
Get the volume calorific energy of the fluid.
Definition EosNASG.h:248
virtual const double & getB() const
Get the covolume of the fluid.
Definition EosNASG.h:257
double m_eRef
Energy of reference of the fluid.
Definition EosNASG.h:268
const double & getSRef() const override
Get the entropy of reference of the fluid.
Definition EosNASG.h:254
double computeEnthalpyIsentropic(const double &initialPressure, const double &initialDensity, const double &finalPressure, double *dhdp=0) const override
Compute enthalpy at the end of an isentropic path AND the enthalpy derivature versus the pressure.
Definition EosNASG.cpp:189
const double & getGamma() const override
Get the adiabatic exponent of the fluid.
Definition EosNASG.h:242
double computeDensitySaturation(const double &pressure, const double &Tsat, const double &dTsatdP, double *drhodp=0) const override
Compute density on the saturation curve at the saturation temperature AND its derivative versus the p...
Definition EosNASG.cpp:202
void verifyPressure(const double &pressure, const std::string &message="") const override
Add a message error if the pressure is too low and under a limit value equal to .
Definition EosNASG.cpp:265
void verifyAndModifyPressure(double &pressure) const override
Modify the pressure if its value is under a limit value equal to .
Definition EosNASG.cpp:272
double drhodpcT(const double &pressure, const double &temperature) const override
Compute the partial derivative of density versus pressure at constant temperature.
Definition EosNASG.cpp:257
double computeSoundSpeed(const double &density, const double &pressure) const override
Compute sound speed.
Definition EosNASG.cpp:97
double computeDensity(const double &pressure, const double &temperature) const override
Compute density.
Definition EosNASG.cpp:90
double m_sRef
Entropy of the fluid.
Definition EosNASG.h:269
double computeDensityEnergySaturation(const double &pressure, const double &rho, const double &drhodp, double *drhoedp=0) const override
Compute the volumic internal energy at the saturation AND its derivative versus the pressure at const...
Definition EosNASG.cpp:216
double computeAcousticImpedance(const double &density, const double &pressure) const override
Compute acoustic impedance.
Definition EosNASG.cpp:111
void assignParametersEos(std::string name, std::vector< double > parametersEos) override
assign the values of the attributes for EosNASG from data defined in the code
Definition EosNASG.cpp:53
void verifyAndCorrectDensityMax(const double &mass, double &alpha, double &density) const override
Modify the density if its value is above a limit value equal to and then correct the volume fraction...
Definition EosNASG.cpp:279
EosNASG(std::vector< std::string > &nameParameterEos, int &number)
Definition EosNASG.cpp:37
double computeDensityIsentropic(const double &initialPressure, const double &initialDensity, const double &finalPressure, double *drhodp=0) const override
Compute density along an isentropic path AND its derivature versus the pressure at constant entropy.
Definition EosNASG.cpp:151
~EosNASG() override
Definition EosNASG.cpp:49
double computeDensityHugoniot(const double &initialPressure, const double &initialDensity, const double &finalPressure, double *drhodp=0) const override
Compute density along the Hugoniot curve AND its derivature versus the pressure along Hugoniot curve.
Definition EosNASG.cpp:163
double computeDensityTimesInterfaceSoundSpeedSquare(const double &density, const double &interfacePressure, const double &pressure) const override
Compute density times interface sound speed square.
Definition EosNASG.cpp:118
double computeInterfaceSoundSpeed(const double &density, const double &interfacePressure, const double &pressure) const override
Compute interface sound speed.
Definition EosNASG.cpp:104
double dvdpch(const double &pressure, const double &enthalpy) const override
Compute the partial derivative of the specific volume versus pressure at constant enthalpy.
Definition EosNASG.cpp:245
TypeEOS getType() const override
Get the type that is to say the reduced name of the EOS in ECOGEN return .
Definition EosNASG.h:261
double computePressureIsentropic(const double &initialPressure, const double &initialDensity, const double &finalDensity) const override
Compute phase pressure along an isentropic path.
Definition EosNASG.cpp:132
double vfpfh(const double &pressure, const double &enthalpy) const override
Compute the specific volume with the pressure and the enthalpy.
Definition EosNASG.cpp:238
double m_b
Covolume of the fluid.
Definition EosNASG.h:266
double computeEnergy(const double &density, const double &pressure) const override
Compute internal energy.
Definition EosNASG.cpp:75
double computeEntropy(const double &temperature, const double &pressure) const override
Compute entropy.
Definition EosNASG.cpp:125
double m_gamma
Adiabatic exponent of the fluid.
Definition EosNASG.h:264
double computePressure(const double &density, const double &energy) const override
Compute pressure.
Definition EosNASG.cpp:83
void sendSpecialMixtureEos(double &gamPinfOverGamMinusOne, double &eRef, double &oneOverGamMinusOne, double &covolume) const override
Send specific values of the parameters useful for mixture EOS based on Ideal Gas and Stiffened Gas.
Definition EosNASG.cpp:228
const double & getERef() const override
Get the energy of reference of the fluid.
Definition EosNASG.h:251
Eos(int &number)
Definition Eos.cpp:39