77 name() +
"::rho_from_p_s",
86 Real
pressure, Real entropy, Real &
rho, Real & drho_dp, Real & drho_ds)
const 95 name() +
"::rho_from_p_s",
100 Real s, ds_dp, ds_dT;
102 const Real dT_dp = -ds_dp / ds_dT;
103 const Real dT_ds = 1 / ds_dT;
105 Real drho_dp_T, drho_dT;
107 drho_dp = drho_dp_T + drho_dT * dT_dp;
108 drho_ds = drho_dT * dT_ds;
119 Real
temperature, Real &
v, Real & dv_dT, Real & d2v_dT2, Real & d3v_dT3)
const 123 const Real d2rho_dT2 = -2 * 1.1046e-5;
126 dv_dT = -drho_dT / (
rho *
rho);
127 d2v_dT2 = 2 * drho_dT * drho_dT / (
rho *
rho *
rho) - d2rho_dT2 / (
rho *
rho);
128 d3v_dT3 = 6 * drho_dT * d2rho_dT2 / (
rho *
rho *
rho) -
129 6 * drho_dT * drho_dT * drho_dT / (
rho *
rho *
rho *
rho);
136 return 3.7782E-10 * t2 * t2 - 1.7191E-6 * t2 *
temperature + 3.0921E-3 * t2 -
156 dv_dT = -
v *
v * drho_dT;
163 Real dv_dT, d2v_dT2, d3v_dT3;
172 Real
v, Real e, Real &
pressure, Real & dp_dv, Real & dp_de)
const 177 Real dv_dT, d2v_dT2, d3v_dT3;
188 dp_dv = (dnumerator_dv * denominator - numerator * ddenominator_dv) / (denominator * denominator);
189 dp_de = -1.0 / denominator;
196 mooseAssert(0.2139 * 0.2139 + 4 * 1.1046e5 * (1.00423e3 - 1 /
v) > 0,
197 "Specific volume out of bounds");
198 return (0.2139 - std::sqrt(0.2139 * 0.2139 + 4 * 1.1046e-5 * (1.00423e3 - 1 /
v))) /
204 Real
v, Real e, Real &
temperature, Real & dT_dv, Real & dT_de)
const 208 dT_dv = -1 / (
v *
v * drho_dT);
223 Real
v, Real e, Real &
c, Real & dc_dv, Real & dc_de)
const 230 dc_dv = dc_dT * dT_dv;
231 dc_de = dc_dT * dT_de;
238 const Real h0 = 3.7782E-10 * t2 * t2 *
temperature / 5 - 1.7191E-6 * t2 * t2 / 4.0 +
242 Real v, dv_dT, d2v_dT2, d3v_dT3;
253 Real v, dv_dT, d2v_dT2, d3v_dT3;
270 name() +
"::T_from_p_h",
282 Real h, dh_dp, dh_dT;
284 dT_dp = -dh_dp / dh_dT;
292 constexpr
Real reference_temperature = 370.98;
293 const auto temperature_part = [](
Real T)
296 return 3.7782e-10 * T2 * T2 / 4.0 - 1.7191e-6 * T2 *
T / 3.0 + 3.0921e-3 * T2 / 2.0 -
297 2.4560 *
T + 1972.0 * std::log(
T);
300 Real v, dv_dT, d2v_dT2, d3v_dT3;
302 return temperature_part(
temperature) - temperature_part(reference_temperature) -
312 Real v, dv_dT, d2v_dT2, d3v_dT3;
326 Real
v, Real e, Real & s, Real & ds_dv, Real & ds_de)
const 336 ds_dv = ds_dp * dp_dv + ds_dT * dT_dv;
337 ds_de = ds_dp * dp_de + ds_dT * dT_de;
353 Real v, dv_dp, dv_dT;
355 Real h, dh_dp, dh_dT;
373 Real
pressure, Real
rho, Real & e, Real & de_dp, Real & de_drho)
const 382 de_drho = de_dT * dT_dv * -
v *
v;
388 Real v, dv_dT, d2v_dT2, d3v_dT3;
398 Real v, dv_dT, d2v_dT2, d3v_dT3;
413 Real
v, Real e, Real &
cp, Real & dcp_dv, Real & dcp_de)
const 422 dcp_dv = dcp_dp * dp_dv + dcp_dT * dT_dv;
423 dcp_de = dcp_dp * dp_de + dcp_dT * dT_de;
450 Real
v, Real e, Real &
cv, Real & dcv_dv, Real & dcv_de)
const 459 dcv_dv = dcv_dp * dp_dv + dcv_dT * dT_dv;
460 dcv_de = dcv_dp * dp_de + dcv_dT * dT_de;
478 dmu_dT = 0.16626 * -1 / t2 - 4.56877E1 * -2 / (
temperature * t2) + 2.8733E4 * -3 / (t2 * t2);
489 Real
v, Real e, Real &
mu, Real & dmu_dv, Real & dmu_de)
const 498 dmu_dv = dmu_dp * dp_dv + dmu_dT * dT_dv;
499 dmu_de = dmu_dp * dp_de + dmu_dT * dT_de;
526 Real
v, Real e, Real &
k, Real & dk_dv, Real & dk_de)
const 535 dk_dv = dk_dp * dp_dv + dk_dT * dT_dv;
536 dk_de = dk_dp * dp_de + dk_dT * dT_de;
SodiumSaturationFluidProperties(const InputParameters ¶meters)
virtual Real cp_from_p_T(Real p, Real T) const override
virtual Real mu_from_p_T(Real p, Real T) const override
Real cp0_from_T(Real temperature) const
e e e e s T T T T T rho T
static const std::string cv
virtual Real mu_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_T(Real p, Real T) const override
virtual Real rho_from_p_T(Real p, Real T) const override
static InputParameters validParams()
Fluid properties for liquid sodium at saturation conditions } }.
static InputParameters validParams()
static const std::string temperature
virtual Real p_from_v_e(Real v, Real e) const override
static constexpr Real _reference_pressure
virtual Real v_from_p_T(Real p, Real T) const override
DualNumber< Real, DNDerivativeType, false > ADReal
void specific_volume_derivatives(Real temperature, Real &v, Real &dv_dT, Real &d2v_dT2, Real &d3v_dT3) const
virtual Real rho_from_p_s(Real p, Real s) const override
static const std::string cp
const Real _tolerance
Newton's method may be used to convert between variable sets.
const bool _verbose_newton
Whether to output information about newton solves to console.
e e e e s T T T T T rho v v T e h
const std::string & name() const
virtual Real k_from_p_T(Real p, Real T) const override
virtual Real cv_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
std::pair< T, T > NewtonSolve(const T &x, const T &y, const Real z_initial_guess, const Real tolerance, const Functor &y_from_x_z, const std::string &caller_name, const unsigned int max_its=100, const bool verbose=false)
NewtonSolve does a 1D Newton Solve to solve the equation y = f(x, z) for variable z...
Common class for single phase fluid properties.
virtual Real cp_from_v_e(Real v, Real e) const override
virtual Real e_from_p_rho(Real p, Real rho) const override
Real dcp0_dT_from_T(Real temperature) const
virtual Real c_from_v_e(Real v, Real e) const override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual Real s_from_p_T(Real p, Real T) const override
virtual Real T_from_v_e(Real v, Real e) const override
virtual Real s_from_v_e(Real v, Real e) const override
registerMooseObject("FluidPropertiesApp", SodiumSaturationFluidProperties)
const unsigned int _max_newton_its
Maximum number of iterations for the variable conversion newton solves.
static const std::string pressure
virtual Real molarMass() const override
Molar mass [kg/mol].
virtual std::string fluidName() const override
Fluid name.
const Real _T_initial_guess
Initial guess for temperature (or temperature used to compute the initial guess)
static const std::string k
virtual Real T_from_p_h(Real p, Real h) const override