Salome HOME
Updated GUI documentation
[tools/solverlab.git] / CoreFlows / Models / inc / EOS / StiffenedGas.hxx
1 #ifndef STIFFENEDGAS_H
2 #define STIFFENEDGAS_H
3
4 #include <string>
5 #include "math.h"
6 #include "CdmathException.hxx"
7 #include "Fluide.h"
8
9 /*! \class StiffenedGas StiffenedGas.hxx "StiffenedGas.hxx"
10  *  \brief Stiffened Gas law approximating water and steam : P = (gamma - 1) * (rho * e - rho * q) - gamma * p0
11  *  \details Provides pressure, density, temperature, internal energy, enthalpy, viscosity and conductivity 
12  */
13
14 using namespace std;
15
16 // A standard stiffened gas class
17
18 /*! \class StiffenedGas Fluide.hxx "Fluide.hxx"
19  *  \brief Class implementing a standard stiffened gas law between pressure, density and internal energy
20  *  \details  
21  */
22 class StiffenedGas:public Fluide{
23  private:
24   double  _e_ref;//Stiffened gas law : P=(gamma - 1) * rho e(T) - _gamma*_p0
25  public:
26   StiffenedGas():Fluide(){_e_ref=0;};
27   //Perfect gas EOS
28   StiffenedGas( double gamma, double cv, double T_ref, double e_ref);
29   //Stiffened gas law fitting reference pressure, density and sound speed
30   StiffenedGas(double rho_ref, double p_ref, double T_ref, double e_ref, double soundSpeed_ref, double heatCap_ref);
31
32   double getInternalEnergy(double T, double rho=0);
33   double getEnthalpy(double T, double rho);
34   double getTemperatureFromPressure(double  p, double rho);
35   double getTemperatureFromEnthalpy(const double  h, const double rho);
36   double getDensity(double p, double T);
37
38   // Functions used to compute the Roe matrix for the five equation model (Kieu)
39   /* get differential of the density rho = rho(P,e)
40    * wrt the pressure (const e) wrt the internal energy (const P) */
41   double getJumpDensPress(const double e_l, const double e_r);
42   double getJumpDensInternalEnergy(const double p_l,const double p_r,const double e_l,const double e_r);
43   double getJumpInternalEnergyTemperature();
44   double getDiffDensPress(const double e);
45   double getDiffDensInternalEnergy(const double p,const double e);
46   double getDiffInternalEnergyTemperature();
47   /* get differential of the density rho = rho(P,h)
48      * wrt the pressure (const h) wrt the enthalpy (const P) */
49   double getDiffDensEnthalpyPressconstant(const double p, const double h);
50   double getDiffDensPressEnthalpyconstant(const double h);
51 };
52
53 // S. Dellacherie stiffened gas class
54
55 /*! \class StiffenedGasDellacherie Fluide.hxx "Fluide.hxx"
56  *  \brief Class implementing a particular stiffened gas law including saturation properties
57  *  \details
58  */
59 class StiffenedGasDellacherie:public Fluide{
60  private:
61   double _h_ref;//Stiffened gas law according to S. Dellacherie : P=(gamma - 1) * rho (e(T)-q) - _gamma*_p0
62  public:
63   StiffenedGasDellacherie():Fluide(){_h_ref=0;};
64   /* Loi des gaz raidis avec coefficients imposés suivant S. Dellacherie*/
65   StiffenedGasDellacherie( double gamma, double p0, double q, double cv);
66
67   double getInternalEnergy(double T, double rho);
68   double getEnthalpy(double T, double rho=0);
69   double getTemperatureFromPressure(double  p, double rho);
70   double getTemperatureFromEnthalpy(const double  h, const double rho=0);
71   double getDensity(double p, double T);
72
73  };
74
75 #endif