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 "Variable set conversions Newton solve");
40 _tolerance(isParamValid(
"tolerance") ? getParam<
Real>(
"tolerance") : 1e-8),
41 _T_initial_guess(isParamValid(
"T_initial_guess") ? getParam<
Real>(
"T_initial_guess") : 400),
42 _p_initial_guess(isParamValid(
"p_initial_guess") ? getParam<
Real>(
"p_initial_guess") : 2e5)
48 #pragma GCC diagnostic push 49 #pragma GCC diagnostic ignored "-Woverloaded-virtual" 56 return s_from_v_e(
v, e);
60 SinglePhaseFluidProperties::s_from_p_T(
63 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
67 s_from_v_e(
v, e, s, ds_dv, ds_de);
68 ds_dp = ds_dv * dv_dp + ds_de * de_dp;
69 ds_dT = ds_dv * dv_dT + ds_de * de_dT;
73 SinglePhaseFluidProperties::s_from_v_e(
const Real
v,
const Real e)
const 78 bool conversion_succeeded =
true;
80 const Real s = s_from_p_T(
p,
T);
85 SinglePhaseFluidProperties::s_from_v_e(
86 const Real
v,
const Real e, Real & s, Real & ds_dv, Real & ds_de)
const 91 bool conversion_succeeded =
true;
99 SinglePhaseFluidProperties::c_from_p_T(Real p, Real T)
const 103 return c_from_v_e(
v, e);
107 SinglePhaseFluidProperties::c_from_p_T(Real p, Real T, Real &
c, Real & dc_dp, Real & dc_dT)
const 109 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
113 c_from_v_e(
v, e,
c, dc_dv, dc_de);
114 dc_dp = dc_dv * dv_dp + dc_de * de_dp;
115 dc_dT = dc_dv * dv_dT + dc_de * de_dT;
119 SinglePhaseFluidProperties::mu_from_p_T(Real p, Real T)
const 123 return mu_from_v_e(
v, e);
127 SinglePhaseFluidProperties::mu_from_p_T(
128 Real p, Real T, Real &
mu, Real & dmu_dp, Real & dmu_dT)
const 130 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
134 mu_from_v_e(
v, e,
mu, dmu_dv, dmu_de);
135 dmu_dp = dmu_dv * dv_dp + dmu_de * de_dp;
136 dmu_dT = dmu_dv * dv_dT + dmu_de * de_dT;
140 SinglePhaseFluidProperties::cv_from_p_T(Real p, Real T)
const 144 return cv_from_v_e(
v, e);
148 SinglePhaseFluidProperties::cv_from_p_T(
149 Real p, Real T, Real &
cv, Real & dcv_dp, Real & dcv_dT)
const 151 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
155 cv_from_v_e(
v, e,
cv, dcv_dv, dcv_de);
156 dcv_dp = dcv_dv * dv_dp + dcv_de * de_dp;
157 dcv_dT = dcv_dv * dv_dT + dcv_de * de_dT;
161 SinglePhaseFluidProperties::cp_from_p_T(Real p, Real T)
const 165 return cp_from_v_e(
v, e);
169 SinglePhaseFluidProperties::cp_from_p_T(
170 Real p, Real T, Real &
cp, Real & dcp_dp, Real & dcp_dT)
const 172 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
176 cp_from_v_e(
v, e,
cp, dcp_dv, dcp_de);
177 dcp_dp = dcp_dv * dv_dp + dcp_de * de_dp;
178 dcp_dT = dcp_dv * dv_dT + dcp_de * de_dT;
182 SinglePhaseFluidProperties::k_from_p_T(Real p, Real T)
const 186 return k_from_v_e(
v, e);
190 SinglePhaseFluidProperties::k_from_p_T(Real p, Real T, Real &
k, Real & dk_dp, Real & dk_dT)
const 192 Real v, e, dv_dp, dv_dT, de_dp, de_dT;
196 k_from_v_e(
v, e,
k, dk_dv, dk_de);
197 dk_dp = dk_dv * dv_dp + dk_de * de_dp;
198 dk_dT = dk_dv * dv_dT + dk_de * de_dT;
202 SinglePhaseFluidProperties::e_from_p_T(Real p, Real T)
const 205 return e_from_p_rho(
p,
rho);
209 SinglePhaseFluidProperties::e_from_p_T(Real p, Real T, Real & e, Real & de_dp, Real & de_dT)
const 212 Real rho = 0., drho_dp = 0., drho_dT = 0.;
213 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
216 Real depr_dp = 0., depr_drho = 0.;
217 e_from_p_rho(
p,
rho, e, depr_dp, depr_drho);
221 de_dp = depr_dp + depr_drho * drho_dp;
222 de_dT = depr_drho * drho_dT;
226 SinglePhaseFluidProperties::v_from_p_T(Real p, Real T)
const 233 SinglePhaseFluidProperties::v_from_p_T(Real p, Real T, Real &
v, Real & dv_dp, Real & dv_dT)
const 236 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
241 dv_dp = dv_drho * drho_dp;
242 dv_dT = dv_drho * drho_dT;
246 SinglePhaseFluidProperties::beta_from_p_T(Real, Real, Real &, Real &, Real &)
const 248 mooseError(__PRETTY_FUNCTION__,
" is not implemented.");
252 SinglePhaseFluidProperties::beta_from_p_T(Real p, Real T)
const 262 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
263 return -drho_dT /
rho;
269 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
273 SinglePhaseFluidProperties::fluidName()
const 275 return std::string(
"");
281 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
287 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
293 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
299 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
305 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
311 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
315 SinglePhaseFluidProperties::gamma_from_v_e(Real
v, Real e)
const 317 return cp_from_v_e(
v, e) / cv_from_v_e(
v, e);
321 SinglePhaseFluidProperties::gamma_from_v_e(
322 Real
v, Real e, Real & gamma, Real & dgamma_dv, Real & dgamma_de)
const 324 fluidPropError(__PRETTY_FUNCTION__,
" derivatives not implemented.");
328 gamma = gamma_from_v_e(
v, e);
332 SinglePhaseFluidProperties::gamma_from_p_T(Real p, Real T)
const 334 return cp_from_p_T(
p,
T) / cv_from_p_T(
p,
T);
338 SinglePhaseFluidProperties::gamma_from_p_T(
339 Real p, Real T, Real & gamma, Real & dgamma_dp, Real & dgamma_dT)
const 341 fluidPropError(__PRETTY_FUNCTION__,
" derivatives not implemented.");
345 gamma = gamma_from_p_T(
p,
T);
350 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
356 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
362 fluidPropError(__PRETTY_FUNCTION__,
" derivatives not implemented.");
378 result.derivatives() =
T.derivatives() * dpdT;
385 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
391 fluidPropError(__PRETTY_FUNCTION__,
" derivatives not implemented.");
407 result.derivatives() =
p.derivatives() * dTdp;
422 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
423 e_from_p_T(
p,
T, e, de_dp, de_dT);
429 rho = rho_from_p_T(
p,
T);
430 mu = mu_from_p_T(
p,
T);
443 rho_from_p_T(
p,
T,
rho, drho_dp, drho_dT);
444 mu_from_p_T(
p,
T,
mu, dmu_dp, dmu_dT);
453 rho = rho_from_p_T(
p,
T);
454 mu = mu_from_p_T(
p,
T);
459 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
465 mooseError(__PRETTY_FUNCTION__,
" not implemented.");
469 SinglePhaseFluidProperties::T_from_p_h(Real p, Real h)
const 471 const Real s = s_from_h_p(
h,
p);
472 const Real rho = rho_from_p_s(
p, s);
474 const Real e = e_from_v_h(
v,
h);
475 return T_from_v_e(
v, e);
479 SinglePhaseFluidProperties::p_from_h_s(Real h, Real s)
const 484 bool conversion_succeeded =
true;
490 SinglePhaseFluidProperties::p_from_h_s(Real h, Real s, Real & p, Real & dp_dh, Real & dp_ds)
const 495 bool conversion_succeeded =
true;
497 dp_dh = rho_from_p_T(
p,
T);
498 dp_ds = -
T * rho_from_p_T(
p,
T);
502 SinglePhaseFluidProperties::T_from_p_h(Real p, Real h, Real & T, Real & dT_dp, Real & dT_dh)
const 504 Real s, ds_dh, ds_dp;
505 s_from_h_p(
h,
p, s, ds_dh, ds_dp);
507 Real rho, drho_dp_partial, drho_ds;
508 rho_from_p_s(
p, s,
rho, drho_dp_partial, drho_ds);
509 const Real drho_dp = drho_dp_partial + drho_ds * ds_dp;
510 const Real drho_dh = drho_ds * ds_dh;
514 const Real dv_dp = dv_drho * drho_dp;
515 const Real dv_dh = dv_drho * drho_dh;
517 Real e, de_dv, de_dh_partial;
518 e_from_v_h(
v,
h, e, de_dv, de_dh_partial);
519 const Real de_dp = de_dv * dv_dp;
520 const Real de_dh = de_dh_partial + de_dv * dv_dh;
523 T_from_v_e(
v, e,
T, dT_dv, dT_de);
524 dT_dp = dT_dv * dv_dp + dT_de * de_dp;
525 dT_dh = dT_dv * dv_dh + dT_de * de_dh;
528 #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()
DualNumber< Real, DNDerivativeType, true > DualReal
virtual virtual std Real molarMass() const
Fluid name.
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
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()
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.
e e e e s T T T T T rho v v T h
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
void mooseError(Args &&... args) const
virtual Real criticalPressure() const
Critical pressure.
void fluidPropError(Args... args) const
virtual Real vaporPressure(Real T) const
Vapor pressure.
const Real _T_initial_guess
static const std::string k