https://mooseframework.inl.gov
Loading...
Searching...
No Matches
LinearFluidProperties.C
Go to the documentation of this file.
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
11
13
16{
18 params.addRequiredParam<Real>("p_0", "Reference pressure");
19 params.addRequiredParam<Real>("rho_0", "Reference density");
20 params.addRequiredParam<Real>("a2", "dp/d(rho)");
21 params.addRequiredParam<Real>("beta", "Coefficient of thermal expansion");
22 params.addRequiredParam<Real>("cv", "Specific heat");
23 params.addRequiredParam<Real>("e_0", "Reference internal energy");
24 params.addRequiredParam<Real>("T_0", "Reference internal energy");
25 params.addRequiredParam<Real>("mu", "Dynamic viscosity, Pa.s");
26 params.addRequiredParam<Real>("k", "Thermal conductivity, W/(m-K)");
28 "Fluid properties for a fluid with density linearly dependent on temperature and pressure");
29 return params;
30}
31
33 : SinglePhaseFluidProperties(parameters),
34 _rho_0(getParam<Real>("rho_0")),
35 _p_0(getParam<Real>("p_0")),
36 _a2(getParam<Real>("a2")),
37 _beta(getParam<Real>("beta")),
38 _cv(getParam<Real>("cv")),
39 _e_0(getParam<Real>("e_0")),
40 _T_0(getParam<Real>("T_0")),
41 _mu(getParam<Real>("mu")),
42 _k(getParam<Real>("k")),
43 _Pr(_cv / _k * _mu)
44{
45}
46
47Real
49{
50 return _p_0 + _rho_0 * _a2 * ((1 / v / _rho_0 - 1.) + (_beta / _cv) * (e - _e_0));
51}
52
53void
54LinearFluidProperties::p_from_v_e(Real v, Real e, Real & p, Real & dp_dv, Real & dp_de) const
55{
56 p = p_from_v_e(v, e);
57 dp_dv = -_a2 / v / v;
58 dp_de = _rho_0 * _a2 * _beta / _cv;
59}
60
61Real
62LinearFluidProperties::T_from_v_e(Real /*v*/, Real e) const
63{
64 // e - e0 = cv * (T - T0)
65 return _T_0 + (1. / _cv) * (e - _e_0);
66}
67
68void
69LinearFluidProperties::T_from_v_e(Real v, Real e, Real & T, Real & dT_dv, Real & dT_de) const
70{
71 T = T_from_v_e(v, e);
72 dT_dv = 0;
73 dT_de = 1 / _cv;
74}
75
76Real
78{
79 return std::sqrt(_a2);
80}
81
82void
83LinearFluidProperties::c_from_v_e(Real v, Real e, Real & c, Real & dc_dv, Real & dc_de) const
84{
85 c = c_from_v_e(v, e);
86 dc_dv = 0;
87 dc_de = 0;
88}
89
90Real
92{
93 return _cv;
94}
95
96void
97LinearFluidProperties::cp_from_v_e(Real v, Real e, Real & cp, Real & dcp_dv, Real & dcp_de) const
98{
99 cp = cp_from_v_e(v, e);
100 dcp_de = 0;
101 dcp_dv = 0;
102}
103
104Real
106{
107 return _cv;
108}
109
110void
111LinearFluidProperties::cv_from_v_e(Real v, Real e, Real & cv, Real & dcv_dv, Real & dcv_de) const
112{
113 cv = cv_from_v_e(v, e);
114 dcv_de = 0;
115 dcv_dv = 0;
116}
117
118Real
120{
121 return _mu;
122}
123
124Real
126{
127 return _k;
128}
129
130Real
132{
133 mooseError(name(), ": s_from_v_e() not implemented.");
134}
135
136void
137LinearFluidProperties::s_from_v_e(Real, Real, Real &, Real &, Real &) const
138{
139 mooseError(name(), ": s_from_v_e() not implemented.");
140}
141
142Real
144{
145 mooseError(name(), ": s_from_p_T() not implemented.");
146}
147
148void
149LinearFluidProperties::s_from_p_T(Real, Real, Real &, Real &, Real &) const
150{
151 mooseError(name(), ": s_from_p_T() not implemented.");
152}
153
154Real
156{
157 mooseError(name(), ": s(h,p) is not implemented");
158}
159
160void
161LinearFluidProperties::s_from_h_p(Real, Real, Real &, Real &, Real &) const
162{
163 mooseError(name(), ": s(h,p) is not implemented");
164}
165
166Real
168{
169 mooseError(name(), ": rho_from_p_s() not implemented.");
170}
171
172void
173LinearFluidProperties::rho_from_p_s(Real, Real, Real &, Real &, Real &) const
174{
175 mooseError(name(), ": rho_from_p_s() not implemented.");
176}
177
178Real
180{
181 return (h - v * p_from_v_e(v, 0)) / (1 + v * _beta / _cv * _rho_0 * _a2);
182}
183
184void
185LinearFluidProperties::e_from_v_h(Real v, Real h, Real & e, Real & de_dv, Real & de_dh) const
186{
187 const auto num = (h - v * (_p_0 + _a2 * ((1 / v - _rho_0) - _rho_0 * _beta / _cv * _e_0)));
188 const auto denum = (1 + v * _beta / _cv * _rho_0 * _a2);
189 e = num / denum;
190 de_dh = 1 / denum;
191 de_dv = ((-_p_0 - _a2 * _rho_0 * (-1 - _beta / _cv * _e_0)) * denum -
192 num * _beta / _cv * _rho_0 * _a2) /
193 denum / denum;
194}
195
196Real
198{
199 return _beta;
200}
201
202void
204 Real p, Real T, Real & beta, Real & dbeta_dp, Real & dbeta_dT) const
205{
206 beta = beta_from_p_T(p, T);
207 dbeta_dp = 0;
208 dbeta_dT = 0;
209}
210
211Real
213{
214 Real e = _e_0 + _cv * (T - _T_0);
215 return (p - _p_0) / _a2 - _rho_0 * (_beta / _cv) * (e - _e_0) + _rho_0;
216}
217
218void
220 Real p, Real T, Real & rho, Real & drho_dp, Real & drho_dT) const
221{
222 Real e = _e_0 + _cv * (T - _T_0);
223 rho = (p - _p_0) / _a2 - _rho_0 * (_beta / _cv) * (e - _e_0) + _rho_0;
224 drho_dp = 1 / _a2;
225 drho_dT = -_rho_0 * _beta;
226}
227
228Real
230{
231 const auto rho = rho_from_p_T(p, T);
232 return e_from_p_rho(p, rho);
233}
234
235void
236LinearFluidProperties::e_from_p_T(Real p, Real T, Real & e, Real & de_dp, Real & de_dT) const
237{
238 Real rho, drho_dp, drho_dT;
239 rho_from_p_T(p, T, rho, drho_dp, drho_dT);
240 Real de_drho, de_dp_rho;
241 e_from_p_rho(p, rho, e, de_dp_rho, de_drho);
242 de_dp = de_drho * drho_dp + de_dp_rho;
243 de_dT = de_drho * drho_dT;
244}
245
246Real
248{
249 return (_cv / _beta) * (((p - _p_0) / (_rho_0 * _a2)) - (rho / _rho_0) + 1) + _e_0;
250}
251
252void
253LinearFluidProperties::e_from_p_rho(Real p, Real rho, Real & e, Real & de_dp, Real & de_drho) const
254{
255 e = e_from_p_rho(p, rho);
256 de_dp = _cv / _beta / _rho_0 / _a2;
257 de_drho = -_cv / _beta / _rho_0;
258}
259
260Real
262{
263 Real rho = rho_from_p_T(p, T);
264 Real e = e_from_p_rho(p, rho);
265 return e + p / rho;
266}
267
268void
269LinearFluidProperties::h_from_p_T(Real p, Real T, Real & h, Real & dh_dp, Real & dh_dT) const
270{
271 h = h_from_p_T(p, T);
272
273 Real rho, drho_dp, drho_dT;
274 rho_from_p_T(p, T, rho, drho_dp, drho_dT);
275
276 dh_dp = 1.0 / rho - p / rho / rho * drho_dp;
277 dh_dT = _cv - p / rho / rho * drho_dT;
278}
279
280Real
282{
283 mooseError(name(), ": p_from_h_s() not implemented");
284}
285
286void
287LinearFluidProperties::p_from_h_s(Real, Real, Real &, Real &, Real &) const
288{
289 mooseError(name(), ": p_from_h_s() not implemented");
290}
291
292Real
294{
295 mooseError(name(), ": g_from_v_e(v, e) not implemented");
296}
297
298Real
300{
301 mooseError(name(), ": molarMass() not implemented");
302}
303
304Real
306{
307 return _Pr;
308}
const Real p
const double rho
const double T
const double v
registerMooseObject("ThermalHydraulicsApp", LinearFluidProperties)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
Linear fluid properties.
virtual Real e_from_p_T(Real p, Real T) const override
LinearFluidProperties(const InputParameters &parameters)
virtual Real e_from_v_h(Real v, Real h) const override
virtual Real p_from_v_e(Real v, Real e) const override
virtual Real s_from_h_p(Real h, Real p) const override
static InputParameters validParams()
virtual Real mu_from_v_e(Real v, Real e) const override
virtual Real cp_from_v_e(Real v, Real e) const override
virtual Real p_from_h_s(Real h, Real s) const override
virtual Real s_from_v_e(Real v, Real e) const override
virtual Real Pr(Real density, Real temperature) const
virtual Real rho_from_p_T(Real p, Real T) const override
virtual Real T_from_v_e(Real v, Real e) const override
virtual Real c_from_v_e(Real v, Real e) const override
virtual Real k_from_v_e(Real v, Real e) const override
virtual Real h_from_p_T(Real p, Real T) const override
virtual Real cv_from_v_e(Real v, Real e) const override
virtual Real s_from_p_T(Real p, Real T) const override
virtual Real g_from_v_e(Real v, Real e) const override
virtual Real beta_from_p_T(Real p, Real T) const override
virtual Real rho_from_p_s(Real p, Real s) const override
virtual Real molarMass() const override
Molar mass [kg/mol].
virtual Real e_from_p_rho(Real p, Real rho) const override
const std::string & name() const
void mooseError(Args &&... args) const
Common class for single phase fluid properties.
static InputParameters validParams()
e e e e s T T T T T rho v v T e h