18#ifndef DUMUX_IAPWS_REGION2_HH 
   19#define DUMUX_IAPWS_REGION2_HH 
   38template <
class Scalar>
 
   51                                   const std::string& propertyName = 
"This property")
 
   57        if ((temperature <= 623.15 && pressure <= 100e6) ||
 
   58            (temperature > 623.15 && temperature <= 1073.15 && pressure <= 16.532e6 ))
 
   62                   propertyName << 
" of steam is only implemented for temperatures below 623.15K and " 
   63                   "pressures below 100MPa. (T=" << temperature << 
", p=" << pressure << 
")");
 
 
   71    static constexpr Scalar 
tau(Scalar temperature)
 
   72    { 
return 540.0 / temperature; }
 
 
   80    static constexpr Scalar 
dTau_dt(Scalar temperature)
 
   81    { 
return - 540.0 / (temperature*temperature); }
 
 
   88    static constexpr Scalar 
pi(Scalar pressure)
 
   89    { 
return pressure / 1e6; }
 
 
   97    static constexpr Scalar 
dPi_dp(Scalar pressure)
 
 
  106    static constexpr Scalar 
dp_dPi(Scalar pressure)
 
 
  120    static Scalar 
gamma(Scalar temperature, Scalar pressure)
 
  122        Scalar 
tau = 
tau(temperature);   
 
  123        Scalar 
pi = 
pi(pressure);    
 
  130        for (
int i = 0; i < 9; ++i)
 
  131            result += n_g(i)*pow(
tau, J_g(i));
 
  134        for (
int i = 0; i < 43; ++i)
 
  137                      pow(
tau - 0.5, J_r(i));
 
 
  155        Scalar tau_ = 
tau(temperature);   
 
  156        Scalar pi_ = 
