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 "Variable set conversions Newton solve");
42 _tolerance(isParamValid(
"tolerance") ? getParam<
Real>(
"tolerance") : 1e-8),
43 _T_initial_guess(isParamValid(
"T_initial_guess") ? getParam<
Real>(
"T_initial_guess") : 400),
44 _p_initial_guess(isParamValid(
"p_initial_guess") ? getParam<
Real>(
"p_initial_guess") : 2e5),
45 _max_newton_its(getParam<unsigned
int>(
"max_newton_its"))
51 #pragma GCC diagnostic push 52 #pragma GCC diagnostic ignored "-Woverloaded-virtual" 59 return s_from_v_e(
v, e);
63 SinglePhaseFluidProperties::s_from_p_T(
66 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
70 s_from_v_e(
v, e, s, ds_dv, ds_de);
71 ds_dp = ds_dv * dv_dp + ds_de * de_dp;
72 ds_dT = ds_dv * dv_dT + ds_de * de_dT;
76 SinglePhaseFluidProperties::s_from_v_e(
const Real
v,
const Real e)
const 81 bool conversion_succeeded =
true;
83 const Real s = s_from_p_T(
p,
T);
88 SinglePhaseFluidProperties::s_from_v_e(
89 const Real
v,
const Real e, Real & s, Real & ds_dv, Real & ds_de)
const 94 bool conversion_succeeded =
true;
102 SinglePhaseFluidProperties::c_from_p_T(Real p, Real T)
const 106 return c_from_v_e(
v, e);
110 SinglePhaseFluidProperties::c_from_p_T(Real p, Real T, Real &
c, Real & dc_dp, Real & dc_dT)
const 112 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
116 c_from_v_e(
v, e,
c, dc_dv, dc_de);
117 dc_dp = dc_dv * dv_dp + dc_de * de_dp;
118 dc_dT = dc_dv * dv_dT + dc_de * de_dT;
122 SinglePhaseFluidProperties::mu_from_p_T(Real p, Real T)
const 126 return mu_from_v_e(
v, e);
130 SinglePhaseFluidProperties::mu_from_p_T(
131 Real p, Real T, Real &
mu, Real & dmu_dp, Real & dmu_dT)
const 133 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
137 mu_from_v_e(
v, e,
mu, dmu_dv, dmu_de);
138 dmu_dp = dmu_dv * dv_dp + dmu_de * de_dp;
139 dmu_dT = dmu_dv * dv_dT + dmu_de * de_dT;
143 SinglePhaseFluidProperties::cv_from_p_T(Real p, Real T)
const 147 return cv_from_v_e(
v, e);
151 SinglePhaseFluidProperties::cv_from_p_T(
152 Real p, Real T, Real &
cv, Real & dcv_dp, Real & dcv_dT)
const 154 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
158 cv_from_v_e(
v, e,
cv, dcv_dv, dcv_de);
159 dcv_dp = dcv_dv * dv_dp + dcv_de * de_dp;
160 dcv_dT = dcv_dv * dv_dT + dcv_de * de_dT;
164 SinglePhaseFluidProperties::cp_from_p_T(Real p, Real T)
const 168 return cp_from_v_e(
v, e);
172 SinglePhaseFluidProperties::cp_from_p_T(
173 Real p, Real T, Real &
cp, Real & dcp_dp, Real & dcp_dT)
const 175 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
179 cp_from_v_e(
v, e,
cp, dcp_dv, dcp_de);
180 dcp_dp = dcp_dv * dv_dp + dcp_de * de_dp;
181 dcp_dT = dcp_dv * dv_dT + dcp_de * de_dT;
185 SinglePhaseFluidProperties::k_from_p_T(Real p, Real T)
const 189 return k_from_v_e(
v, e);
193 SinglePhaseFluidProperties::k_from_p_T(Real p, Real T, Real &
k, Real & dk_dp, Real & dk_dT)
const 195 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
199 k_from_v_e(
v, e,
k, dk_dv, dk_de);
200 dk_dp = dk_dv * dv_dp + dk_de * de_dp;
201 dk_dT = dk_dv * dv_dT + dk_de * de_dT;
205 SinglePhaseFluidProperties::h_from_v_e(Real
v, Real e)
const 207 return e +
v * p_from_v_e(
v, e);
211 SinglePhaseFluidProperties::h_from_v_e(Real
v, Real e, Real & h, Real & dh_dv, Real & dh_de)
const 213 Real p, dp_dv, dp_de;
214 p_from_v_e(
v, e,
p, dp_dv, dp_de);
216 dh_dv =
p +
v * dp_dv;
217 dh_de = 1 +
v * dp_de;
221 SinglePhaseFluidProperties::e_from_p_T(Real p, Real T)
const 224 return e_from_p_rho(
p,
rho);
228 SinglePhaseFluidProperties::e_from_p_T(Real p, Real T, Real & e, Real & de_dp, Real & de_dT)
const 231 Real rho = 0., drho_dp = 0., drho_dT = 0.;
232 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
235 Real depr_dp = 0., depr_drho = 0.;
236 e_from_p_rho(
p,
rho, e, depr_dp, depr_drho);
240 de_dp = depr_dp + depr_drho * drho_dp;
241 de_dT = depr_drho * drho_dT;
245 SinglePhaseFluidProperties::v_from_p_T(Real p, Real T)
const 252 SinglePhaseFluidProperties::v_from_p_T(Real p, Real T, Real &
v, Real & dv_dp, Real & dv_dT)
const 255 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
260 dv_dp = dv_drho * drho_dp;
261 dv_dT = dv_drho * drho_dT;
265 SinglePhaseFluidProperties::beta_from_p_T(Real, Real, Real &, Real &, Real &)
const 267 mooseError(__PRETTY_FUNCTION__,
" is not implemented.");
271 SinglePhaseFluidProperties::beta_from_p_T(Real p, Real T)
const 281 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
282 return -drho_dT /
rho;
288 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
294 return std::string(
"");
300 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
306 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
324 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
330 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
334 SinglePhaseFluidProperties::gamma_from_v_e(Real
v, Real e)
const 336 return cp_from_v_e(
v, e) / cv_from_v_e(
v, e);
340 SinglePhaseFluidProperties::gamma_from_v_e(
341 Real
v, Real e, Real & gamma, Real & dgamma_dv, Real & dgamma_de)
const 347 gamma = gamma_from_v_e(
v, e);
351 SinglePhaseFluidProperties::gamma_from_p_T(Real p, Real T)
const 353 return cp_from_p_T(
p,
T) / cv_from_p_T(
p,
T);
357 SinglePhaseFluidProperties::gamma_from_p_T(
358 Real p, Real T, Real & gamma, Real & dgamma_dp, Real & dgamma_dT)
const 364 gamma = gamma_from_p_T(
p,
T);
370 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
376 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
398 result.derivatives() =
T.derivatives() * dpdT;
406 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
428 result.derivatives() =
p.derivatives() * dTdp;
443 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
444 e_from_p_T(
p,
T, e, de_dp, de_dT);
450 rho = rho_from_p_T(
p,
T);
451 mu = mu_from_p_T(
p,
T);
464 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
465 mu_from_p_T(
p,
T,
mu, dmu_dp, dmu_dT);
474 rho = rho_from_p_T(
p,
T);
475 mu = mu_from_p_T(
p,
T);
481 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
487 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
491 SinglePhaseFluidProperties::T_from_p_h(Real p, Real h)
const 493 const Real s = s_from_h_p(
h,
p);
494 const Real rho = rho_from_p_s(
p, s);
496 const Real e = e_from_v_h(
v,
h);
497 return T_from_v_e(
v, e);
501 SinglePhaseFluidProperties::p_from_h_s(Real h, Real s)
const 506 bool conversion_succeeded =
true;
512 SinglePhaseFluidProperties::p_from_h_s(Real h, Real s, Real & p, Real & dp_dh, Real & dp_ds)
const 517 bool conversion_succeeded =
true;
519 dp_dh = rho_from_p_T(
p,
T);
520 dp_ds = -
T * rho_from_p_T(
p,
T);
524 SinglePhaseFluidProperties::T_from_p_h(Real p, Real h, Real & T, Real & dT_dp, Real & dT_dh)
const 526 Real s, ds_dh, ds_dp;
527 s_from_h_p(
h,
p, s, ds_dh, ds_dp);
529 Real rho, drho_dp_partial, drho_ds;
530 rho_from_p_s(
p, s,
rho, drho_dp_partial, drho_ds);
531 const Real drho_dp = drho_dp_partial + drho_ds * ds_dp;
532 const Real drho_dh = drho_ds * ds_dh;
536 const Real dv_dp = dv_drho * drho_dp;
537 const Real dv_dh = dv_drho * drho_dh;
539 Real e, de_dv, de_dh_partial;
540 e_from_v_h(
v,
h, e, de_dv, de_dh_partial);
541 const Real de_dp = de_dv * dv_dp;
542 const Real de_dh = de_dh_partial + de_dv * dv_dh;
545 T_from_v_e(
v, e,
T, dT_dv, dT_de);
546 dT_dp = dT_dv * dv_dp + dT_de * de_dp;
547 dT_dh = dT_dv * dv_dh + dT_de * de_dh;
550 #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
DualNumber< Real, DNDerivativeType, true > ADReal
void v_e_from_p_T(const CppType &p, const CppType &T, CppType &v, CppType &e) const
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.
static const std::string mu
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 v
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