Line data Source code
1 : //* This file is part of the MOOSE framework
2 : //* https://mooseframework.inl.gov
3 : //*
4 : //* All rights reserved, see COPYRIGHT for full restrictions
5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 : //*
7 : //* Licensed under LGPL 2.1, please see LICENSE for details
8 : //* https://www.gnu.org/licenses/lgpl-2.1.html
9 :
10 : #pragma once
11 :
12 : #include "SinglePhaseFluidProperties.h"
13 : #include "NaNInterface.h"
14 :
15 : #pragma GCC diagnostic push
16 : #pragma GCC diagnostic ignored "-Woverloaded-virtual"
17 :
18 : /**
19 : * Ideal gas fluid properties
20 : * Default parameters are for air at atmospheric pressure and temperature
21 : */
22 : class IdealGasFluidProperties : public SinglePhaseFluidProperties, public NaNInterface
23 : {
24 : public:
25 : static InputParameters validParams();
26 :
27 : IdealGasFluidProperties(const InputParameters & parameters);
28 : virtual ~IdealGasFluidProperties();
29 :
30 : using SinglePhaseFluidProperties::cp_from_p_T;
31 : using SinglePhaseFluidProperties::cv_from_p_T;
32 : using SinglePhaseFluidProperties::e_from_p_T;
33 : using SinglePhaseFluidProperties::k_from_p_T;
34 : using SinglePhaseFluidProperties::mu_from_p_T;
35 : using SinglePhaseFluidProperties::s_from_p_T;
36 :
37 : virtual Real p_from_v_e(Real v, Real e) const override;
38 : virtual ADReal p_from_v_e(const ADReal & v, const ADReal & e) const override;
39 : virtual void p_from_v_e(Real v, Real e, Real & p, Real & dp_dv, Real & dp_de) const override;
40 : virtual void p_from_v_e(const ADReal & v,
41 : const ADReal & e,
42 : ADReal & p,
43 : ADReal & dp_dv,
44 : ADReal & dp_de) const override;
45 : virtual Real T_from_v_e(Real v, Real e) const override;
46 : virtual ADReal T_from_v_e(const ADReal & v, const ADReal & e) const override;
47 : virtual void T_from_v_e(Real v, Real e, Real & T, Real & dT_dv, Real & dT_de) const override;
48 : virtual void T_from_v_e(const ADReal & v,
49 : const ADReal & e,
50 : ADReal & T,
51 : ADReal & dT_dv,
52 : ADReal & dT_de) const override;
53 : virtual Real c_from_v_e(Real v, Real e) const override;
54 : virtual ADReal c_from_v_e(const ADReal & v, const ADReal & e) const override;
55 : virtual void c_from_v_e(Real v, Real e, Real & c, Real & dc_dv, Real & dc_de) const override;
56 : virtual Real cp_from_v_e(Real v, Real e) const override;
57 : virtual void cp_from_v_e(Real v, Real e, Real & cp, Real & dcp_dv, Real & dcp_de) const override;
58 : virtual Real cv_from_v_e(Real v, Real e) const override;
59 : virtual void cv_from_v_e(Real v, Real e, Real & cv, Real & dcv_dv, Real & dcv_de) const override;
60 : virtual Real mu_from_v_e(Real v, Real e) const override;
61 : virtual void mu_from_v_e(Real v, Real e, Real & mu, Real & dmu_dv, Real & dmu_de) const override;
62 : virtual Real k_from_v_e(Real v, Real e) const override;
63 : virtual void k_from_v_e(Real v, Real e, Real & k, Real & dk_dv, Real & dk_de) const override;
64 : virtual Real s_from_v_e(Real v, Real e) const override;
65 : virtual void s_from_v_e(Real v, Real e, Real & s, Real & ds_dv, Real & ds_de) const override;
66 : virtual Real s_from_p_T(Real p, Real T) const override;
67 : virtual void s_from_p_T(Real p, Real T, Real & s, Real & ds_dp, Real & ds_dT) const override;
68 : virtual Real s_from_h_p(Real h, Real p) const override;
69 : virtual void s_from_h_p(Real h, Real p, Real & s, Real & ds_dh, Real & ds_dp) const override;
70 : virtual Real rho_from_p_s(Real p, Real s) const override;
71 : virtual void
72 : rho_from_p_s(Real p, Real s, Real & rho, Real & drho_dp, Real & drho_ds) const override;
73 : virtual Real e_from_v_h(Real v, Real h) const override;
74 : virtual void e_from_v_h(Real v, Real h, Real & e, Real & de_dv, Real & de_dh) const override;
75 : virtual Real rho_from_p_T(Real p, Real T) const override;
76 : virtual ADReal rho_from_p_T(const ADReal & p, const ADReal & T) const override;
77 : virtual void
78 : rho_from_p_T(Real p, Real T, Real & rho, Real & drho_dp, Real & drho_dT) const override;
79 : virtual void rho_from_p_T(const ADReal & p,
80 : const ADReal & T,
81 : ADReal & rho,
82 : ADReal & drho_dp,
83 : ADReal & drho_dT) const override;
84 : virtual Real e_from_p_rho(Real p, Real rho) const override;
85 : virtual ADReal e_from_p_rho(const ADReal & p, const ADReal & rho) const override;
86 : virtual void
87 : e_from_p_rho(Real p, Real rho, Real & e, Real & de_dp, Real & de_drho) const override;
88 : virtual void e_from_p_rho(const ADReal & p,
89 : const ADReal & rho,
90 : ADReal & e,
91 : ADReal & de_dp,
92 : ADReal & de_drho) const override;
93 : virtual Real e_from_T_v(Real T, Real v) const override;
94 : virtual void e_from_T_v(Real T, Real v, Real & e, Real & de_dT, Real & de_dv) const override;
95 : virtual ADReal e_from_T_v(const ADReal & T, const ADReal & v) const override;
96 : virtual void e_from_T_v(const ADReal & T,
97 : const ADReal & v,
98 : ADReal & e,
99 : ADReal & de_dT,
100 : ADReal & de_dv) const override;
101 : virtual Real p_from_T_v(Real T, Real v) const override;
102 : virtual void p_from_T_v(Real T, Real v, Real & p, Real & dp_dT, Real & dp_dv) const override;
103 : virtual Real h_from_T_v(Real T, Real v) const override;
104 : virtual void h_from_T_v(Real T, Real v, Real & h, Real & dh_dT, Real & dh_dv) const override;
105 : virtual Real s_from_T_v(Real T, Real v) const override;
106 : virtual void s_from_T_v(Real T, Real v, Real & s, Real & ds_dT, Real & ds_dv) const override;
107 : virtual Real cv_from_T_v(Real T, Real v) const override;
108 : virtual Real e_spndl_from_v(Real v) const override;
109 : virtual void v_e_spndl_from_T(Real T, Real & v, Real & e) const override;
110 : virtual Real h_from_p_T(Real p, Real T) const override;
111 : virtual void h_from_p_T(Real p, Real T, Real & h, Real & dh_dp, Real & dh_dT) const override;
112 : virtual Real e_from_p_T(Real p, Real T) const override;
113 : virtual void e_from_p_T(Real p, Real T, Real & e, Real & de_dp, Real & de_dT) const override;
114 : virtual Real p_from_h_s(Real h, Real s) const override;
115 : virtual void p_from_h_s(Real h, Real s, Real & p, Real & dp_dh, Real & dp_ds) const override;
116 : virtual Real g_from_v_e(Real v, Real e) const override;
117 : virtual Real T_from_p_h(Real p, Real h) const override;
118 : virtual void T_from_p_h(Real p, Real h, Real & T, Real & dT_dp, Real & dT_dh) const override;
119 : virtual Real cv_from_p_T(Real p, Real T) const override;
120 : virtual void cv_from_p_T(Real p, Real T, Real & cv, Real & dcv_dp, Real & dcv_dT) const override;
121 : virtual Real cp_from_p_T(Real p, Real T) const override;
122 : virtual void cp_from_p_T(Real p, Real T, Real & cp, Real & dcp_dp, Real & dcp_dT) const override;
123 : virtual Real mu_from_p_T(Real p, Real T) const override;
124 : virtual void mu_from_p_T(Real p, Real T, Real & mu, Real & dmu_dp, Real & dmu_dT) const override;
125 : virtual Real k_from_p_T(Real pressure, Real temperature) const override;
126 : virtual void
127 : k_from_p_T(Real pressure, Real temperature, Real & k, Real & dk_dp, Real & dk_dT) const override;
128 : virtual std::string fluidName() const override;
129 : virtual Real molarMass() const override;
130 : virtual Real criticalTemperature() const override;
131 : virtual Real criticalDensity() const override;
132 : virtual Real criticalInternalEnergy() const override;
133 : virtual Real gamma_from_v_e(Real v, Real e) const override;
134 : virtual Real gamma_from_p_T(Real p, Real T) const override;
135 : virtual Real c_from_p_T(Real p, Real T) const override;
136 : virtual ADReal c_from_p_T(const ADReal & p, const ADReal & T) const override;
137 : virtual void c_from_p_T(Real /*p*/, Real T, Real & c, Real & dc_dp, Real & dc_dT) const override;
138 : virtual Real beta_from_p_T(Real p, Real T) const override;
139 : virtual ADReal beta_from_p_T(const ADReal & p, const ADReal & T) const override;
140 : virtual void
141 : beta_from_p_T(Real p, Real T, Real & beta, Real & dbeta_dp, Real & dbeta_dT) const override;
142 :
143 : virtual Real pp_sat_from_p_T(Real /*p*/, Real /*T*/) const override;
144 :
145 6 : Real referenceSpecificInternalEnergy() const { return _e_ref; }
146 :
147 : // Methods used by Navier-Stokes module
148 0 : virtual Real gamma() const { return _gamma; };
149 0 : virtual Real cv() const { return _cv; };
150 0 : virtual Real cp() const { return _cp; };
151 :
152 : protected:
153 : /// Adiabatic index (ratio of specific heats cp/cv)
154 : const Real & _gamma;
155 : /// molar mass
156 : const Real & _molar_mass;
157 : /// Reference specific internal energy
158 : const Real & _e_ref;
159 :
160 : /// Specific gas constant (R / molar mass)
161 : const Real _R_specific;
162 : /// Specific heat at constant pressure
163 : const Real _cp;
164 : /// Specific heat at constant volume
165 : const Real _cv;
166 :
167 : /// Dynamic viscosity
168 : const Real _mu;
169 : /// Thermal conductivity
170 : const Real _k;
171 :
172 : // properties at critical point (used by IdealRealGasMixtureFluidProperties (primary component))
173 : Real _T_c;
174 : Real _rho_c;
175 : Real _e_c;
176 : };
177 :
178 : #pragma GCC diagnostic pop
|