Go to the documentation of this file.
11 #include "MathUtils.h"
12 #include "libmesh/utility.h"
21 params.addClassDescription(
"Fluid properties for water and steam (H2O) using IAPWS-IF97");
29 _p_critical(22.064e6),
114 mooseError(
name(),
": inRegion() has given an incorrect region");
123 Real pi, tau, ddensity_dp, ddensity_dT;
160 ddensity_dp = 1.0 / (
_Rw *
temperature * delta * (2.0 * dpdd + delta * d2pdd2));
162 (2.0 * dpdd + delta * d2pdd2);
178 mooseError(
name(),
": inRegion() has given an incorrect region");
182 drho_dp = ddensity_dp;
183 drho_dT = ddensity_dT;
227 mooseError(
name(),
": inRegion() has given an incorrect region");
237 Real pi, tau, dinternal_energy_dp, dinternal_energy_dT;
249 dinternal_energy_dp =
251 dinternal_energy_dT =
262 dinternal_energy_dp =
264 dinternal_energy_dT =
278 dinternal_energy_dp =
281 dinternal_energy_dT =
282 -
_Rw * (delta * tau * d2pddt * (dpdd - tau * d2pddt) / (2.0 * dpdd + delta * d2pdd2) +
293 dinternal_energy_dp =
295 dinternal_energy_dT =
301 mooseError(
name(),
": inRegion has given an incorrect region");
305 de_dp = dinternal_energy_dp;
306 de_dT = dinternal_energy_dT;
312 Real speed2, pi, tau, delta;
361 mooseError(
name(),
": inRegion() has given an incorrect region");
364 return std::sqrt(speed2);
370 Real specific_heat, pi, tau, delta;
411 mooseError(
name(),
": inRegion() has given an incorrect region");
413 return specific_heat;
419 Real specific_heat, pi, tau, delta;
463 mooseError(
name(),
": inRegion() has given an incorrect region");
465 return specific_heat;
479 Real
rho, drho_dp, drho_dT;
483 dmu_dp = dmu_drho * drho_dp;
489 Real mu_star = 1.e-6;
495 for (std::size_t i = 0; i <
_mu_H0.size(); ++i)
498 Real mu0 = 100.0 * std::sqrt(Tbar) / sum0;
502 for (std::size_t i = 0; i <
_mu_H1.size(); ++i)
506 Real mu1 = std::exp(rhobar * sum1);
509 return mu_star * mu0 * mu1;
520 Real mu_star = 1.0e-6;
527 Real sum0 = 0.0, dsum0_dTbar = 0.0;
528 for (std::size_t i = 0; i <
_mu_H0.size(); ++i)
534 Real mu0 = 100.0 * std::sqrt(Tbar) / sum0;
536 50.0 / std::sqrt(Tbar) / sum0 - 100.0 * std::sqrt(Tbar) * dsum0_dTbar / sum0 / sum0;
539 Real sum1 = 0.0, dsum1_drho = 0.0, dsum1_dTbar = 0.0;
540 for (std::size_t i = 0; i <
_mu_H1.size(); ++i)
550 Real mu1 = std::exp(rhobar * sum1);
551 Real dmu1_drho = (sum1 + rhobar * dsum1_drho) * mu1;
552 Real dmu1_dTbar = (rhobar * dsum1_dTbar) * mu1;
555 mu = mu_star * mu0 * mu1;
556 dmu_drho = mu_star * mu0 * dmu1_drho * drhobar_drho;
557 dmu_dT = mu_star * (dmu0_dTbar * mu1 + mu0 * dmu1_dTbar) * dTbar_dT + dmu_drho * ddensity_dT;
583 dmu_dp = dmu_drho * drho_dp;
596 mooseError(
name(),
": k_from_p_T() is not implemented.");
610 for (std::size_t i = 0; i <
_k_a.size(); ++i)
613 Real lambda0 = std::sqrt(Tbar) * sum0;
616 Real lambda1 = -0.39707 + 0.400302 * rhobar +
617 1.06 * std::exp(-0.171587 * Utility::pow<2>(rhobar + 2.392190));
620 Real DeltaT = std::abs(Tbar - 1.0) + 0.00308976;
621 Real Q = 2.0 + 0.0822994 /
std::pow(DeltaT, 0.6);
622 Real S = (Tbar >= 1.0 ? 1.0 / DeltaT : 10.0932 /
std::pow(DeltaT, 0.6));
625 (0.0701309 / Utility::pow<10>(Tbar) + 0.011852) *
std::pow(rhobar, 1.8) *
626 std::exp(0.642857 * (1.0 -
std::pow(rhobar, 2.8))) +
627 0.00169937 * S *
std::pow(rhobar, Q) *
628 std::exp((Q / (1.0 + Q)) * (1.0 -
std::pow(rhobar, 1.0 + Q))) -
629 1.02 * std::exp(-4.11717 *
std::pow(Tbar, 1.5) - 6.17937 / Utility::pow<5>(rhobar));
631 return lambda0 + lambda1 + lambda2;
637 Real entropy, pi, tau, density3, delta;
670 mooseError(
name(),
": inRegion() has given an incorrect region");
678 SinglePhaseFluidProperties::s_from_p_T(
p,
T, s, ds_dp, ds_dT);
720 mooseError(
"Water97FluidProperties::inRegion has given an incorrect region");
729 Real
enthalpy, pi, tau, delta, denthalpy_dp, denthalpy_dT;
761 denthalpy_dp = (d2pddt + dpdd + delta * d2pdd2) /
_rho_critical /
762 (2.0 * delta * dpdd + delta * delta * d2pdd2);
763 denthalpy_dT =
_Rw * delta * dpdd * (1.0 - tau * d2pddt / dpdd) *
764 (1.0 - tau * d2pddt / dpdd) / (2.0 + delta * d2pdd2 / dpdd) -
778 mooseError(
"Water97FluidProperties::inRegion has given an incorrect region");
781 dh_dp = denthalpy_dp;
782 dh_dT = denthalpy_dT;
790 if (temperature < 273.15 || temperature >
_T_critical)
791 mooseException(
name(),
792 ": vaporPressure(): Temperature ",
794 " is outside range 273.15 K <= T "
797 Real theta, theta2, a, b, c,
p;
799 theta2 = theta * theta;
800 a = theta2 +
_n4[0] * theta +
_n4[1];
801 b =
_n4[2] * theta2 +
_n4[3] * theta +
_n4[4];
802 c =
_n4[5] * theta2 +
_n4[6] * theta +
_n4[7];
803 p = Utility::pow<4>(2.0 * c / (-b + std::sqrt(b * b - 4.0 * a * c)));
813 if (temperature < 273.15 || temperature >
_T_critical)
814 mooseException(
name(),
815 ": vaporPressure(): Temperature is outside range 273.15 K <= T <= 647.096 K");
817 Real theta, dtheta_dT, theta2, a, b, c, da_dtheta, db_dtheta, dc_dtheta;
820 theta2 = theta * theta;
822 a = theta2 +
_n4[0] * theta +
_n4[1];
823 b =
_n4[2] * theta2 +
_n4[3] * theta +
_n4[4];
824 c =
_n4[5] * theta2 +
_n4[6] * theta +
_n4[7];
826 da_dtheta = 2.0 * theta +
_n4[0];
827 db_dtheta = 2.0 *
_n4[2] * theta +
_n4[3];
828 dc_dtheta = 2.0 *
_n4[5] * theta +
_n4[6];
830 Real denominator = -b + std::sqrt(b * b - 4.0 * a * c);
832 psat = Utility::pow<4>(2.0 * c / denominator) * 1.0e6;
835 Real dpsat = 4.0 * Utility::pow<3>(2.0 * c / denominator);
836 dpsat *= (2.0 * dc_dtheta / denominator -
837 2.0 * c / denominator / denominator *
838 (-db_dtheta +
std::pow(b * b - 4.0 * a * c, -0.5) *
839 (b * db_dtheta - 2.0 * da_dtheta * c - 2.0 * a * dc_dtheta)));
840 dpsat_dT = dpsat * dtheta_dT * 1.0e6;
849 mooseException(
name() +
": vaporTemperature(): Pressure ",
851 " is outside range 611.213 Pa <= p <= 22.064 MPa");
858 const FPDualReal d = 2.0 * g / (-f - std::sqrt(f * f - 4.0 * e * g));
860 return (
_n4[9] + d - std::sqrt((
_n4[9] + d) * (
_n4[9] + d) - 4.0 * (
_n4[8] +
_n4[9] * d))) / 2.0;
875 Moose::derivInsert(
p.derivatives(), 0, 1.0);
880 dTsat_dp =
T.derivatives()[0];
888 if (temperature < 623.15 || temperature > 863.15)
889 mooseException(
name(),
890 ": b23p(): Temperature ",
892 " is outside range of 623.15 K <= T <= 863.15 K");
902 if (pressure < 16.529e6 || pressure > 100.0e6)
904 name(),
": b23T(): Pressure ",
pressure,
"is outside range 16.529 MPa <= p <= 100 MPa");
917 mooseException(
"Pressure ",
pressure,
" is out of range in ",
name(),
": inRegion()");
921 if (pressure < 0.0 || pressure > 50.0e6)
922 mooseException(
"Pressure ",
pressure,
" is out of range in ",
name(),
": inRegion()");
925 mooseException(
"Temperature ",
temperature,
" is out of range in ",
name(),
": inRegion()");
956 for (std::size_t i = 0; i <
_n1.size(); ++i)
966 for (std::size_t i = 0; i <
_n1.size(); ++i)
977 for (std::size_t i = 0; i <
_n1.size(); ++i)
988 for (std::size_t i = 0; i <
_n1.size(); ++i)
999 for (std::size_t i = 0; i <
_n1.size(); ++i)
1010 for (std::size_t i = 0; i <
_n1.size(); ++i)
1022 for (std::size_t i = 0; i <
_n02.size(); ++i)
1025 Real g0 = std::log(pi) + sum0;
1029 for (std::size_t i = 0; i <
_n2.size(); ++i)
1039 Real dg0 = 1.0 / pi;
1043 for (std::size_t i = 0; i <
_n2.size(); ++i)
1053 Real dg0 = -1.0 / pi / pi;
1057 for (std::size_t i = 0; i <
_n2.size(); ++i)
1069 for (std::size_t i = 0; i <
_n02.size(); ++i)
1074 for (std::size_t i = 0; i <
_n2.size(); ++i)
1085 for (std::size_t i = 0; i <
_n02.size(); ++i)
1090 for (std::size_t i = 0; i <
_n2.size(); ++i)
1105 for (std::size_t i = 0; i <
_n2.size(); ++i)
1116 for (std::size_t i = 1; i <
_n3.size(); ++i)
1119 return _n3[0] * std::log(delta) + sum;
1126 for (std::size_t i = 1; i <
_n3.size(); ++i)
1129 return _n3[0] / delta + sum;
1136 for (std::size_t i = 1; i <
_n3.size(); ++i)
1140 return -
_n3[0] / delta / delta + sum;
1147 for (std::size_t i = 1; i <
_n3.size(); ++i)
1157 for (std::size_t i = 1; i <
_n3.size(); ++i)
1168 for (std::size_t i = 1; i <
_n3.size(); ++i)
1180 for (std::size_t i = 0; i <
_n05.size(); ++i)
1183 Real g0 = std::log(pi) + sum0;
1187 for (std::size_t i = 0; i <
_n5.size(); ++i)
1197 Real dg0 = 1.0 / pi;
1201 for (std::size_t i = 0; i <
_n5.size(); ++i)
1211 Real dg0 = -1.0 / pi / pi;
1215 for (std::size_t i = 0; i <
_n5.size(); ++i)
1227 for (std::size_t i = 0; i <
_n05.size(); ++i)
1232 for (std::size_t i = 0; i <
_n5.size(); ++i)
1243 for (std::size_t i = 0; i <
_n05.size(); ++i)
1248 for (std::size_t i = 0; i <
_n5.size(); ++i)
1263 for (std::size_t i = 0; i <
_n5.size(); ++i)
1274 const Real P3cd = 19.00881189173929;
1275 unsigned int subregion = 0;
1277 if (pMPa > 40.0 && pMPa <= 100.0)
1284 else if (pMPa > 25.0 && pMPa <= 40.0)
1295 else if (pMPa > 23.5 && pMPa <= 25.0)
1310 else if (pMPa > 23.0 && pMPa <= 23.5)
1325 else if (pMPa > 22.5 && pMPa <= 23.0)
1353 if (pMPa > 22.11 && pMPa <= 22.5)
1364 else if (pMPa > 22.064 && pMPa <= 22.11)
1377 if (pMPa > 21.93161551 && pMPa <= 22.064)
1387 if (pMPa > 21.90096265 && pMPa <= 22.064)
1403 else if (pMPa > 20.5 &&
1415 else if (pMPa > P3cd && pMPa <= 20.5)
1424 else if (pMPa >
vaporPressure(623.15) * 1.0e-6 && pMPa <= P3cd)
1431 else if (pMPa > 22.11 && pMPa <= 22.5)
1442 else if (pMPa > 22.064 && pMPa <= 22.11)
1454 mooseError(
name(),
": subregion3(): Shouldn't have got here!");
1508 if (xy ==
AB || xy ==
OP || xy ==
WX)
1509 for (std::size_t i = 0; i <
_tempXY_n[row].size(); ++i)
1514 for (std::size_t i = 0; i <
_tempXY_n[row].size(); ++i)
1522 Real pi, Real theta, Real a, Real b, Real c, Real d, Real e,
unsigned int sid)
const
1526 for (std::size_t i = 0; i <
_n3s[sid].size(); ++i)
1541 Real vstar, pi, theta, a, b, c, d, e;
1544 vstar =
_par3[sid][0];
1560 for (std::size_t i = 0; i < N; ++i)
1564 volume = vstar * std::exp(sum);
1570 return 1.0 / volume;
1576 unsigned int region;
1593 mooseException(
"Enthalpy ",
enthalpy,
" is out of range in ",
name(),
": inRegionPH()");
1608 mooseException(
"Enthalpy ",
enthalpy,
" is out of range in ",
name(),
": inRegionPH()");
1621 mooseException(
"Enthalpy ",
enthalpy,
" is out of range in ",
name(),
": inRegionPH()");
1624 mooseException(
"Pressure ",
pressure,
" is out of range in ",
name(),
": inRegionPH()");
1632 unsigned int subregion;
1652 unsigned int subregion;
1666 if (pressure < 6.5467e6 || pressure > 100.0e6)
1668 name(),
": b2bc(): Pressure ",
pressure,
" is outside range of 6.5467 MPa <= p <= 100 MPa");
1672 return (0.26526571908428e4 + std::sqrt((pi - 0.45257578905948e1) / 0.12809002730136e-3)) * 1.0e3;
1689 Moose::derivInsert(
p.derivatives(), 0, 1.0);
1691 Moose::derivInsert(
h.derivatives(), 1, 1.0);
1696 dT_dp =
T.derivatives()[0];
1697 dT_dh =
T.derivatives()[1];
1722 else if (subregion == 2)
1742 mooseError(
name(),
": temperature_from_ph() not implemented for region 5");
1746 mooseError(
name(),
": inRegionPH() has given an incorrect region");
1760 for (std::size_t i = 0; i <
_nph1.size(); ++i)
1775 const Real sgn = MathUtils::sign(eta.value() - 2.1);
1777 for (std::size_t i = 0; i <
_nph2a.size(); ++i)
1794 const Real sgn0 = MathUtils::sign(pi.value() - 2.0);
1795 const Real sgn1 = MathUtils::sign(eta.value() - 2.6);
1797 for (std::size_t i = 0; i <
_nph2b.size(); ++i)
1813 const Real sgn = MathUtils::sign(eta.value() - 1.8);
1815 for (std::size_t i = 0; i <
_nph2c.size(); ++i)
1828 name(),
": b3ab(): Pressure ",
pressure,
"is outside range of 16.529 MPa <= p <= 100 MPa");
1831 Real eta = 0.201464004206875e4 + 0.374696550136983e1 * pi - 0.219921901054187e-1 * pi * pi +
1832 0.87513168600995e-4 * pi * pi * pi;
1845 for (std::size_t i = 0; i <
_nph3a.size(); ++i)
1859 for (std::size_t i = 0; i <
_nph3b.size(); ++i)
1868 const Real A = coeffs[0];
1869 const Real B = coeffs[1];
1870 const Real C = coeffs[2];
1873 const Real tau = 1.0 - Tr;
1876 A / Tr + B *
std::pow(tau, 0.355) / Tr + C *
std::pow(Tr, -0.41) * std::exp(tau);
1879 const std::vector<Real> a{
1880 -7.85951783, 1.84408259, -11.7866497, 22.6807411, -15.9618719, 1.80122502};
1881 const std::vector<Real> b{1.0, 1.5, 3.0, 3.5, 4.0, 7.5};
1884 for (std::size_t i = 0; i < a.size(); ++i)
1887 return 22.064e6 * std::exp(sum / Tr) * std::exp(lnkh);
1892 const std::vector<Real> & coeffs,
1894 Real & dKh_dT)
const
1896 const Real A = coeffs[0];
1897 const Real B = coeffs[1];
1898 const Real C = coeffs[2];
1900 const Real pc = 22.064e6;
1901 const Real Tc = 647.096;
1904 const Real tau = 1.0 - Tr;
1907 A / Tr + B *
std::pow(tau, 0.355) / Tr + C *
std::pow(Tr, -0.41) * std::exp(tau);
1908 const Real dlnkh_dT =
1909 (-A / Tr / Tr - B *
std::pow(tau, 0.355) / Tr / Tr - 0.355 * B *
std::pow(tau, -0.645) / Tr -
1910 0.41 * C *
std::pow(Tr, -1.41) * std::exp(tau) - C *
std::pow(Tr, -0.41) * std::exp(tau)) /
1914 const std::vector<Real> a{
1915 -7.85951783, 1.84408259, -11.7866497, 22.6807411, -15.9618719, 1.80122502};
1916 const std::vector<Real> b{1.0, 1.5, 3.0, 3.5, 4.0, 7.5};
1920 for (std::size_t i = 0; i < a.size(); ++i)
1923 dsum += a[i] * b[i] *
std::pow(tau, b[i] - 1.0);
1926 const Real
p = pc * std::exp(sum / Tr);
1927 const Real dp_dT = -
p / Tc / Tr * (sum / Tr + dsum);
1930 Kh =
p * std::exp(lnkh);
1931 dKh_dT = (
p * dlnkh_dT + dp_dT) * std::exp(lnkh);
1936 const std::vector<Real> & coeffs)
const
1940 Real dKh_dT_real = 0.0;
1943 DualReal Kh = Kh_real;
1944 Kh.derivatives() =
temperature.derivatives() * dKh_dT_real;
unsigned int subregion3(Real pressure, Real temperature) const
Provides the correct subregion index for a (P,T) point in region 3.
const std::array< Real, 5 > _p_star
Pressure scale for each region.
Real d2gamma2_dpi2(Real pi, Real tau) const
Second derivative of Gibbs free energy in Region 2 wrt pi.
const std::array< int, 31 > _Jph3a
virtual Real rho_from_p_T(Real pressure, Real temperature) const override
const std::array< Real, 10 > _n4
Constants for region 4 (the saturation curve up to the critical point)
const std::array< Real, 5 > _T_star
Temperature scale for each region.
const std::array< Real, 34 > _n1
Reference constants used in to calculate thermophysical properties of water.
Real gamma5(Real pi, Real tau) const
Gibbs free energy in Region 5.
const std::array< int, 36 > _Iph2a
const Real _p_critical
Critical pressure (Pa)
std::array< Real, 4 > _k_a
Constants for thermal conductivity.
Common class for single phase fluid properties.
const std::array< int, 6 > _J5
Real b23p(Real temperature) const
Auxillary equation for the boundary between regions 2 and 3.
virtual Real mu_from_p_T(Real pressure, Real temperature) const override
virtual Real s_from_p_T(Real pressure, Real temperature) const override
Real d2phi3_ddeltatau(Real delta, Real tau) const
Second derivative of Helmholtz free energy in Region 3 wrt delta and tau.
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
const std::array< int, 23 > _Iph2c
unsigned int subregion3ph(Real pressure, Real enthalpy) const
Provides the correct subregion index for a (P,h) point in region 3.
const std::array< Real, 23 > _nph2c
const std::array< Real, 38 > _nph2b
InputParameters validParams< Water97FluidProperties >()
Real dgamma5_dtau(Real pi, Real tau) const
Derivative of Gibbs free energy in Region 5 wrt tau.
virtual Real k_from_rho_T(Real density, Real temperature) const override
Real dphi3_dtau(Real delta, Real tau) const
Derivative of Helmholtz free energy in Region 3 wrt tau.
const std::array< Real, 6 > _n05
const std::array< int, 34 > _J1
Real d2gamma5_dtau2(Real pi, Real tau) const
Second derivative of Gibbs free energy in Region 5 wrt tau.
Real dgamma1_dpi(Real pi, Real tau) const
Derivative of Gibbs free energy in Region 1 wrt pi.
virtual Real criticalDensity() const override
Critical density.
FPDualReal temperature_from_ph1(const FPDualReal &pressure, const FPDualReal &enthalpy) const
Backwards equation T(p, h) in Region 1 Eq.
Real d2gamma1_dpitau(Real pi, Real tau) const
Second derivative of Gibbs free energy in Region 1 wrt pi and tau.
Real tempXY(Real pressure, subregionEnum xy) const
Boundaries between subregions in region 3.
FPDualReal temperature_from_ph3a(const FPDualReal &pressure, const FPDualReal &enthalpy) const
Backwards equation T(p, h) in Region 3a Eq.
const Real _rho_critical
Critical density (kg/m^3)
Real b2bc(Real pressure) const
Boundary between subregions b and c in region 2.
unsigned int subregion2ph(Real pressure, Real enthalpy) const
Provides the correct subregion index for a (P,h) point in region 2.
const std::array< int, 43 > _I2
virtual Real h_from_p_T(Real pressure, Real temperature) const override
const std::array< int, 6 > _I5
FPDualReal vaporTemperature_ad(const FPDualReal &pressure) const
AD version of saturation temperature as a function of pressure (used internally)
const std::array< int, 33 > _Iph3b
const std::array< int, 9 > _J02
Real subregionVolume(Real pi, Real theta, Real a, Real b, Real c, Real d, Real e, unsigned int sid) const
Specific volume in all subregions of region 3 EXCEPT subregion n (13).
const std::vector< std::vector< int > > _I3s
Real d2gamma5_dpitau(Real pi, Real tau) const
Second derivative of Gibbs free energy in Region 5 wrt pi and tau.
Real b23T(Real pressure) const
Auxillary equation for the boundary between regions 2 and 3.
Real densityRegion3(Real pressure, Real temperature) const
Density function for Region 3 - supercritical water and steam.
Real vaporTemperature(Real pressure) const override
Saturation temperature as a function of pressure.
FPDualReal temperature_from_ph2a(const FPDualReal &pressure, const FPDualReal &enthalpy) const
Backwards equation T(p, h) in Region 2a Eq.
Real henryConstant(Real temperature, const std::vector< Real > &coeffs) const
IAPWS formulation of Henry's law constant for dissolution in water From Guidelines on the Henry's con...
Real d2gamma1_dpi2(Real pi, Real tau) const
Second derivative of Gibbs free energy in Region 1 wrt pi.
virtual Real triplePointPressure() const override
Triple point pressure.
const std::array< int, 6 > _J05
Constants for region 5.
subregionEnum
Enum of subregion ids for region 3.
const std::vector< std::vector< Real > > _n3s
Constants for all 26 subregions in region 3.
const std::array< int, 21 > _mu_J
const std::array< int, 31 > _Iph3a
const std::array< int, 43 > _J2
const std::array< Real, 36 > _nph2a
DualNumber< Real, DNDerivativeSize< 5 > > FPDualReal
const Real _Rw
Specific gas constant for H2O (universal gas constant / molar mass of water - J/kg/K)
const std::string density
Real dgamma5_dpi(Real pi, Real tau) const
Derivative of Gibbs free energy in Region 5 wrt pi.
const std::string enthalpy
Real gamma2(Real pi, Real tau) const
Gibbs free energy in Region 2 - superheated steam.
FPDualReal temperature_from_ph2b(const FPDualReal &pressure, const FPDualReal &enthalpy) const
Backwards equation T(p, h) in Region 2b Eq.
const std::array< int, 21 > _mu_I
Constants from Release on the IAPWS Formulation 2008 for the Viscosity of Ordinary Water Substance.
Real phi3(Real delta, Real tau) const
Helmholtz free energy in Region 3.
const std::array< Real, 20 > _nph1
const std::array< int, 23 > _Jph2c
virtual Real k_from_p_T(Real pressure, Real temperature) const override
FPDualReal temperature_from_ph3b(const FPDualReal &pressure, const FPDualReal &enthalpy) const
Backwards equation T(p, h) in Region 3b Eq.
Water (H2O) fluid properties as a function of pressure (Pa) and temperature (K) from IAPWS-IF97: Revi...
FPDualReal temperature_from_ph2c(const FPDualReal &pressure, const FPDualReal &enthalpy) const
Backwards equation T(p, h) in Region 2c Eq.
const std::array< int, 40 > _I3
const Real _T_triple
Triple point temperature (K)
Real d2gamma2_dpitau(Real pi, Real tau) const
Second derivative of Gibbs free energy in Region 2 wrt pi and tau.
unsigned int inRegionPH(Real pressure, Real enthalpy) const
Determines the phase region that the given pressure and enthaply values lie in.
const std::array< int, 40 > _J3
const std::array< Real, 6 > _n5
const std::vector< std::vector< int > > _tempXY_I
Constnats for the tempXY() method.
Real dgamma2_dpi(Real pi, Real tau) const
Derivative of Gibbs free energy in Region 2 wrt pi.
const std::array< Real, 33 > _nph3b
const std::array< int, 20 > _Jph1
Real dphi3_ddelta(Real delta, Real tau) const
Derivative of Helmholtz free energy in Region 3 wrt delta.
Real b3ab(Real pressure) const
Boundary between subregions a and b in region 3.
Real d2phi3_ddelta2(Real delta, Real tau) const
Second derivative of Helmholtz free energy in Region 3 wrt delta.
const std::string internal_energy
const std::array< int, 38 > _Jph2b
virtual Real criticalTemperature() const override
Critical temperature.
Real d2phi3_dtau2(Real delta, Real tau) const
Second derivative of Helmholtz free energy in Region 3 wrt tau.
virtual Real mu_from_rho_T(Real density, Real temperature) const override
virtual Real vaporPressure(Real temperature) const override
Vapor pressure.
virtual void rho_mu_from_p_T(Real pressure, Real temperature, Real &rho, Real &mu) const override
Combined methods.
FPDualReal T_from_p_h_ad(const FPDualReal &pressure, const FPDualReal &enthalpy) const
AD version of backwards equation T(p, h) (used internally) From Revised Release on the IAPWS Industri...
const std::array< Real, 5 > _n23
Constants for the boundary between regions 2 and 3.
virtual Real c_from_p_T(Real pressure, Real temperature) const override
virtual ~Water97FluidProperties()
virtual Real criticalPressure() const override
Critical pressure.
const std::vector< std::vector< Real > > _tempXY_n
const Real _p_triple
Triple point pressure (Pa)
virtual Real cp_from_p_T(Real pressure, Real temperature) const override
const std::array< Real, 9 > _n02
Constants for region 2.
Real d2gamma5_dpi2(Real pi, Real tau) const
Second derivative of Gibbs free energy in Region 5 wrt pi.
const std::array< int, 38 > _Iph2b
const std::array< Real, 40 > _n3
Constants for region 3.
const std::string temperature
const std::array< int, 20 > _Iph1
Real gamma1(Real pi, Real tau) const
Gibbs free energy in Region 1 - single phase liquid region.
virtual Real T_from_p_h(Real pressure, Real enthalpy) const override
Backwards equation T(p, h) From Revised Release on the IAPWS Industrial Formulation 1997 for the Ther...
const std::array< unsigned int, 26 > _par3N
const std::vector< std::vector< int > > _J3s
Real d2gamma1_dtau2(Real pi, Real tau) const
Second derivative of Gibbs free energy in Region 1 wrt tau.
unsigned int inRegion(Real pressure, Real temperature) const
Determines the phase region that the given pressure and temperature values lie in.
registerMooseObject("FluidPropertiesApp", Water97FluidProperties)
Real dgamma2_dtau(Real pi, Real tau) const
Derivative of Gibbs free energy in Region 2 wrt tau.
const std::array< int, 34 > _I1
const std::array< Real, 4 > _mu_H0
virtual Real molarMass() const override
Fluid name.
Real dgamma1_dtau(Real pi, Real tau) const
Derivative of Gibbs free energy in Region 1 wrt tau.
virtual Real cv_from_p_T(Real pressure, Real temperature) const override
virtual Real e_from_p_T(Real pressure, Real temperature) const override
const std::array< Real, 31 > _nph3a
virtual std::string fluidName() const override
InputParameters validParams< SinglePhaseFluidProperties >()
const std::array< std::array< Real, 8 >, 26 > _par3
const std::array< Real, 21 > _mu_H1
const std::array< Real, 43 > _n2
const std::array< int, 33 > _Jph3b
const std::array< int, 36 > _Jph2a
Real d2gamma2_dtau2(Real pi, Real tau) const
Second derivative of Gibbs free energy in Region 2 wrt tau.
const std::string pressure
virtual Real triplePointTemperature() const override
Triple point temperature.
const Real _Mh2o
Water molar mass (kg/mol)
Water97FluidProperties(const InputParameters ¶meters)
const Real _T_critical
Critical temperature (K)