16 params.
set<std::string>(
"fp_type") =
"single-phase-fp";
20 "tolerance", 1e-8,
"tolerance > 0",
"Tolerance for 2D Newton variable set conversion");
24 "T_initial_guess > 0",
25 "Temperature initial guess for Newton Method variable set conversion");
29 "p_initial_guess > 0",
30 "Pressure initial guess for Newton Method variable set conversion");
32 "max_newton_its", 100,
"Maximum number of Newton iterations for variable set conversions");
34 "verbose_newton",
false,
"Whether to output Newton inversion iterations to console");
36 "tolerance T_initial_guess p_initial_guess max_newton_its verbose_newton",
37 "Variable set conversions Newton solve");
45 _tolerance(getParam<
Real>(
"tolerance")),
46 _T_initial_guess(getParam<
Real>(
"T_initial_guess")),
47 _p_initial_guess(getParam<
Real>(
"p_initial_guess")),
48 _max_newton_its(getParam<unsigned
int>(
"max_newton_its")),
49 _verbose_newton(getParam<bool>(
"verbose_newton"))
55 #pragma GCC diagnostic push 56 #pragma GCC diagnostic ignored "-Woverloaded-virtual" 63 return s_from_v_e(
v, e);
67 SinglePhaseFluidProperties::s_from_p_T(
70 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
74 s_from_v_e(
v, e, s, ds_dv, ds_de);
75 ds_dp = ds_dv * dv_dp + ds_de * de_dp;
76 ds_dT = ds_dv * dv_dT + ds_de * de_dT;
80 SinglePhaseFluidProperties::s_from_v_e(
const Real
v,
const Real e)
const 85 bool conversion_succeeded =
true;
87 const Real s = s_from_p_T(
p,
T);
92 SinglePhaseFluidProperties::s_from_v_e(
93 const Real
v,
const Real e, Real & s, Real & ds_dv, Real & ds_de)
const 98 bool conversion_succeeded =
true;
100 s = s_from_p_T(
p,
T);
106 SinglePhaseFluidProperties::c_from_p_T(Real
p, Real
T)
const 110 return c_from_v_e(
v, e);
114 SinglePhaseFluidProperties::c_from_p_T(Real
p, Real
T, Real &
c, Real & dc_dp, Real & dc_dT)
const 116 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
120 c_from_v_e(
v, e,
c, dc_dv, dc_de);
121 dc_dp = dc_dv * dv_dp + dc_de * de_dp;
122 dc_dT = dc_dv * dv_dT + dc_de * de_dT;
126 SinglePhaseFluidProperties::mu_from_p_T(Real
p, Real
T)
const 130 return mu_from_v_e(
v, e);
134 SinglePhaseFluidProperties::mu_from_p_T(
135 Real
p, Real
T, Real &
mu, Real & dmu_dp, Real & dmu_dT)
const 137 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
141 mu_from_v_e(
v, e,
mu, dmu_dv, dmu_de);
142 dmu_dp = dmu_dv * dv_dp + dmu_de * de_dp;
143 dmu_dT = dmu_dv * dv_dT + dmu_de * de_dT;
147 SinglePhaseFluidProperties::cv_from_p_T(Real
p, Real
T)
const 151 return cv_from_v_e(
v, e);
155 SinglePhaseFluidProperties::cv_from_p_T(
156 Real
p, Real
T, Real &
cv, Real & dcv_dp, Real & dcv_dT)
const 158 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
162 cv_from_v_e(
v, e,
cv, dcv_dv, dcv_de);
163 dcv_dp = dcv_dv * dv_dp + dcv_de * de_dp;
164 dcv_dT = dcv_dv * dv_dT + dcv_de * de_dT;
168 SinglePhaseFluidProperties::cp_from_p_T(Real
p, Real
T)
const 172 return cp_from_v_e(
v, e);
176 SinglePhaseFluidProperties::cp_from_p_T(
177 Real
p, Real
T, Real &
cp, Real & dcp_dp, Real & dcp_dT)
const 179 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
183 cp_from_v_e(
v, e,
cp, dcp_dv, dcp_de);
184 dcp_dp = dcp_dv * dv_dp + dcp_de * de_dp;
185 dcp_dT = dcp_dv * dv_dT + dcp_de * de_dT;
189 SinglePhaseFluidProperties::k_from_p_T(Real
p, Real
T)
const 193 return k_from_v_e(
v, e);
197 SinglePhaseFluidProperties::k_from_p_T(Real
p, Real
T, Real &
k, Real & dk_dp, Real & dk_dT)
const 199 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
203 k_from_v_e(
v, e,
k, dk_dv, dk_de);
204 dk_dp = dk_dv * dv_dp + dk_de * de_dp;
205 dk_dT = dk_dv * dv_dT + dk_de * de_dT;
209 SinglePhaseFluidProperties::h_from_v_e(Real
v, Real e)
const 211 return e +
v * p_from_v_e(
v, e);
215 SinglePhaseFluidProperties::h_from_v_e(Real
v, Real e, Real & h, Real & dh_dv, Real & dh_de)
const 217 Real p, dp_dv, dp_de;
218 p_from_v_e(
v, e,
p, dp_dv, dp_de);
220 dh_dv =
p +
v * dp_dv;
221 dh_de = 1 +
v * dp_de;
225 SinglePhaseFluidProperties::e_from_p_T(Real
p, Real
T)
const 228 return e_from_p_rho(
p,
rho);
232 SinglePhaseFluidProperties::e_from_p_T(Real
p, Real
T, Real & e, Real & de_dp, Real & de_dT)
const 235 Real rho = 0., drho_dp = 0., drho_dT = 0.;
236 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
239 Real depr_dp = 0., depr_drho = 0.;
240 e_from_p_rho(
p,
rho, e, depr_dp, depr_drho);
244 de_dp = depr_dp + depr_drho * drho_dp;
245 de_dT = depr_drho * drho_dT;
249 SinglePhaseFluidProperties::v_from_p_T(Real
p, Real
T)
const 256 SinglePhaseFluidProperties::v_from_p_T(Real
p, Real
T, Real &
v, Real & dv_dp, Real & dv_dT)
const 259 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
264 dv_dp = dv_drho * drho_dp;
265 dv_dT = dv_drho * drho_dT;
269 SinglePhaseFluidProperties::beta_from_p_T(Real, Real, Real &, Real &, Real &)
const 271 mooseError(__PRETTY_FUNCTION__,
" is not implemented.");
275 SinglePhaseFluidProperties::beta_from_p_T(Real
p, Real
T)
const 285 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
286 return -drho_dT /
rho;
292 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
298 return std::string(
"");
304 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
310 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
328 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
334 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
338 SinglePhaseFluidProperties::gamma_from_v_e(Real
v, Real e)
const 340 return cp_from_v_e(
v, e) / cv_from_v_e(
v, e);
344 SinglePhaseFluidProperties::gamma_from_v_e(
345 Real
v, Real e, Real & gamma, Real & dgamma_dv, Real & dgamma_de)
const 351 gamma = gamma_from_v_e(
v, e);
355 SinglePhaseFluidProperties::gamma_from_p_T(Real
p, Real
T)
const 357 return cp_from_p_T(
p,
T) / cv_from_p_T(
p,
T);
361 SinglePhaseFluidProperties::gamma_from_p_T(
362 Real
p, Real
T, Real & gamma, Real & dgamma_dp, Real & dgamma_dT)
const 368 gamma = gamma_from_p_T(
p,
T);
374 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
380 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
402 result.derivatives() =
T.derivatives() * dpdT;
410 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
432 result.derivatives() =
p.derivatives() * dTdp;
447 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
448 e_from_p_T(
p,
T, e, de_dp, de_dT);
454 rho = rho_from_p_T(
p,
T);
455 mu = mu_from_p_T(
p,
T);
468 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
469 mu_from_p_T(
p,
T,
mu, dmu_dp, dmu_dT);
478 rho = rho_from_p_T(
p,
T);
479 mu = mu_from_p_T(
p,
T);
485 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
491 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
495 SinglePhaseFluidProperties::T_from_p_h(Real
p, Real h)
const 497 const Real s = s_from_h_p(
h,
p);
498 const Real rho = rho_from_p_s(
p, s);
500 const Real e = e_from_v_h(
v,
h);
501 return T_from_v_e(
v, e);
505 SinglePhaseFluidProperties::p_from_h_s(Real h, Real s)
const 510 bool conversion_succeeded =
true;
516 SinglePhaseFluidProperties::p_from_h_s(Real h, Real s, Real &
p, Real & dp_dh, Real & dp_ds)
const 521 bool conversion_succeeded =
true;
523 dp_dh = rho_from_p_T(
p,
T);
524 dp_ds = -
T * rho_from_p_T(
p,
T);
528 SinglePhaseFluidProperties::T_from_p_h(Real
p, Real h, Real &
T, Real & dT_dp, Real & dT_dh)
const 530 Real s, ds_dh, ds_dp;
531 s_from_h_p(
h,
p, s, ds_dh, ds_dp);
533 Real rho, drho_dp_partial, drho_ds;
534 rho_from_p_s(
p, s,
rho, drho_dp_partial, drho_ds);
535 const Real drho_dp = drho_dp_partial + drho_ds * ds_dp;
536 const Real drho_dh = drho_ds * ds_dh;
540 const Real dv_dp = dv_drho * drho_dp;
541 const Real dv_dh = dv_drho * drho_dh;
543 Real e, de_dv, de_dh_partial;
544 e_from_v_h(
v,
h, e, de_dv, de_dh_partial);
545 const Real de_dp = de_dv * dv_dp;
546 const Real de_dh = de_dh_partial + de_dv * dv_dh;
549 T_from_v_e(
v, e,
T, dT_dv, dT_de);
550 dT_dp = dT_dv * dv_dp + dT_de * de_dp;
551 dT_dh = dT_dv * dv_dh + dT_de * de_dh;
554 #pragma GCC diagnostic pop
e e e e s T T T T T rho T
static const std::string cv
virtual Real triplePointTemperature() const
Triple point temperature.
static InputParameters validParams()
static InputParameters validParams()
virtual Real molarMass() const
Molar mass [kg/mol].
virtual std::vector< Real > henryCoefficients() const
Henry's law coefficients for dissolution in water.
SinglePhaseFluidProperties(const InputParameters ¶meters)
static const std::string temperature
void v_e_from_p_T(const CppType &p, const CppType &T, CppType &v, CppType &e) const
DualNumber< Real, DNDerivativeType, false > ADReal
void p_T_from_v_e(const CppType &v, const CppType &e, Real p0, Real T0, CppType &p, CppType &T, bool &conversion_succeeded) const
Determines (p,T) from (v,e) using Newton Solve in 2D Useful for conversion between different sets of ...
virtual Real criticalInternalEnergy() const
Critical specific internal energy.
static const std::string cp
virtual ~SinglePhaseFluidProperties()
e e e e s T T T T T rho v v T e h
virtual Real vaporTemperature(Real p) const
Vapor temperature.
virtual Real criticalTemperature() const
Critical temperature.
virtual void v_e_spndl_from_T(Real T, Real &v, Real &e) const
Specific internal energy from temperature and specific volume.
virtual void rho_e_from_p_T(Real p, Real T, Real &rho, Real &drho_dp, Real &drho_dT, Real &e, Real &de_dp, Real &de_dT) const
virtual Real triplePointPressure() const
Triple point pressure.
virtual Real e_spndl_from_v(Real v) const
Specific internal energy from temperature and specific volume.
void p_T_from_h_s(const T &h, const T &s, Real p0, Real T0, T &pressure, T &temperature, bool &conversion_succeeded) const
Determines (p,T) from (h,s) using Newton Solve in 2D Useful for conversion between different sets of ...
virtual void rho_mu_from_p_T(Real p, Real T, Real &rho, Real &mu) const
Combined methods.
virtual Real criticalDensity() const
Critical density.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string pressure
const Real _p_initial_guess
Initial guess for pressure (or pressure used to compute the initial guess)
void mooseError(Args &&... args) const
virtual Real criticalPressure() const
Critical pressure.
e e e e s T T T T T rho v v T e p T T virtual T std::string fluidName() const
Fluid name.
virtual Real vaporPressure(Real T) const
Vapor pressure.
const Real _T_initial_guess
Initial guess for temperature (or temperature used to compute the initial guess)
void unimplementedDerivativeMethod(const std::string &property_function_name) const
static const std::string k
void ErrorVector unsigned int