12#ifndef BELFEM_CL_GAS_HPP
13#define BELFEM_CL_GAS_HPP
318 bool aRemixHeat=
true,
319 bool aRemixTransport=
true );
325 bool aRemixHeat=
true,
326 bool aRemixTransport=
true );
619 const bool aRemixHeat=
true,
620 const bool aRemixTransport=
true );
863 create_eos(
const GasModel & aGasModel );
876 check_thermo_exists();
891 remix_critical_point();
901 create_reference_gases(
908 element_to_molecule(
const string & aElement )
const;
913 reference_element(
const string & aElement )
const ;
923 create_mass_properties(
const Vector<real> & aMolarFractions );
928 evaluate_viscosity_interaction(
const real T )
const ;
933 evaluate_conductivity_interaction(
const real T )
const ;
938 idgas_cp(
const real T,
const real p )
const ;
941 idgas_dcpdT(
const real T,
const real p )
const ;
944 idgas_cv(
const real T,
const real p )
const ;
947 idgas_gamma(
const real T,
const real p )
const ;
959 idgas_dsdT(
const real T,
const real p )
const ;
962 idgas_dsdp(
const real T,
const real p )
const ;
965 idgas_mu(
const real T,
const real p )
const ;
968 idgas_lambda(
const real T,
const real p )
const ;
973 realgas_cp(
const real T,
const real p )
const ;
976 realgas_dcpdT(
const real T,
const real p )
const ;
979 realgas_cv(
const real T,
const real p )
const ;
982 realgas_gamma(
const real T,
const real p )
const ;
985 realgas_c(
const real T,
const real p )
const ;
988 realgas_h(
const real T,
const real p )
const ;
991 realgas_s(
const real T,
const real p )
const ;
994 realgas_dsdT(
const real T,
const real p )
const ;
997 realgas_dsdp(
const real T,
const real p )
const ;
1000 realgas_mu(
const real T,
const real p )
const ;
1003 realgas_lambda(
const real T,
const real p )
const ;
1008 helmholtz_cp(
const real T,
const real p )
const ;
1011 helmholtz_dcpdT(
const real T,
const real p )
const ;
1014 helmholtz_cv(
const real T,
const real p )
const ;
1017 helmholtz_gamma(
const real T,
const real p )
const ;
1020 helmholtz_c(
const real T,
const real p )
const ;
1023 helmholtz_h(
const real T,
const real p )
const ;
1026 helmholtz_s(
const real T,
const real p )
const ;
1029 helmholtz_dsdT(
const real T,
const real p )
const ;
1032 helmholtz_dsdp(
const real T,
const real p )
const ;
1035 helmholtz_mu(
const real T,
const real p )
const ;
1038 helmholtz_lambda(
const real T,
const real p )
const ;
1044 cea_mu(
const real T )
const ;
1050 cea_lambda(
const real T )
const ;
1055 lambda_dep(
const real T,
const real p )
const ;
1066 link_to_idgas_property_functions();
1073 link_to_realgas_property_functions();
1079 link_to_helmholtz_property_functions();
1085 create_formation_table();
1097 prandtl_meyer_angle(
1100 const real &
u )
const ;
1106 shock_beta_simple(
const real T1,
1119 shock_beta(
const real T1,
1132 dhdp_idgas(
const real T,
const real p )
const ;
1138 dhdp_eos_departure(
const real T,
const real p )
const ;
1144 dhdp_differential_quotient(
const real T,
const real p )
const ;
1149 update_mixture_entropy();
1157 area_mach(
const real Ma,
const real k )
const ;
1167 area_guess(
const real T1,
1172 const bool aSupersonic,
1184 isentropic_duct(
const real & aMass,
1185 const real & aEntropy,
1186 const real & aEnergy,
1195 spline_col(
const real T )
const ;
1404 Gas::dhdp_idgas(
const real T,
const real p )
const
1413 Gas::dhdp_eos_departure(
const real T,
const real p )
const
1422 Gas::dhdp_differential_quotient(
const real T,
const real p )
const
1442 Gas::spline_col(
const real T )
const
1448 "Gas splines do not share a grid, the cached column cannot be reused" );
#define BELFEM_ASSERT(aCheck,...)
Definition assert.hpp:244
#define BELFEM_STATEVAL_M
Definition cl_GM_Statevals.hpp:21
#define BELFEM_STATEVAL_R
Definition cl_GM_Statevals.hpp:22
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
virtual real dsdp(const real T, const real p) const
Definition cl_Gas.cpp:1740
void remix_to_equilibrium(const real T, const real p, const bool aRemixHeat=true, const bool aRemixTransport=true)
remix to equilibrium
Definition cl_Gas.cpp:2129
virtual real c(const real T, const real p) const
Definition cl_Gas.cpp:1659
real lambda(const real T, const real p) const
thermal conductivity in W/(m*K)
Definition cl_Gas.cpp:1772
real(Gas::*) mFunctionLAMBDA(const real T, const real p) const
pointer to Lambda function
Definition cl_Gas.hpp:249
virtual real h(const real T, const real p) const
Definition cl_Gas.cpp:1692
gasmodels::EoS * eos()
expose state equation of a refgas
Definition cl_Gas.hpp:1276
virtual real cv(const real T, const real p) const
Definition cl_Gas.cpp:1627
SpMatrix mHelpMatrix
help matrix for remixing
Definition cl_Gas.hpp:123
Vector< real > mWorkVector
Definition cl_Gas.hpp:148
real(Gas::*) mFunctionC(const real T, const real p) const
pointer to c function
Definition cl_Gas.hpp:214
real kappa(const real T, const real p) const
isothermal compressibility coefficient
Definition cl_Gas.hpp:1332
const real & molar_fraction(const uint aIndex) const
return one single milar fraction
Definition cl_Gas.hpp:1228
const Matrix< real > & formation_table() const
expose the formation table, telling which component is built from which element
Definition cl_Gas.hpp:1268
Vector< real > mWorkVectorRAND0
Definition cl_Gas.hpp:155
const HelmholtzModel & helmholtz_model() const
which Helmholtz model this gas uses, if any
Definition cl_Gas.hpp:1396
real rho(const real T, const real p) const
Definition cl_Gas.cpp:1562
Cell< gastables::RefGas * > & components()
expose the component container
Definition cl_Gas.hpp:1252
void Hf(const real T, Vector< real > &aHf) const
return the molar formation enthalpy for each component
Definition cl_Gas.cpp:1833
Vector< real > mFormationWork
Definition cl_Gas.hpp:165
gasmodels::Statevals mStatevals
Definition cl_Gas.hpp:89
Cell< gastables::RefGas * > mViscosityInteractionRefgas
Interaction polynomials for viscosity.
Definition cl_Gas.hpp:140
real mVcrit
Definition cl_Gas.hpp:174
gasmodels::Statevals & statevals()
expose statevals object
Definition cl_Gas.hpp:1292
real mXi
Definition cl_Gas.hpp:180
Vector< real > mMassFractions
y or zeta
Definition cl_Gas.hpp:95
Matrix< real > mWorkMatrixRAND
Definition cl_Gas.hpp:158
Vector< real > mFlowResidual
Definition cl_Gas.hpp:256
Vector< real > mMolarFractions
x or chi
Definition cl_Gas.hpp:92
real(Gas::*) mFunctionDHDP(const real T, const real p) const
pointer to dhdp function
Definition cl_Gas.hpp:224
virtual real hd(const real T, const real p) const
Definition cl_Gas.cpp:1603
Matrix< uint > mViscosityInteractionTable
table telling if interaction parameter exists
Definition cl_Gas.hpp:143
void set_liquid_flag(const bool aFlag)
set the liquid flag.
Definition cl_Gas.hpp:1308
virtual real gamma(const real T, const real p) const
Definition cl_Gas.cpp:1643
real mWorkTemperature
Definition cl_Gas.hpp:161
real T(const real p, const real v) const
Definition cl_Gas.cpp:1570
void compute_equilibrium(const real T, const real p, Vector< real > &aX)
Definition cl_Gas.cpp:1939
virtual real dhdp(const real T, const real p) const
Definition cl_Gas.cpp:3955
Vector< real > mWorkVectorRAND1
Definition cl_Gas.hpp:156
Matrix< real > mFlowJacobian
scratch for the duct solvers, sized in initialize()
Definition cl_Gas.hpp:255
const real & mM
Molar Mass in kg/Mol.
Definition cl_Gas.hpp:104
Vector< real > mGaussWeights
Definition cl_Gas.hpp:261
Vector< real > mMolarFractions0
molar fractions at initialization
Definition cl_Gas.hpp:98
gasmodels::HelmholtzTransport * mTransport
special class, only needed if this is a helmholtz eos
Definition cl_Gas.hpp:189
Gas & operator=(const Gas &)=delete
Vector< real > mGaussPoints
Gauss rule for prandtl_meyer, allocated on first call.
Definition cl_Gas.hpp:260
Cell< string > mElementNames
Definition cl_Gas.hpp:116
Matrix< real > mWorkMatrix
Definition cl_Gas.hpp:147
gasmodels::EoS * mEoS
the equation of state
Definition cl_Gas.hpp:186
virtual void reset_mixture()
Definition cl_Gas.cpp:719
void total(const real T, const real p, const real &u, real &aTt, real &aPt) const
calculate the total state
Definition cl_Gas.cpp:2382
Spline mHeatSpline
Definition cl_Gas.hpp:126
real Pr(const real T, const real p) const
Prandtl Number.
Definition cl_Gas.cpp:1788
virtual real dsdT(const real T, const real p) const
Definition cl_Gas.cpp:1724
const Vector< real > & molar_fractions() const
expose the molar fractions
Definition cl_Gas.hpp:1211
virtual real M(const real T, const real p) const
Definition cl_Gas.cpp:736
Spline & viscosity_spline()
expose viscosity spline
Definition cl_Gas.hpp:1356
const real & mass_fraction(const uint aIndex) const
return one single mass fraction
Definition cl_Gas.hpp:1236
real isen_p(const real T0, const real p0, const real T1) const
get an isentropic pressure
Definition cl_Gas.cpp:2352
virtual real R(const real T, const real p) const
Definition cl_Gas.cpp:727
Cell< gastables::RefGas * > mComponents
Components of the mixgas.
Definition cl_Gas.hpp:110
const real & mR
Gas constant in J/(kg*K).
Definition cl_Gas.hpp:107
real p(const real T, const real v) const
Definition cl_Gas.cpp:1528
virtual void remix_mass(const Vector< real > &aMassFractions, bool aRemixHeat=true, bool aRemixTransport=true)
Definition cl_Gas.cpp:658
bool is_idgas() const
Definition cl_Gas.hpp:1203
real mMixtureEntropy
Definition cl_Gas.hpp:252
bool mLiquidFlag
liquid flag, written by Helmholtz::v() and read by EoS_Cubic::v()
Definition cl_Gas.hpp:183
Gas()
default constructor, creates air as idgas
Definition cl_Gas.cpp:46
gastables::GasData * data(const index_t aIndex)
expose the data object of a refgas
Definition cl_Gas.cpp:3840
real mu(const real T, const real p) const
dynamic viscosity in Pa*s
Definition cl_Gas.cpp:1756
bool is_liquid() const
test if the last evaluated state is liquid.
Definition cl_Gas.hpp:1300
uint mNumberOfComponents
size of components vector
Definition cl_Gas.hpp:85
gastables::RefGas *& component(const index_t aIndex)
expose one component
Definition cl_Gas.hpp:1260
const GasModel & gas_model() const
returns what gas model is used
Definition cl_Gas.hpp:1388
Spline mConductivitySpline
Definition cl_Gas.hpp:128
real(Gas::*) mFunctionH(const real T, const real p) const
pointer to h function
Definition cl_Gas.hpp:219
real mGamma
Definition cl_Gas.hpp:177
GasModel mGasModel
gasmodel type
Definition cl_Gas.hpp:134
void print() const
Definition cl_Gas.cpp:3766
const Vector< real > & mass_fractions() const
expose the mass fractions
Definition cl_Gas.hpp:1219
Cell< gastables::RefGas * > mExtra
Definition cl_Gas.hpp:120
real beta(const real T, const real p) const
isochoric stress coefficient
Definition cl_Gas.hpp:1324
real(Gas::*) mFunctionCv(const real T, const real p) const
pointer to cv function
Definition cl_Gas.hpp:204
void Gibbs(const real T, Vector< real > &aGibbs) const
return the molar Gibbs potential at reference pressure
Definition cl_Gas.cpp:1858
Vector< real > mWorkVector2
Definition cl_Gas.hpp:149
real prandtl_meyer(const real T1, const real p1, const real &u1, const real &alpha, real &T2, real &p2, real &u2) const
Prandtl-Meyer turn of a supersonic stream around a corner, for a thermally perfect ideal gas.
Definition cl_Gas.cpp:3373
Vector< int_t > mPivotRAND
Definition cl_Gas.hpp:159
Spline mViscositySpline
Definition cl_Gas.hpp:127
void shock(const real T1, const real p1, const real &u1, real &T2, real &p2, real &u2) const
perpendicular shock
Definition cl_Gas.cpp:3469
real(Gas::*) mFunctionDSDT(const real T, const real p) const
pointer to dsdT function
Definition cl_Gas.hpp:234
Vector< real > mMolarMasses
molar masses of components
Definition cl_Gas.hpp:101
void dGibbsdT(const real T, Vector< real > &aGibbs) const
return the temperature derivative of gibs potentia at reference pressure
Definition cl_Gas.cpp:1900
real alpha(const real T, const real p) const
thermal expansion coefficient
Definition cl_Gas.hpp:1316
virtual void remix(const Vector< real > &aMolarFractions, bool aRemixHeat=true, bool aRemixTransport=true)
Definition cl_Gas.cpp:627
virtual real cp(const real T, const real p) const
Definition cl_Gas.cpp:1586
virtual real dcpdT(const real T, const real p) const
Definition cl_Gas.cpp:1611
index_t mLastSplineCol
Definition cl_Gas.hpp:131
Matrix< real > mFormationTable
Definition cl_Gas.hpp:164
virtual real s(const real T, const real p) const
Definition cl_Gas.cpp:1708
real(Gas::*) mFunctionGamma(const real T, const real p) const
pointer to gamma function
Definition cl_Gas.hpp:209
real mTcrit
Definition cl_Gas.hpp:168
Vector< real > mWorkVectorRAND2
Definition cl_Gas.hpp:157
void compress(const real &A1, const real T1, const real p1, const real &u1, const real &A2, real &T2, real &p2, real &u2) const
compression of a gas into a narrowing duct, A2 <= A1
Definition cl_Gas.cpp:2819
real(Gas::*) mFunctionS(const real T, const real p) const
pointer to s function
Definition cl_Gas.hpp:229
Spline & conductivity_spline()
expose conductivity spline
Definition cl_Gas.hpp:1372
const uint & number_of_components() const
Definition cl_Gas.hpp:1284
real isen_T(const real T0, const real p0, const real p1) const
get an isentropic temperature
Definition cl_Gas.cpp:2312
Vector< real > mWorkMu
Definition cl_Gas.hpp:150
Vector< real > mWorkLambda
Definition cl_Gas.hpp:151
real(Gas::*) mFunctionMU(const real T, const real p) const
pointer to Mu function
Definition cl_Gas.hpp:244
real(Gas::*) mFunctiondCpdT(const real T, const real p) const
pointer to dcpdT function
Definition cl_Gas.hpp:199
virtual real u(const real T, const real p) const
Definition cl_Gas.cpp:1675
real T_from_h(const real &h, const real p) const
Definition cl_Gas.cpp:2221
Vector< int_t > mFlowPivot
Definition cl_Gas.hpp:257
real(Gas::*) mFunctionCp(const real T, const real p) const
pointer to cp function
Definition cl_Gas.hpp:194
Spline & heat_spline()
expose heat spline
Definition cl_Gas.hpp:1340
void expand(const real &A1, const real T1, const real p1, const real &u1, const real &A2, real &T2, real &p2, real &u2) const
expansion of a gas into a widening duct, A2 >= A1
Definition cl_Gas.cpp:2646
real(Gas::*) mFunctionDSDP(const real T, const real p) const
pointer to dsdp function
Definition cl_Gas.hpp:239
Cell< gastables::RefGas * > & elements()
expose the element container
Definition cl_Gas.hpp:1244
Cell< gastables::RefGas * > mElements
Definition cl_Gas.hpp:114
real v(const real T, const real p) const
Definition cl_Gas.cpp:1546
real mLastSplineT
Definition cl_Gas.hpp:130
real mPcrit
Definition cl_Gas.hpp:171
HelmholtzModel mHelmholzModel
helmholz type, if used
Definition cl_Gas.hpp:137
Dense column-major matrix.
Definition cl_BZ_Matrix.hpp:28
Sparse matrix in CSR or CSC format.
Definition cl_SpMatrix.hpp:52
Cubic spline on a uniform grid, C2, with natural, parabolic or clamped boundary conditions.
Definition cl_Spline.hpp:45
index_t find_col(const real aX) const
Definition cl_Spline.hpp:443
real x_min() const
Definition cl_Spline.hpp:403
real x_max() const
Definition cl_Spline.hpp:411
Column vector.
Definition cl_BZ_Vector.hpp:41
virtual class for equation of state
Definition cl_GM_EoS.hpp:34
virtual real alpha(const real T, const real p) const
thermal expansion coefficient
Definition cl_GM_EoS.cpp:42
virtual real beta(const real T, const real p) const
isochoric stress coefficient
Definition cl_GM_EoS.cpp:51
virtual real dhdepdp(const real T, const real p) const
Definition cl_GM_EoS.cpp:216
virtual real h(const real T, const real p) const
Definition cl_GM_EoS.cpp:77
virtual real kappa(const real T, const real p) const
isothermal compressibility coefficient
Definition cl_GM_EoS.cpp:60
Base class for the transport properties of a Helmholtz fluid.
Definition cl_GM_HelmholtzTransport.hpp:42
The per state property cache of a Gas.
Definition cl_GM_Statevals.hpp:87
const real & get(const index_t aIndex) const
get a value of the state
Definition cl_GM_Statevals.hpp:232
The per species property record: the scalar data that describe a gas but do not depend on the state.
Definition cl_GT_GasData.hpp:58
Builds RefGas objects from the shipped data tables.
Definition cl_GT_RefGasFactory.hpp:59
A single chemical species with its caloric and transport properties.
Definition cl_GT_RefGas.hpp:76
USER GUIDES:
Definition cl_Capacitor.cpp:16
HelmholtzModel
Definition en_Helmholtz.hpp:18
@ UNDEFINED
Definition en_Helmholtz.hpp:25
@ T
Definition cl_Material.hpp:122
unsigned int uint
Definition typedefs.hpp:30
uint32_t index_t
Definition typedefs.hpp:52
double real
Definition typedefs.hpp:36
GasModel
Definition en_GM_GasModel.hpp:18
@ IDGAS
Definition en_GM_GasModel.hpp:19
@ UNDEFINED
Definition en_GM_GasModel.hpp:23
#define BELFEM_UINT_MAX
Definition typedefs.hpp:80
#define BELFEM_REAL_MAX
Definition typedefs.hpp:81
#define BELFEM_QUIET_NAN
Definition typedefs.hpp:87