pi(pressure);    
 
  161        for (
int i = 0; i < 9; i++) {
 
  164                      pow(tau_, J_g(i) - 1);
 
  168        for (
int i = 0; i < 43; i++) {
 
  172                      pow(tau_ - 0.5, J_r(i) - 1);
 
 
  190    static Scalar 
dGamma_dPi(Scalar temperature, Scalar pressure)
 
  192        Scalar tau_ = 
tau(temperature);   
 
  193        Scalar pi_ = 
pi(pressure);    
 
  196        Scalar result = 1/pi_;
 
  200        for (
int i = 0; i < 43; i++) {
 
  203                      pow(pi_, I_r(i) - 1) *
 
  204                      pow(tau_ - 0.5, J_r(i));
 
 
  224        Scalar tau_ = 
tau(temperature);   
 
  225        Scalar pi_ = 
pi(pressure);    
 
  232        for (
int i = 0; i < 43; i++) {
 
  236                      pow(pi_, I_r(i) - 1) *
 
  237                      pow(tau_ - 0.5, J_r(i) - 1);
 
 
  257        Scalar tau_ = 
tau(temperature);   
 
  258        Scalar pi_ = 
pi(pressure);    
 
  261        Scalar result = -1/(pi_*pi_);
 
  265        for (
int i = 0; i < 43; i++) {
 
  269                      pow(pi_, I_r(i) - 2) *
 
  270                      pow(tau_ - 0.5, J_r(i));
 
 
  290        Scalar tau_ = 
tau(temperature);   
 
  291        Scalar pi_ = 
pi(pressure);    
 
  296        for (
int i = 0; i < 9; i++) {
 
  300                      pow(tau_, J_g(i) - 2);
 
  305        for (
int i = 0; i < 43; i++) {
 
  310                      pow(tau_ - 0.5, J_r(i) - 2.);
 
 
  317    static Scalar n_g(
int i)
 
  319        constexpr const Scalar n[9] = {
 
  320            -0.96927686500217e1, 0.10086655968018e2, -0.56087911283020e-2,
 
  321            0.71452738081455e-1, -0.40710498223928, 0.14240819171444e1,
 
  322            -0.43839511319450e1, -0.28408632460772, 0.21268463753307e-1
 
  327    static Scalar n_r(
int i)
 
  329        constexpr const Scalar n[43] = {
 
  330            -0.17731742473213e-2, -0.17834862292358e-1, -0.45996013696365e-1,
 
  331            -0.57581259083432e-1, -0.50325278727930e-1, -0.33032641670203e-4,
 
  332            -0.18948987516315e-3, -0.39392777243355e-2, -0.43797295650573e-1,
 
  333            -0.26674547914087e-4, 0.20481737692309e-7, 0.43870667284435e-6,
 
  334            -0.32277677238570e-4, -0.15033924542148e-2, -0.40668253562649e-1,
 
  335            -0.78847309559367e-9, 0.12790717852285e-7, 0.48225372718507e-6,
 
  336             0.22922076337661e-5, -0.16714766451061e-10, -0.21171472321355e-2,
 
  337            -0.23895741934104e2, -0.59059564324270e-17, -0.12621808899101e-5,
 
  338            -0.38946842435739e-1, 0.11256211360459e-10, -0.82311340897998e1,
 
  339             0.19809712802088e-7, 0.10406965210174e-18, -0.10234747095929e-12,
 
  340            -0.10018179379511e-8, -0.80882908646985e-10, 0.10693031879409,
 
  341            -0.33662250574171, 0.89185845355421e-24, 0.30629316876232e-12,
 
  342            -0.42002467698208e-5, -0.59056029685639e-25, 0.37826947613457e-5,
 
  343            -0.12768608934681e-14, 0.73087610595061e-28, 0.55414715350778e-16,
 
  349    static Scalar I_r(
int i)
 
  351        constexpr const short int I[43] = {
 
  371    static Scalar J_g(
int i)
 
  373        constexpr const short int J[9] = {
 
  381    static Scalar J_r(
int i)
 
  383        constexpr const short int J[43] = {
 
 
Implements the equations for region 2 of the IAPWS '97 formulation.
Definition region2.hh:40
static Scalar ddGamma_ddTau(Scalar temperature, Scalar pressure)
The second partial derivative of the Gibbs free energy to the normalized temperature for IAPWS region...
Definition region2.hh:288
static Scalar dGamma_dTau(Scalar temperature, Scalar pressure)
The partial derivative of the Gibbs free energy to the normalized temperature for IAPWS region 2 (i....
Definition region2.hh:153
static Scalar ddGamma_dTaudPi(Scalar temperature, Scalar pressure)
The partial derivative of the Gibbs free energy to the normalized pressure and to the normalized temp...
Definition region2.hh:222
static Scalar gamma(Scalar temperature, Scalar pressure)
The Gibbs free energy for IAPWS region 2 (i.e. sub-critical steam) (dimensionless).
Definition region2.hh:120
static Scalar ddGamma_ddPi(Scalar temperature, Scalar pressure)
The second partial derivative of the Gibbs free energy to the normalized pressure for IAPWS region 2 ...
Definition region2.hh:255
static void checkValidityRange(Scalar temperature, Scalar pressure, const std::string &propertyName="This property")
Returns true if IAPWS region 2 applies for a (temperature, pressure) pair.
Definition region2.hh:50
static constexpr Scalar dTau_dt(Scalar temperature)
Returns the derivative of the reduced temperature to the temperature for IAPWS region 2.
Definition region2.hh:80
static constexpr Scalar pi(Scalar pressure)
Returns the reduced pressure (dimensionless) for IAPWS region 2.
Definition region2.hh:88
static constexpr Scalar dPi_dp(Scalar pressure)
Returns the derivative of the reduced pressure to the pressure for IAPWS region 2 in .
Definition region2.hh:97
static constexpr Scalar tau(Scalar temperature)
Returns the reduced temperature (dimensionless) for IAPWS region 2.
Definition region2.hh:71
static constexpr Scalar dp_dPi(Scalar pressure)
Returns the derivative of the pressure to the reduced pressure for IAPWS region 2 (dimensionless).
Definition region2.hh:106
static Scalar dGamma_dPi(Scalar temperature, Scalar pressure)
The partial derivative of the Gibbs free energy to the normalized pressure for IAPWS region 2 (i....
Definition region2.hh:190
Exception thrown if a fixable numerical problem occurs.
Definition exceptions.hh:27
Some exceptions thrown in DuMux