https://mooseframework.inl.gov
Loading...
Searching...
No Matches
IdealGasFluidProperties.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#include "Conversion.h"
12
13#include "metaphysicl/raw_type.h"
14
16
19{
21 params += NaNInterface::validParams();
22
23 params.addRangeCheckedParam<Real>("gamma", 1.4, "gamma > 1", "gamma value (cp/cv)");
24 params.addParam<Real>("molar_mass", 29.0e-3, "Constant molar mass of the fluid (kg/mol)");
25 params.addParam<Real>("e_ref", 0, "Reference specific internal energy [J/kg]");
26 params.addParam<Real>("mu", 18.23e-6, "Dynamic viscosity, Pa.s");
27 params.addParam<Real>("k", 25.68e-3, "Thermal conductivity, W/(m-K)");
28 params.addParam<Real>("T_c", 0, "Critical temperature, K");
29 params.addParam<Real>("rho_c", 0, "Critical density, kg/m3");
30 params.addParam<Real>("e_c", 0, "Internal energy at the critical point, J/kg");
31
32 params.addClassDescription("Fluid properties for an ideal gas");
33
34 return params;
35}
36
38 : SinglePhaseFluidProperties(parameters),
39 NaNInterface(this),
40
41 _gamma(getParam<Real>("gamma")),
42 _molar_mass(getParam<Real>("molar_mass")),
43 _e_ref(getParam<Real>("e_ref")),
44
45 _R_specific(_R / _molar_mass),
46 _cp(_gamma * _R_specific / (_gamma - 1.0)),
47 _cv(_cp / _gamma),
48
49 _mu(getParam<Real>("mu")),
50 _k(getParam<Real>("k")),
51
52 _T_c(getParam<Real>("T_c")),
53 _rho_c(getParam<Real>("rho_c")),
54 _e_c(getParam<Real>("e_c"))
55{
56}
57
59
60std::string
62{
63 return "ideal_gas";
64}
65
68{
69 return nullptr;
70}
71
72Real
74{
75 if (v == 0.0)
76 return getNaN("Invalid value of specific volume detected (v = " + Moose::stringify(v) + ").");
77
78 return (_gamma - 1.0) * (e - _e_ref) / v;
79}
80
83{
84 if (v.value() == 0.0)
85 return getNaN("Invalid value of specific volume detected (v = " + Moose::stringify(v.value()) +
86 ").");
87
88 return (_gamma - 1.0) * (e - _e_ref) / v;
89}
90
91void
92IdealGasFluidProperties::p_from_v_e(Real v, Real e, Real & p, Real & dp_dv, Real & dp_de) const
93{
94 p = p_from_v_e(v, e);
95 dp_dv = -(_gamma - 1.0) * (e - _e_ref) / v / v;
96 dp_de = (_gamma - 1.0) / v;
97}
98
99void
101 const ADReal & v, const ADReal & e, ADReal & p, ADReal & dp_dv, ADReal & dp_de) const
102{
103 p = p_from_v_e(v, e);
104 dp_dv = -(_gamma - 1.0) * (e - _e_ref) / v / v;
105 dp_de = (_gamma - 1.0) / v;
106}
107
108Real
109IdealGasFluidProperties::T_from_v_e(Real /*v*/, Real e) const
110{
111 return (e - _e_ref) / _cv;
112}
113
114ADReal
115IdealGasFluidProperties::T_from_v_e(const ADReal & /*v*/, const ADReal & e) const
116{
117 return (e - _e_ref) / _cv;
118}
119
120void
121IdealGasFluidProperties::T_from_v_e(Real v, Real e, Real & T, Real & dT_dv, Real & dT_de) const
122{
123 T = T_from_v_e(v, e);
124 dT_dv = 0.0;
125 dT_de = 1.0 / _cv;
126}
127
128void
130 const ADReal & v, const ADReal & e, ADReal & T, ADReal & dT_dv, ADReal & dT_de) const
131{
132 T = T_from_v_e(v, e);
133 dT_dv = 0.0;
134 dT_de = 1.0 / _cv;
135}
136
137Real
139{
140 Real T = T_from_v_e(v, e);
141
142 Real c2 = _gamma * _R_specific * T;
143 if (c2 < 0)
144 {
145 flagInvalidSolution(
146 "Sound speed squared (gamma * R * T) is negative: c2 = " + Moose::stringify(c2) + ".");
147 c2 = 0;
148 }
149
150 return std::sqrt(c2);
151}
152
153ADReal
155{
156 using std::sqrt;
157 const auto T = T_from_v_e(v, e);
158
159 auto c2 = _gamma * _R_specific * T;
160 if (MetaPhysicL::raw_value(c2) < 0)
161 {
162 flagInvalidSolution("Sound speed squared (gamma * R * T) is negative: c2 = " +
164 c2 = 0;
165 }
166
167 return sqrt(c2);
168}
169
170void
171IdealGasFluidProperties::c_from_v_e(Real v, Real e, Real & c, Real & dc_dv, Real & dc_de) const
172{
173 Real T, dT_dv, dT_de;
174 T_from_v_e(v, e, T, dT_dv, dT_de);
175
176 const Real c2 = _gamma * _R_specific * T;
177 if (c2 <= 0)
178 {
179 // Consistent with the value overload: the sound speed is set to zero and the state flagged
180 if (c2 < 0)
181 flagInvalidSolution(
182 "Sound speed squared (gamma * R * T) is negative: c2 = " + Moose::stringify(c2) + ".");
183 c = 0;
184 dc_dv = 0;
185 dc_de = 0;
186 return;
187 }
188
189 c = std::sqrt(c2);
190
191 const Real dc_dT = 0.5 / c * _gamma * _R_specific;
192 dc_dv = dc_dT * dT_dv;
193 dc_de = dc_dT * dT_de;
194}
195
196Real
198{
199 return std::sqrt(_cp * _R * T / (_cv * _molar_mass));
200}
201
202ADReal
204{
205 using std::sqrt;
206 return sqrt(_cp * _R * T / (_cv * _molar_mass));
207}
208
209void
211 const Real /*p*/, const Real T, Real & c, Real & dc_dp, Real & dc_dT) const
212{
213 c = std::sqrt(_cp * _R * T / (_cv * _molar_mass));
214 dc_dp = 0;
215 dc_dT = 0.5 / c * _cp * _R / (_cv * _molar_mass);
216}
217
218Real
220{
221 return 1.0 / T;
222}
223
224ADReal
226{
227 return 1.0 / T;
228}
229
230void
232 const Real /*p*/, const Real T, Real & beta, Real & dbeta_dp, Real & dbeta_dT) const
233{
234 beta = 1.0 / T;
235 dbeta_dp = 0;
236 dbeta_dT = -1.0 / Utility::pow<2>(T);
237}
238
239Real
241{
242 return _cp;
243}
244
245void
246IdealGasFluidProperties::cp_from_v_e(Real v, Real e, Real & cp, Real & dcp_dv, Real & dcp_de) const
247{
248 cp = cp_from_v_e(v, e);
249 dcp_dv = 0.0;
250 dcp_de = 0.0;
251}
252
253Real
255{
256 return _cv;
257}
258
259void
260IdealGasFluidProperties::cv_from_v_e(Real v, Real e, Real & cv, Real & dcv_dv, Real & dcv_de) const
261{
262 cv = cv_from_v_e(v, e);
263 dcv_dv = 0.0;
264 dcv_de = 0.0;
265}
266
267Real
269{
270 return _gamma;
271}
272
273Real
275{
276 return _gamma;
277}
278
279Real
281{
282 return _mu;
283}
284
285void
286IdealGasFluidProperties::mu_from_v_e(Real v, Real e, Real & mu, Real & dmu_dv, Real & dmu_de) const
287{
288 mu = this->mu_from_v_e(v, e);
289 dmu_dv = 0.0;
290 dmu_de = 0.0;
291}
292
293Real
295{
296 return _k;
297}
298
299void
301 Real /*v*/, Real /*e*/, Real & k, Real & dk_dv, Real & dk_de) const
302{
303 k = _k;
304 dk_dv = 0;
305 dk_de = 0;
306}
307
308Real
310{
311 const Real T = T_from_v_e(v, e);
312 const Real p = p_from_v_e(v, e);
313 const Real n = std::pow(T, _gamma) / std::pow(p, _gamma - 1.0);
314 if (n <= 0.0)
315 return getNaN("Negative argument in the ln() function.");
316 return _cv * std::log(n);
317}
318
319void
320IdealGasFluidProperties::s_from_v_e(Real v, Real e, Real & s, Real & ds_dv, Real & ds_de) const
321{
322 Real T, dT_dv, dT_de;
323 T_from_v_e(v, e, T, dT_dv, dT_de);
324
325 Real p, dp_dv, dp_de;
326 p_from_v_e(v, e, p, dp_dv, dp_de);
327
328 const Real n = std::pow(T, _gamma) / std::pow(p, _gamma - 1.0);
329 if (n <= 0.0)
330 {
331 s = getNaN("Negative argument in the ln() function.");
332 ds_dv = getNaN();
333 ds_de = getNaN();
334 }
335 else
336 {
337 s = _cv * std::log(n);
338
339 const Real dn_dT = _gamma * std::pow(T, _gamma - 1.0) / std::pow(p, _gamma - 1.0);
340 const Real dn_dp = std::pow(T, _gamma) * (1.0 - _gamma) * std::pow(p, -_gamma);
341
342 const Real dn_dv = dn_dT * dT_dv + dn_dp * dp_dv;
343 const Real dn_de = dn_dT * dT_de + dn_dp * dp_de;
344
345 ds_dv = _cv / n * dn_dv;
346 ds_de = _cv / n * dn_de;
347 }
348}
349
350Real
352{
353 const Real n = std::pow(T, _gamma) / std::pow(p, _gamma - 1.0);
354 if (n <= 0.0)
355 return getNaN("Negative argument in the ln() function.");
356 return _cv * std::log(n);
357}
358
359void
360IdealGasFluidProperties::s_from_p_T(Real p, Real T, Real & s, Real & ds_dp, Real & ds_dT) const
361{
362 const Real n = std::pow(T, _gamma) / std::pow(p, _gamma - 1.0);
363 if (n <= 0.0)
364 {
365 s = getNaN("Negative argument in the ln() function.");
366 ds_dp = getNaN();
367 ds_dT = getNaN();
368 }
369 else
370 {
371 s = _cv * std::log(n);
372
373 const Real dn_dT = _gamma * std::pow(T, _gamma - 1.0) / std::pow(p, _gamma - 1.0);
374 const Real dn_dp = std::pow(T, _gamma) * (1.0 - _gamma) * std::pow(p, -_gamma);
375
376 ds_dp = _cv / n * dn_dp;
377 ds_dT = _cv / n * dn_dT;
378 }
379}
380
381Real
383{
384 const Real aux = p * std::pow((h - _e_ref) / (_gamma * _cv), -_gamma / (_gamma - 1));
385 if (aux <= 0.0)
386 return getNaN("Non-positive argument in the ln() function.");
387 return -(_gamma - 1) * _cv * std::log(aux);
388}
389
390void
391IdealGasFluidProperties::s_from_h_p(Real h, Real p, Real & s, Real & ds_dh, Real & ds_dp) const
392{
393 s = s_from_h_p(h, p);
394
395 const Real aux = p * std::pow((h - _e_ref) / (_gamma * _cv), -_gamma / (_gamma - 1));
396 const Real daux_dh = p * std::pow((h - _e_ref) / (_gamma * _cv), -_gamma / (_gamma - 1) - 1) *
397 (-_gamma / (_gamma - 1)) / (_gamma * _cv);
398 const Real daux_dp = std::pow((h - _e_ref) / (_gamma * _cv), -_gamma / (_gamma - 1));
399 ds_dh = -(_gamma - 1) * _cv / aux * daux_dh;
400 ds_dp = -(_gamma - 1) * _cv / aux * daux_dp;
401}
402
403Real
405{
406 const Real aux = (s + _cv * std::log(std::pow(p, _gamma - 1.0))) / _cv;
407 const Real T = std::pow(std::exp(aux), 1.0 / _gamma);
408 return rho_from_p_T(p, T);
409}
410
411void
413 Real p, Real s, Real & rho, Real & drho_dp, Real & drho_ds) const
414{
415 // T(p,s)
416 const Real aux = (s + _cv * std::log(std::pow(p, _gamma - 1.0))) / _cv;
417 const Real T = std::pow(std::exp(aux), 1 / _gamma);
418
419 // dT/dp
420 const Real dT_dp = 1.0 / _gamma * std::pow(std::exp(aux), 1.0 / _gamma - 1.0) * std::exp(aux) /
421 std::pow(p, _gamma - 1.0) * (_gamma - 1.0) * std::pow(p, _gamma - 2.0);
422
423 // dT/ds
424 const Real dT_ds =
425 1.0 / _gamma * std::pow(std::exp(aux), 1.0 / _gamma - 1.0) * std::exp(aux) / _cv;
426
427 // Drho/Dp = d/dp[rho(p, T(p,s))] = drho/dp + drho/dT * dT/dp
428 Real drho_dp_partial, drho_dT;
429 rho_from_p_T(p, T, rho, drho_dp_partial, drho_dT);
430 drho_dp = drho_dp_partial + drho_dT * dT_dp;
431
432 // Drho/Ds = d/ds[rho(p, T(p,s))] = drho/dT * dT/ds
433 drho_ds = drho_dT * dT_ds;
434}
435
436Real
437IdealGasFluidProperties::e_from_v_h(Real /*v*/, Real h) const
438{
439 return (h + (_gamma - 1.0) * _e_ref) / _gamma;
440}
441
442void
443IdealGasFluidProperties::e_from_v_h(Real v, Real h, Real & e, Real & de_dv, Real & de_dh) const
444{
445 e = e_from_v_h(v, h);
446 de_dv = 0.0;
447 de_dh = 1.0 / _gamma;
448}
449
450Real
452{
453 return p * _molar_mass / (_R * T);
454}
455
456ADReal
458{
459 return p * _molar_mass / (_R * T);
460}
461
462void
464 const ADReal & p, const ADReal & T, ADReal & rho, ADReal & drho_dp, ADReal & drho_dT) const
465{
466 rho = rho_from_p_T(p, T);
467 drho_dp = _molar_mass / (_R * T);
468 drho_dT = -p * _molar_mass / (_R * T * T);
469}
470
471void
473 Real p, Real T, Real & rho, Real & drho_dp, Real & drho_dT) const
474{
475 rho = rho_from_p_T(p, T);
476 drho_dp = _molar_mass / (_R * T);
477 drho_dT = -p * _molar_mass / (_R * T * T);
478}
479
480Real
482{
483 return p / (_gamma - 1.0) / rho + _e_ref;
484}
485
486ADReal
488{
489 return p / (_gamma - 1.0) / rho + _e_ref;
490}
491
492void
494 Real p, Real rho, Real & e, Real & de_dp, Real & de_drho) const
495{
496 e = e_from_p_rho(p, rho);
497 de_dp = 1.0 / (_gamma - 1.0) / rho;
498 de_drho = -p / (_gamma - 1.0) / rho / rho;
499}
500
501void
503 const ADReal & p, const ADReal & rho, ADReal & e, ADReal & de_dp, ADReal & de_drho) const
504{
505 e = e_from_p_rho(p, rho);
506 de_dp = 1.0 / (_gamma - 1.0) / rho;
507 de_drho = -p / (_gamma - 1.0) / rho / rho;
508}
509
510Real
512{
513 return _cv * T + _e_ref;
514}
515
516void
517IdealGasFluidProperties::e_from_T_v(Real T, Real /*v*/, Real & e, Real & de_dT, Real & de_dv) const
518{
519 e = _cv * T + _e_ref;
520 de_dT = _cv;
521 de_dv = 0.0;
522}
523
524ADReal
526{
527 return _cv * T + _e_ref;
528}
529
530void
532 const ADReal & T, const ADReal & /*v*/, ADReal & e, ADReal & de_dT, ADReal & de_dv) const
533{
534 e = _cv * T + _e_ref;
535 de_dT = _cv;
536 de_dv = 0.0;
537}
538
539Real
541{
542 return (_gamma - 1.0) * _cv * T / v;
543}
544
545void
546IdealGasFluidProperties::p_from_T_v(Real T, Real v, Real & p, Real & dp_dT, Real & dp_dv) const
547{
548 p = (_gamma - 1.0) * _cv * T / v;
549 dp_dT = (_gamma - 1.0) * _cv / v;
550 dp_dv = -(_gamma - 1.0) * _cv * T / (v * v);
551}
552
553Real
555{
556 return _gamma * _cv * T + _e_ref;
557}
558
559void
560IdealGasFluidProperties::h_from_T_v(Real T, Real /*v*/, Real & h, Real & dh_dT, Real & dh_dv) const
561{
562 h = _gamma * _cv * T + _e_ref;
563 dh_dT = _gamma * _cv;
564 dh_dv = 0.0;
565}
566
567Real
569{
570 Real p = p_from_T_v(T, v);
571 return s_from_p_T(p, T);
572}
573
574void
575IdealGasFluidProperties::s_from_T_v(Real T, Real v, Real & s, Real & ds_dT, Real & ds_dv) const
576{
577 Real p, dp_dT_v, dp_dv_T;
578 Real ds_dp_T, ds_dT_p;
579 p_from_T_v(T, v, p, dp_dT_v, dp_dv_T);
580 s_from_p_T(p, T, s, ds_dp_T, ds_dT_p);
581 ds_dT = ds_dT_p + ds_dp_T * dp_dT_v;
582 ds_dv = ds_dp_T * dp_dv_T;
583}
584
585Real
586IdealGasFluidProperties::cv_from_T_v(Real /*T*/, Real /*v*/) const
587{
588 return _cv;
589}
590
591Real
593{
594 return _e_c;
595}
596
597void
598IdealGasFluidProperties::v_e_spndl_from_T(Real /*T*/, Real & v, Real & e) const
599{
600 v = 1. / _rho_c;
601 e = _e_c;
602}
603
604Real
606{
607 return _cp * T + _e_ref;
608}
609
610void
611IdealGasFluidProperties::h_from_p_T(Real p, Real T, Real & h, Real & dh_dp, Real & dh_dT) const
612{
613 h = h_from_p_T(p, T);
614 dh_dp = 0.0;
615 dh_dT = _cp;
616}
617
618Real
620{
621 return _cv * T + _e_ref;
622}
623
624void
625IdealGasFluidProperties::e_from_p_T(Real p, Real T, Real & e, Real & de_dp, Real & de_dT) const
626{
627 e = e_from_p_T(p, T);
628 de_dp = 0.0;
629 de_dT = _cv;
630}
631
632Real
634{
635 return std::pow((h - _e_ref) / (_gamma * _cv), _gamma / (_gamma - 1.0)) *
636 std::exp(-s / ((_gamma - 1.0) * _cv));
637}
638
639void
640IdealGasFluidProperties::p_from_h_s(Real h, Real s, Real & p, Real & dp_dh, Real & dp_ds) const
641{
642 p = p_from_h_s(h, s);
643 dp_dh = _gamma / (_gamma - 1.0) / (_gamma * _cv) *
644 std::pow((h - _e_ref) / (_gamma * _cv), 1.0 / (_gamma - 1.0)) *
645 std::exp(-s / ((_gamma - 1.0) * _cv));
646 dp_ds = std::pow((h - _e_ref) / (_gamma * _cv), _gamma / (_gamma - 1)) *
647 std::exp(-s / ((_gamma - 1) * _cv)) / ((1 - _gamma) * _cv);
648}
649
650Real
652{
653 // g(p,T) for SGEOS is given by Equation (37) in the following reference:
654 //
655 // Ray A. Berry, Richard Saurel, Olivier LeMetayer
656 // The discrete equation method (DEM) for fully compressible, two-phase flows in
657 // ducts of spatially varying cross-section
658 // Nuclear Engineering and Design 240 (2010) p. 3797-3818
659 //
660 const Real p = p_from_v_e(v, e);
661 const Real T = T_from_v_e(v, e);
662
663 return _gamma * _cv * T - _cv * T * std::log(std::pow(T, _gamma) / std::pow(p, _gamma - 1.0)) +
664 _e_ref;
665}
666
667Real
672
673Real
678
679Real
684
685Real
690
691Real
693{
694 return (h - _e_ref) / _gamma / _cv;
695}
696
697void
698IdealGasFluidProperties::T_from_p_h(Real /*p*/, Real h, Real & T, Real & dT_dp, Real & dT_dh) const
699{
700 T = (h - _e_ref) / (_gamma * _cv);
701 dT_dp = 0;
702 dT_dh = 1.0 / (_gamma * _cv);
703}
704
705Real
706IdealGasFluidProperties::cv_from_p_T(Real /* pressure */, Real /* temperature */) const
707{
708 return _cv;
709}
710
711void
712IdealGasFluidProperties::cv_from_p_T(Real p, Real T, Real & cv, Real & dcv_dp, Real & dcv_dT) const
713{
714 cv = cv_from_p_T(p, T);
715 dcv_dp = 0.0;
716 dcv_dT = 0.0;
717}
718
719Real
720IdealGasFluidProperties::cp_from_p_T(Real /* pressure */, Real /* temperature */) const
721{
722 return _cp;
723}
724
725void
726IdealGasFluidProperties::cp_from_p_T(Real p, Real T, Real & cp, Real & dcp_dp, Real & dcp_dT) const
727{
728 cp = cp_from_p_T(p, T);
729 dcp_dp = 0.0;
730 dcp_dT = 0.0;
731}
732
733Real
734IdealGasFluidProperties::mu_from_p_T(Real /* pressure */, Real /* temperature */) const
735{
736 return _mu;
737}
738
739void
740IdealGasFluidProperties::mu_from_p_T(Real p, Real T, Real & mu, Real & dmu_dp, Real & dmu_dT) const
741{
742 mu = this->mu_from_p_T(p, T);
743 dmu_dp = 0.0;
744 dmu_dT = 0.0;
745}
746
747Real
748IdealGasFluidProperties::k_from_p_T(Real /* pressure */, Real /* temperature */) const
749{
750 return _k;
751}
752
753void
754IdealGasFluidProperties::k_from_p_T(Real p, Real T, Real & k, Real & dk_dp, Real & dk_dT) const
755{
756 k = k_from_p_T(p, T);
757 dk_dp = 0.0;
758 dk_dT = 0.0;
759}
760
761Real
762IdealGasFluidProperties::pp_sat_from_p_T(Real /*p*/, Real /*T*/) const
763{
764 mooseError(__PRETTY_FUNCTION__, " not implemented. Use a real fluid property class!");
765}
DualNumber< Real, DNDerivativeType, true > ADReal
const double mu
const Real p
const double rho
const double T
const double v
registerMooseObject("FluidPropertiesApp", IdealGasFluidProperties)
static const Real _R
Universal gas constant (J/mol/K)
Ideal gas fluid properties Default parameters are for air at atmospheric pressure and temperature.
virtual Real T_from_p_h(Real p, Real h) const override
virtual std::string fluidName() const override
Fluid name.
virtual Real mu_from_v_e(Real v, Real e) const override
const Real _R_specific
Specific gas constant (R / molar mass)
virtual Real k_from_v_e(Real v, Real e) const override
const Real & _molar_mass
molar mass
virtual Real p_from_v_e(Real v, Real e) const override
const Real & _gamma
Adiabatic index (ratio of specific heats cp/cv)
virtual Real c_from_v_e(Real v, Real e) const override
virtual Real s_from_T_v(Real T, Real v) const override
virtual Real e_from_v_h(Real v, Real h) const override
virtual Real T_from_v_e(Real v, Real e) const override
virtual Real cv_from_p_T(Real p, Real T) const override
virtual Real e_from_p_rho(Real p, Real rho) const override
virtual void v_e_spndl_from_T(Real T, Real &v, Real &e) const override
Specific internal energy from temperature and specific volume.
virtual Real h_from_T_v(Real T, Real v) const override
virtual Real rho_from_p_T(Real p, Real T) const override
virtual Real criticalInternalEnergy() const override
Critical specific internal energy.
virtual Real s_from_h_p(Real h, Real p) const override
virtual Real e_spndl_from_v(Real v) const override
Specific internal energy from temperature and specific volume.
virtual const GasTransportUtils::LennardJonesParameters * lennardJonesParameters() const override
Lennard-Jones parameters of the gas, from which a mixture computes binary diffusion coefficients,...
virtual Real e_from_T_v(Real T, Real v) const override
const Real _cv
Specific heat at constant volume.
virtual Real cp_from_p_T(Real p, Real T) const override
static InputParameters validParams()
virtual Real c_from_p_T(Real p, Real T) const override
virtual Real cv_from_T_v(Real T, Real v) const override
virtual Real criticalDensity() const override
Critical density.
virtual Real mu_from_p_T(Real p, Real T) const override
const Real & _e_ref
Reference specific internal energy.
virtual Real s_from_p_T(Real p, Real T) const override
virtual Real s_from_v_e(Real v, Real e) const override
virtual Real molarMass() const override
Molar mass [kg/mol].
virtual Real p_from_h_s(Real h, Real s) const override
virtual Real gamma_from_v_e(Real v, Real e) const override
const Real _mu
Dynamic viscosity.
virtual Real p_from_T_v(Real T, Real v) const override
const Real _cp
Specific heat at constant pressure.
virtual Real e_from_p_T(Real p, Real T) const override
virtual Real criticalTemperature() const override
Critical temperature.
virtual Real gamma_from_p_T(Real p, Real T) const override
virtual Real h_from_p_T(Real p, Real T) const override
IdealGasFluidProperties(const InputParameters &parameters)
virtual Real beta_from_p_T(Real p, Real T) const override
virtual Real cp_from_v_e(Real v, Real e) const override
virtual Real pp_sat_from_p_T(Real, Real) const override
virtual Real g_from_v_e(Real v, Real e) const override
virtual Real k_from_p_T(Real pressure, Real temperature) const override
const Real _k
Thermal conductivity.
virtual Real rho_from_p_s(Real p, Real s) const override
virtual Real cv_from_v_e(Real v, Real e) const override
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
void addRangeCheckedParam(const std::string &name, const T &value, const std::string &parsed_function, const std::string &doc_string)
void mooseError(Args &&... args) const
Interface class for producing errors, warnings, or just quiet NaNs.
Real getNaN() const
Throws an error or returns a NaN with or without a warning, with a default message.
static InputParameters validParams()
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
auto raw_value(const Eigen::Map< T > &in)
std::string stringify(const T &t)
Parameters of the Lennard-Jones (12-6) potential of a species.