38 const Real
v = 1. /
rho;
40 Real p_from_props, dp_dv, dp_de;
41 const unsigned int max_its = 10;
47 const Real & jacobian = dp_de;
48 const Real residual = p_from_props -
p;
50 if (std::abs(residual) /
p < 1e-12)
53 const Real delta_e = -residual / jacobian;
55 }
while (++it < max_its);
58 mooseWarning(
"The e_from_p_rho iteration failed to converge");
70 ADReal p_from_props, dp_dv, dp_de;
71 const unsigned int max_its = 10;
77 const ADReal & jacobian = dp_de;
78 const ADReal residual = p_from_props -
p;
80 if (std::abs(residual.value()) /
p.value() < 1e-12)
83 const ADReal delta_e = -residual / jacobian;
85 }
while (++it < max_its);
88 mooseWarning(
"The e_from_p_rho iteration failed to converge");
97 return T / (48.14 *
v - 0.4446 / std::pow(
T, 0.2)) * 1.0e5;
105 return T / (48.14 *
v - 0.4446 /
pow(
T, 0.2)) * 1.0e5;
113 Real
T, dT_dv, dT_de;
116 Real val = 48.14 *
v - 0.4446 / std::pow(
T, 0.2);
117 Real dp_dT = 1.0e5 / val - 0.4446 * 0.2e5 * std::pow(
T, -0.2) / (val * val);
119 dp_dv = -48.14e5 *
T / (val * val);
120 dp_de = dp_dT * dT_de;
133 auto val = 48.14 *
v - 0.4446 /
pow(
T, 0.2);
134 auto dp_dT = 1.0e5 / val - 0.4446 * 0.2e5 *
pow(
T, -0.2) / (val * val);
136 dp_dv = -48.14e5 *
T / (val * val);
137 dp_de = dp_dT * dT_de;
144 return T / (48.14 *
v - 0.4446 / std::pow(
T, 0.2)) * 1.0e5;
152 return T / (48.14 *
v - 0.4446 /
pow(
T, 0.2)) * 1.0e5;
164 const Real
T,
const Real
v, Real & e, Real & de_dT, Real & de_dv)
const
211 T = SinglePhaseFluidProperties::T_from_v_e(
v, e);
234 Real
rho, drho_dp, drho_dT;
237 Real c2 = -(
p /
rho /
rho -
_cv / drho_dT) / (
_cv * drho_dp / drho_dT);
238 return std::sqrt(c2);
253 auto p = SinglePhaseFluidProperties::p_from_v_e(myv, mye);
254 auto T = SinglePhaseFluidProperties::T_from_v_e(myv, mye);
259 auto cc = sqrt(-(
p /
rho /
rho -
_cv / drho_dT) / (
_cv * drho_dp / drho_dT));
261 dc_dv = cc.derivatives()[0];
262 dc_de = cc.derivatives()[1];
303 const Real dmu_dT = 0.7 * 3.674e-7 * std::pow(
T_from_v_e(
v, e), -0.3);
305 dmu_de = dmu_dT /
_cv;
313 return 2.682e-3 * (1.0 + 1.123e-3 * p_in_bar) * std::pow(
T, 0.71 * (1.0 - 2.0e-4 * p_in_bar));
319 Real
T = 0.,
p = 0., dT_dv = 0., dT_de = 0., dp_dv = 0., dp_de = 0.;
324 constexpr Real
a = 2.682e-3;
325 constexpr Real
b = 1.123e-8;
326 constexpr Real
c = 0.71;
327 constexpr Real
d = 2.0e-9;
329 k =
a * (1.0 +
b *
p) * std::pow(
T,
c * (1.0 -
d *
p));
330 Real dk_dT =
a *
c * (1.0 +
b *
p) * (1.0 -
d *
p) * std::pow(
T,
c * (1.0 -
d *
p) - 1.0);
331 Real dk_dp =
a * std::pow(
T,
c * (1.0 -
d *
p)) * (
b -
c *
d * (1 +
b *
p) * std::log(
T));
333 dk_dv = dk_dp * dp_dv;
334 dk_de = dk_dT * dT_de + dk_dp * dp_de;
345 return -drho_dT /
rho;
351 Real p_in_bar = pressure * 1.0e-5;
352 return 48.14 * p_in_bar / (temperature + 0.4446 * p_in_bar / std::pow(temperature, 0.2));
357 Real pressure, Real temperature, Real &
rho, Real & drho_dp, Real & drho_dT)
const
360 Real val = 1.0 / (temperature + 0.4446e-5 * pressure / std::pow(temperature, 0.2));
361 drho_dp = 48.14e-5 * (val - 0.4446e-5 * pressure * val * val / std::pow(temperature, 0.2));
363 -48.14e-5 * pressure * val * val * (1.0 - 0.08892e-5 * pressure / std::pow(temperature, 1.2));
368 const ADReal & temperature,
374 rho = SinglePhaseFluidProperties::rho_from_p_T(pressure, temperature);
375 auto val = 1.0 / (temperature + 0.4446e-5 * pressure /
pow(temperature, 0.2));
376 drho_dp = 48.14e-5 * (val - 0.4446e-5 * pressure * val * val /
pow(temperature, 0.2));
378 -48.14e-5 * pressure * val * val * (1.0 - 0.08892e-5 * pressure /
pow(temperature, 1.2));
384 return _cv * temperature;
389 Real pressure, Real temperature, Real & e, Real & de_dp, Real & de_dT)
const
413 return _cp * temperature;
418 Real pressure, Real temperature, Real & h, Real & dh_dp, Real & dh_dT)
const
427 const ADReal & temperature,
432 h =
_cp * temperature;
451 Real pressure, Real temperature, Real & cp, Real & dcp_dp, Real & dcp_dT)
const
466 Real pressure, Real temperature, Real & cv, Real & dcv_dp, Real & dcv_dT)
const
476 return 3.674e-7 * std::pow(temperature, 0.7);
481 Real pressure, Real temperature, Real &
mu, Real & dmu_dp, Real & dmu_dT)
const
485 dmu_dT = 3.674e-7 * 0.7 * std::pow(temperature, -0.3);
491 return 2.682e-3 * (1.0 + 1.123e-8 * pressure) *
492 std::pow(temperature, 0.71 * (1.0 - 2.0e-9 * pressure));
497 Real pressure, Real temperature, Real & k, Real & dk_dp, Real & dk_dT)
const
501 Real term = 1.0 + 1.123e-8 * pressure;
502 Real exp = 0.71 * (1.0 - 2.0e-9 * pressure);
504 dk_dp = 2.682e-3 * (term * 0.71 * (-2.0e-9) * std::log(temperature) * std::pow(temperature, exp) +
505 std::pow(temperature, exp) * 1.123e-8);
507 dk_dT = 2.682e-3 * term * exp * std::pow(temperature, exp - 1.0);
DualNumber< Real, DNDerivativeType, true > ADReal
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
registerMooseObject("FluidPropertiesApp", HeliumFluidProperties)
Fluid properties for helium .
Real e_from_p_rho(Real p, Real rho) const override
virtual Real cp_from_v_e(Real v, Real e) const override
Isobaric specific heat from specific volume and specific internal energy.
const Real _cv
specific heat at constant volume
virtual Real molarMass() const override
Molar mass.
virtual Real k_from_p_T(Real p, Real T) const override
Thermal conductivity from pressure and temperature.
virtual Real c_from_v_e(Real v, Real e) const override
Speed of sound from specific volume and specific internal energy.
virtual Real e_from_p_T(Real p, Real T) const override
Specific internal energy from pressure and temperature.
virtual Real beta_from_p_T(Real p, Real T) const override
Thermal expansion coefficient from pressure and temperature.
virtual Real h_from_p_T(Real p, Real T) const override
Specific enthalpy from pressure and temperature.
virtual Real mu_from_p_T(Real p, Real T) const override
Dynamic viscosity from pressure and temperature.
virtual Real cv_from_v_e(Real v, Real e) const override
Isochoric specific heat from specific volume and specific internal energy.
virtual Real cv_from_p_T(Real p, Real T) const override
Isochoric specific heat capacity from pressure and temperature.
Real e_from_T_v(Real T, Real) const override
virtual Real k_from_v_e(Real v, Real e) const override
Thermal conductivity from specific volume and specific internal energy.
virtual Real cp_from_p_T(Real p, Real T) const override
Isobaric specific heat capacity from pressure and temperature.
HeliumFluidProperties(const InputParameters ¶meters)
virtual Real T_from_p_h(Real p, Real h) const override
Temperature from pressure and specific enthalpy.
virtual Real e_from_v_h(Real v, Real h) const override
Specific internal energy from specific volume and specific enthalpy.
const Real _cp
specific heat at constant pressure
virtual Real T_from_v_e(Real v, Real e) const override
Temperature from specific volume and specific internal energy.
virtual Real rho_from_p_T(Real p, Real T) const override
Density from pressure and temperature.
static InputParameters validParams()
virtual Real p_from_v_e(Real v, Real e) const override
Pressure from specific volume and specific internal energy.
virtual Real mu_from_v_e(Real v, Real e) const override
Dynamic viscosity from specific volume and specific internal energy.
virtual std::string fluidName() const override
Fluid name.
Real p_from_T_v(Real T, Real v) const override
void mooseWarning(Args &&... args) const
Common class for single phase fluid properties.
static InputParameters validParams()
e e e e s T T T T T rho T
e e e e s T T T T T rho v v T e h
void derivInsert(SemiDynamicSparseNumberArray< Real, libMesh::dof_id_type, NWrapper< N > > &derivs, libMesh::dof_id_type index, Real value)