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
66Real
68{
69 if (v == 0.0)
70 return getNaN("Invalid value of specific volume detected (v = " + Moose::stringify(v) + ").");
71
72 return (_gamma - 1.0) * (e - _e_ref) / v;
73}
74
77{
78 if (v.value() == 0.0)
79 return getNaN("Invalid value of specific volume detected (v = " + Moose::stringify(v.value()) +
80 ").");
81
82 return (_gamma - 1.0) * (e - _e_ref) / v;
83}
84
85void
86IdealGasFluidProperties::p_from_v_e(Real v, Real e, Real & p, Real & dp_dv, Real & dp_de) const
87{
88 p = p_from_v_e(v, e);
89 dp_dv = -(_gamma - 1.0) * (e - _e_ref) / v / v;
90 dp_de = (_gamma - 1.0) / v;
91}
92
93void
95 const ADReal & v, const ADReal & e, ADReal & p, ADReal & dp_dv, ADReal & dp_de) const
96{
97 p = p_from_v_e(v, e);
98 dp_dv = -(_gamma - 1.0) * (e - _e_ref) / v / v;
99 dp_de = (_gamma - 1.0) / v;
100}
101
102Real
103IdealGasFluidProperties::T_from_v_e(Real /*v*/, Real e) const
104{
105 return (e - _e_ref) / _cv;
106}
107
108ADReal
109IdealGasFluidProperties::T_from_v_e(const ADReal & /*v*/, const ADReal & e) const
110{
111 return (e - _e_ref) / _cv;
112}
113
114void
115IdealGasFluidProperties::T_from_v_e(Real v, Real e, Real & T, Real & dT_dv, Real & dT_de) const
116{
117 T = T_from_v_e(v, e);
118 dT_dv = 0.0;
119 dT_de = 1.0 / _cv;
120}
121
122void
124 const ADReal & v, const ADReal & e, ADReal & T, ADReal & dT_dv, ADReal & dT_de) const
125{
126 T = T_from_v_e(v, e);
127 dT_dv = 0.0;
128 dT_de = 1.0 / _cv;
129}
130
131Real
133{
134 Real T = T_from_v_e(v, e);
135
136 Real c2 = _gamma * _R_specific * T;
137 if (c2 < 0)
138 {
139 c2 = 0;
140 flagInvalidSolution(
141 "Sound speed squared (gamma * R * T) is negative: c2 = " + Moose::stringify(c2) + ".");
142 }
143
144 return std::sqrt(c2);
145}
146
147ADReal
149{
150 using std::sqrt;
151 const auto T = T_from_v_e(v, e);
152
153 auto c2 = _gamma * _R_specific * T;
154 if (MetaPhysicL::raw_value(c2) < 0)
155 {
156 c2 = 0;
157 flagInvalidSolution(
158 "Sound speed squared (gamma * R * T) is negative: c2 = " + Moose::stringify(c2) + ".");
159 }
160
161 return sqrt(c2);
162}
163
164void
165IdealGasFluidProperties::c_from_v_e(Real v, Real e, Real & c, Real & dc_dv, Real & dc_de) const
166{
167 Real T, dT_dv, dT_de;
168 T_from_v_e(v, e, T, dT_dv, dT_de);
169
170 c = std::sqrt(_gamma * _R_specific * T);
171
172 const Real dc_dT = 0.5 / c * _gamma * _R_specific;
173 dc_dv = dc_dT * dT_dv;
174 dc_de = dc_dT * dT_de;
175}
176
177Real
179{
180 return std::sqrt(_cp * _R * T / (_cv * _molar_mass));
181}
182
183ADReal
185{
186 using std::sqrt;
187 return sqrt(_cp * _R * T / (_cv * _molar_mass));
188}
189
190void
192 const Real /*p*/, const Real T, Real & c, Real & dc_dp, Real & dc_dT) const
193{
194 c = std::sqrt(_cp * _R * T / (_cv * _molar_mass));
195 dc_dp = 0;
196 dc_dT = 0.5 / c * _cp * _R / (_cv * _molar_mass);
197}
198
199Real
201{
202 return 1.0 / T;
203}
204
205ADReal
207{
208 return 1.0 / T;
209}
210
211void
213 const Real /*p*/, const Real T, Real & beta, Real & dbeta_dp, Real & dbeta_dT) const
214{
215 beta = 1.0 / T;
216 dbeta_dp = 0;
217 dbeta_dT = -1.0 / Utility::pow<2>(T);
218}
219
220Real
222{
223 return _cp;
224}
225
226void
227IdealGasFluidProperties::cp_from_v_e(Real v, Real e, Real & cp, Real & dcp_dv, Real & dcp_de) const
228{
229 cp = cp_from_v_e(v, e);
230 dcp_dv = 0.0;
231 dcp_de = 0.0;
232}
233
234Real
236{
237 return _cv;
238}
239
240void
241IdealGasFluidProperties::cv_from_v_e(Real v, Real e, Real & cv, Real & dcv_dv, Real & dcv_de) const
242{
243 cv = cv_from_v_e(v, e);
244 dcv_dv = 0.0;
245 dcv_de = 0.0;
246}
247
248Real
250{
251 return _gamma;
252}
253
254Real
256{
257 return _gamma;
258}
259
260Real
262{
263 return _mu;
264}
265
266void
267IdealGasFluidProperties::mu_from_v_e(Real v, Real e, Real & mu, Real & dmu_dv, Real & dmu_de) const
268{
269 mu = this->mu_from_v_e(v, e);
270 dmu_dv = 0.0;
271 dmu_de = 0.0;
272}
273
274Real
276{
277 return _k;
278}
279
280void
282 Real /*v*/, Real /*e*/, Real & k, Real & dk_dv, Real & dk_de) const
283{
284 k = _k;
285 dk_dv = 0;
286 dk_de = 0;
287}
288
289Real
291{
292 const Real T = T_from_v_e(v, e);
293 const Real p = p_from_v_e(v, e);
294 const Real n = std::pow(T, _gamma) / std::pow(p, _gamma - 1.0);
295 if (n <= 0.0)
296 return getNaN("Negative argument in the ln() function.");
297 return _cv * std::log(n);
298}
299
300void
301IdealGasFluidProperties::s_from_v_e(Real v, Real e, Real & s, Real & ds_dv, Real & ds_de) const
302{
303 Real T, dT_dv, dT_de;
304 T_from_v_e(v, e, T, dT_dv, dT_de);
305
306 Real p, dp_dv, dp_de;
307 p_from_v_e(v, e, p, dp_dv, dp_de);
308
309 const Real n = std::pow(T, _gamma) / std::pow(p, _gamma - 1.0);
310 if (n <= 0.0)
311 {
312 s = getNaN("Negative argument in the ln() function.");
313 ds_dv = getNaN();
314 ds_de = getNaN();
315 }
316 else
317 {
318 s = _cv * std::log(n);
319
320 const Real dn_dT = _gamma * std::pow(T, _gamma - 1.0) / std::pow(p, _gamma - 1.0);
321 const Real dn_dp = std::pow(T, _gamma) * (1.0 - _gamma) * std::pow(p, -_gamma);
322
323 const Real dn_dv = dn_dT * dT_dv + dn_dp * dp_dv;
324 const Real dn_de = dn_dT * dT_de + dn_dp * dp_de;
325
326 ds_dv = _cv / n * dn_dv;
327 ds_de = _cv / n * dn_de;
328 }
329}
330
331Real
333{
334 const Real n = std::pow(T, _gamma) / std::pow(p, _gamma - 1.0);
335 if (n <= 0.0)
336 return getNaN("Negative argument in the ln() function.");
337 return _cv * std::log(n);
338}
339
340void
341IdealGasFluidProperties::s_from_p_T(Real p, Real T, Real & s, Real & ds_dp, Real & ds_dT) const
342{
343 const Real n = std::pow(T, _gamma) / std::pow(p, _gamma - 1.0);
344 if (n <= 0.0)
345 {
346 s = getNaN("Negative argument in the ln() function.");
347 ds_dp = getNaN();
348 ds_dT = getNaN();
349 }
350 else
351 {
352 s = _cv * std::log(n);
353
354 const Real dn_dT = _gamma * std::pow(T, _gamma - 1.0) / std::pow(p, _gamma - 1.0);
355 const Real dn_dp = std::pow(T, _gamma) * (1.0 - _gamma) * std::pow(p, -_gamma);
356
357 ds_dp = _cv / n * dn_dp;
358 ds_dT = _cv / n * dn_dT;
359 }
360}
361
362Real
364{
365 const Real aux = p * std::pow((h - _e_ref) / (_gamma * _cv), -_gamma / (_gamma - 1));
366 if (aux <= 0.0)
367 return getNaN("Non-positive argument in the ln() function.");
368 return -(_gamma - 1) * _cv * std::log(aux);
369}
370
371void
372IdealGasFluidProperties::s_from_h_p(Real h, Real p, Real & s, Real & ds_dh, Real & ds_dp) const
373{
374 s = s_from_h_p(h, p);
375
376 const Real aux = p * std::pow((h - _e_ref) / (_gamma * _cv), -_gamma / (_gamma - 1));
377 const Real daux_dh = p * std::pow((h - _e_ref) / (_gamma * _cv), -_gamma / (_gamma - 1) - 1) *
378 (-_gamma / (_gamma - 1)) / (_gamma * _cv);
379 const Real daux_dp = std::pow((h - _e_ref) / (_gamma * _cv), -_gamma / (_gamma - 1));
380 ds_dh = -(_gamma - 1) * _cv / aux * daux_dh;
381 ds_dp = -(_gamma - 1) * _cv / aux * daux_dp;
382}
383
384Real
386{
387 const Real aux = (s + _cv * std::log(std::pow(p, _gamma - 1.0))) / _cv;
388 const Real T = std::pow(std::exp(aux), 1.0 / _gamma);
389 return rho_from_p_T(p, T);
390}
391
392void
394 Real p, Real s, Real & rho, Real & drho_dp, Real & drho_ds) const
395{
396 // T(p,s)
397 const Real aux = (s + _cv * std::log(std::pow(p, _gamma - 1.0))) / _cv;
398 const Real T = std::pow(std::exp(aux), 1 / _gamma);
399
400 // dT/dp
401 const Real dT_dp = 1.0 / _gamma * std::pow(std::exp(aux), 1.0 / _gamma - 1.0) * std::exp(aux) /
402 std::pow(p, _gamma - 1.0) * (_gamma - 1.0) * std::pow(p, _gamma - 2.0);
403
404 // dT/ds
405 const Real dT_ds =
406 1.0 / _gamma * std::pow(std::exp(aux), 1.0 / _gamma - 1.0) * std::exp(aux) / _cv;
407
408 // Drho/Dp = d/dp[rho(p, T(p,s))] = drho/dp + drho/dT * dT/dp
409 Real drho_dp_partial, drho_dT;
410 rho_from_p_T(p, T, rho, drho_dp_partial, drho_dT);
411 drho_dp = drho_dp_partial + drho_dT * dT_dp;
412
413 // Drho/Ds = d/ds[rho(p, T(p,s))] = drho/dT * dT/ds
414 drho_ds = drho_dT * dT_ds;
415}
416
417Real
418IdealGasFluidProperties::e_from_v_h(Real /*v*/, Real h) const
419{
420 return (h + (_gamma - 1.0) * _e_ref) / _gamma;
421}
422
423void
424IdealGasFluidProperties::e_from_v_h(Real v, Real h, Real & e, Real & de_dv, Real & de_dh) const
425{
426 e = e_from_v_h(v, h);
427 de_dv = 0.0;
428 de_dh = 1.0 / _gamma;
429}
430
431Real
433{
434 return p * _molar_mass / (_R * T);
435}
436
437ADReal
439{
440 return p * _molar_mass / (_R * T);
441}
442
443void
445 const ADReal & p, const ADReal & T, ADReal & rho, ADReal & drho_dp, ADReal & drho_dT) const
446{
447 rho = rho_from_p_T(p, T);
448 drho_dp = _molar_mass / (_R * T);
449 drho_dT = -p * _molar_mass / (_R * T * T);
450}
451
452void
454 Real p, Real T, Real & rho, Real & drho_dp, Real & drho_dT) const
455{
456 rho = rho_from_p_T(p, T);
457 drho_dp = _molar_mass / (_R * T);
458 drho_dT = -p * _molar_mass / (_R * T * T);
459}
460
461Real
463{
464 return p / (_gamma - 1.0) / rho + _e_ref;
465}
466
467ADReal
469{
470 return p / (_gamma - 1.0) / rho + _e_ref;
471}
472
473void
475 Real p, Real rho, Real & e, Real & de_dp, Real & de_drho) const
476{
477 e = e_from_p_rho(p, rho);
478 de_dp = 1.0 / (_gamma - 1.0) / rho;
479 de_drho = -p / (_gamma - 1.0) / rho / rho;
480}
481
482void
484 const ADReal & p, const ADReal & rho, ADReal & e, ADReal & de_dp, ADReal & de_drho) const
485{
486 e = e_from_p_rho(p, rho);
487 de_dp = 1.0 / (_gamma - 1.0) / rho;
488 de_drho = -p / (_gamma - 1.0) / rho / rho;
489}
490
491Real
493{
494 return _cv * T + _e_ref;
495}
496
497void
498IdealGasFluidProperties::e_from_T_v(Real T, Real /*v*/, Real & e, Real & de_dT, Real & de_dv) const
499{
500 e = _cv * T + _e_ref;
501 de_dT = _cv;
502 de_dv = 0.0;
503}
504
505ADReal
507{
508 return _cv * T + _e_ref;
509}
510
511void
513 const ADReal & T, const ADReal & /*v*/, ADReal & e, ADReal & de_dT, ADReal & de_dv) const
514{
515 e = _cv * T + _e_ref;
516 de_dT = _cv;
517 de_dv = 0.0;
518}
519
520Real
522{
523 return (_gamma - 1.0) * _cv * T / v;
524}
525
526void
527IdealGasFluidProperties::p_from_T_v(Real T, Real v, Real & p, Real & dp_dT, Real & dp_dv) const
528{
529 p = (_gamma - 1.0) * _cv * T / v;
530 dp_dT = (_gamma - 1.0) * _cv / v;
531 dp_dv = -(_gamma - 1.0) * _cv * T / (v * v);
532}
533
534Real
536{
537 return _gamma * _cv * T + _e_ref;
538}
539
540void
541IdealGasFluidProperties::h_from_T_v(Real T, Real /*v*/, Real & h, Real & dh_dT, Real & dh_dv) const
542{
543 h = _gamma * _cv * T + _e_ref;
544 dh_dT = _gamma * _cv;
545 dh_dv = 0.0;
546}
547
548Real
550{
551 Real p = p_from_T_v(T, v);
552 return s_from_p_T(p, T);
553}
554
555void
556IdealGasFluidProperties::s_from_T_v(Real T, Real v, Real & s, Real & ds_dT, Real & ds_dv) const
557{
558 Real p, dp_dT_v, dp_dv_T;
559 Real ds_dp_T, ds_dT_p;
560 p_from_T_v(T, v, p, dp_dT_v, dp_dv_T);
561 s_from_p_T(p, T, s, ds_dp_T, ds_dT_p);
562 ds_dT = ds_dT_p + ds_dp_T * dp_dT_v;
563 ds_dv = ds_dp_T * dp_dv_T;
564}
565
566Real
567IdealGasFluidProperties::cv_from_T_v(Real /*T*/, Real /*v*/) const
568{
569 return _cv;
570}
571
572Real
574{
575 return _e_c;
576}
577
578void
579IdealGasFluidProperties::v_e_spndl_from_T(Real /*T*/, Real & v, Real & e) const
580{
581 v = 1. / _rho_c;
582 e = _e_c;
583}
584
585Real
587{
588 return _cp * T + _e_ref;
589}
590
591void
592IdealGasFluidProperties::h_from_p_T(Real p, Real T, Real & h, Real & dh_dp, Real & dh_dT) const
593{
594 h = h_from_p_T(p, T);
595 dh_dp = 0.0;
596 dh_dT = _cp;
597}
598
599Real
601{
602 return _cv * T + _e_ref;
603}
604
605void
606IdealGasFluidProperties::e_from_p_T(Real p, Real T, Real & e, Real & de_dp, Real & de_dT) const
607{
608 e = e_from_p_T(p, T);
609 de_dp = 0.0;
610 de_dT = _cv;
611}
612
613Real
615{
616 return std::pow((h - _e_ref) / (_gamma * _cv), _gamma / (_gamma - 1.0)) *
617 std::exp(-s / ((_gamma - 1.0) * _cv));
618}
619
620void
621IdealGasFluidProperties::p_from_h_s(Real h, Real s, Real & p, Real & dp_dh, Real & dp_ds) const
622{
623 p = p_from_h_s(h, s);
624 dp_dh = _gamma / (_gamma - 1.0) / (_gamma * _cv) *
625 std::pow((h - _e_ref) / (_gamma * _cv), 1.0 / (_gamma - 1.0)) *
626 std::exp(-s / ((_gamma - 1.0) * _cv));
627 dp_ds = std::pow((h - _e_ref) / (_gamma * _cv), _gamma / (_gamma - 1)) *
628 std::exp(-s / ((_gamma - 1) * _cv)) / ((1 - _gamma) * _cv);
629}
630
631Real
633{
634 // g(p,T) for SGEOS is given by Equation (37) in the following reference:
635 //
636 // Ray A. Berry, Richard Saurel, Olivier LeMetayer
637 // The discrete equation method (DEM) for fully compressible, two-phase flows in
638 // ducts of spatially varying cross-section
639 // Nuclear Engineering and Design 240 (2010) p. 3797-3818
640 //
641 const Real p = p_from_v_e(v, e);
642 const Real T = T_from_v_e(v, e);
643
644 return _gamma * _cv * T - _cv * T * std::log(std::pow(T, _gamma) / std::pow(p, _gamma - 1.0));
645}
646
647Real
652
653Real
658
659Real
664
665Real
670
671Real
673{
674 return (h - _e_ref) / _gamma / _cv;
675}
676
677void
678IdealGasFluidProperties::T_from_p_h(Real /*p*/, Real h, Real & T, Real & dT_dp, Real & dT_dh) const
679{
680 T = (h - _e_ref) / (_gamma * _cv);
681 dT_dp = 0;
682 dT_dh = 1.0 / (_gamma * _cv);
683}
684
685Real
686IdealGasFluidProperties::cv_from_p_T(Real /* pressure */, Real /* temperature */) const
687{
688 return _cv;
689}
690
691void
692IdealGasFluidProperties::cv_from_p_T(Real p, Real T, Real & cv, Real & dcv_dp, Real & dcv_dT) const
693{
694 cv = cv_from_p_T(p, T);
695 dcv_dp = 0.0;
696 dcv_dT = 0.0;
697}
698
699Real
700IdealGasFluidProperties::cp_from_p_T(Real /* pressure */, Real /* temperature */) const
701{
702 return _cp;
703}
704
705void
706IdealGasFluidProperties::cp_from_p_T(Real p, Real T, Real & cp, Real & dcp_dp, Real & dcp_dT) const
707{
708 cp = cp_from_p_T(p, T);
709 dcp_dp = 0.0;
710 dcp_dT = 0.0;
711}
712
713Real
714IdealGasFluidProperties::mu_from_p_T(Real /* pressure */, Real /* temperature */) const
715{
716 return _mu;
717}
718
719void
720IdealGasFluidProperties::mu_from_p_T(Real p, Real T, Real & mu, Real & dmu_dp, Real & dmu_dT) const
721{
722 mu = this->mu_from_p_T(p, T);
723 dmu_dp = 0.0;
724 dmu_dT = 0.0;
725}
726
727Real
728IdealGasFluidProperties::k_from_p_T(Real /* pressure */, Real /* temperature */) const
729{
730 return _k;
731}
732
733void
734IdealGasFluidProperties::k_from_p_T(Real p, Real T, Real & k, Real & dk_dp, Real & dk_dT) const
735{
736 k = k_from_p_T(p, T);
737 dk_dp = 0.0;
738 dk_dT = 0.0;
739}
740
741Real
742IdealGasFluidProperties::pp_sat_from_p_T(Real /*p*/, Real /*T*/) const
743{
744 mooseError(__PRETTY_FUNCTION__, " not implemented. Use a real fluid property class!");
745}
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 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)