LCOV - code coverage report
Current view: top level - src/fluidproperties - NaClFluidProperties.C (source / functions) Hit Total Coverage
Test: idaholab/moose fluid_properties: #31405 (292dce) with base fef103 Lines: 97 100 97.0 %
Date: 2025-09-04 07:53:14 Functions: 21 22 95.5 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //* This file is part of the MOOSE framework
       2             : //* https://mooseframework.inl.gov
       3             : //*
       4             : //* All rights reserved, see COPYRIGHT for full restrictions
       5             : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
       6             : //*
       7             : //* Licensed under LGPL 2.1, please see LICENSE for details
       8             : //* https://www.gnu.org/licenses/lgpl-2.1.html
       9             : 
      10             : #include "NaClFluidProperties.h"
      11             : 
      12             : registerMooseObject("FluidPropertiesApp", NaClFluidProperties);
      13             : 
      14             : InputParameters
      15         118 : NaClFluidProperties::validParams()
      16             : {
      17         118 :   InputParameters params = SinglePhaseFluidProperties::validParams();
      18         118 :   params.addClassDescription("Fluid properties for NaCl");
      19         118 :   return params;
      20           0 : }
      21             : 
      22          59 : NaClFluidProperties::NaClFluidProperties(const InputParameters & parameters)
      23             :   : SinglePhaseFluidProperties(parameters),
      24          59 :     _Mnacl(58.443e-3),
      25          59 :     _p_critical(1.82e7),
      26          59 :     _T_critical(3841.15),
      27          59 :     _rho_critical(108.43),
      28          59 :     _p_triple(50.0),
      29          59 :     _T_triple(1073.85)
      30             : {
      31          59 : }
      32             : 
      33         118 : NaClFluidProperties::~NaClFluidProperties() {}
      34             : 
      35             : std::string
      36           2 : NaClFluidProperties::fluidName() const
      37             : {
      38           2 :   return "nacl";
      39             : }
      40             : 
      41             : Real
      42          53 : NaClFluidProperties::molarMass() const
      43             : {
      44          53 :   return _Mnacl;
      45             : }
      46             : 
      47             : Real
      48           1 : NaClFluidProperties::criticalPressure() const
      49             : {
      50           1 :   return _p_critical;
      51             : }
      52             : 
      53             : Real
      54           1 : NaClFluidProperties::criticalTemperature() const
      55             : {
      56           1 :   return _T_critical;
      57             : }
      58             : 
      59             : Real
      60           1 : NaClFluidProperties::criticalDensity() const
      61             : {
      62           1 :   return _rho_critical;
      63             : }
      64             : 
      65             : Real
      66           1 : NaClFluidProperties::triplePointPressure() const
      67             : {
      68           1 :   return _p_triple;
      69             : }
      70             : 
      71             : Real
      72           1 : NaClFluidProperties::triplePointTemperature() const
      73             : {
      74           1 :   return _T_triple;
      75             : }
      76             : 
      77             : Real
      78          19 : NaClFluidProperties::rho_from_p_T(Real pressure, Real temperature) const
      79             : {
      80             :   // Correlation needs pressure in bar
      81          19 :   Real pbar = pressure * 1.0e-5;
      82             :   // Correlation requires temperature in Celsius
      83          19 :   Real Tc = temperature - _T_c2k;
      84             : 
      85             :   // Halite density at 0 Pa
      86          19 :   Real density_P0 = 2.17043e3 - 2.4599e-1 * Tc - 9.5797e-5 * Tc * Tc;
      87             : 
      88             :   // Halite density as a function of pressure
      89          19 :   Real l = 5.727e-3 + 2.715e-3 * std::exp(Tc / 733.4);
      90             : 
      91          19 :   return density_P0 + l * pbar;
      92             : }
      93             : 
      94             : void
      95           6 : NaClFluidProperties::rho_from_p_T(
      96             :     Real pressure, Real temperature, Real & rho, Real & drho_dp, Real & drho_dT) const
      97             : {
      98           6 :   rho = this->rho_from_p_T(pressure, temperature);
      99             : 
     100             :   // Correlation needs pressure in bar
     101           6 :   Real pbar = pressure * 1.0e-5;
     102             :   // Correlation requires temperature in Celsius
     103           6 :   Real Tc = temperature - _T_c2k;
     104             : 
     105             :   // Halite density at 0 Pa
     106           6 :   Real ddensity_P0_dT = -2.4599e-1 - 1.91594e-4 * Tc;
     107             : 
     108           6 :   Real l = 5.727e-3 + 2.715e-3 * std::exp(Tc / 733.4);
     109           6 :   Real dl_dT = 2.715e-3 * std::exp(Tc / 733.4) / 733.4;
     110             : 
     111           6 :   drho_dp = l * 1.0e-5;
     112           6 :   drho_dT = ddensity_P0_dT + dl_dT * pbar;
     113           6 : }
     114             : 
     115             : Real
     116           5 : NaClFluidProperties::e_from_p_T(Real pressure, Real temperature) const
     117             : {
     118           5 :   return h_from_p_T(pressure, temperature) - pressure / rho_from_p_T(pressure, temperature);
     119             : }
     120             : 
     121             : void
     122           3 : NaClFluidProperties::e_from_p_T(
     123             :     Real pressure, Real temperature, Real & e, Real & de_dp, Real & de_dT) const
     124             : {
     125             :   Real h, dh_dp, dh_dT;
     126           3 :   h_from_p_T(pressure, temperature, h, dh_dp, dh_dT);
     127             :   Real rho, drho_dp, drho_dT;
     128           3 :   rho_from_p_T(pressure, temperature, rho, drho_dp, drho_dT);
     129             : 
     130           3 :   e = h - pressure / rho;
     131           3 :   de_dp = dh_dp + pressure * drho_dp / rho / rho - 1.0 / rho;
     132           3 :   de_dT = dh_dT + pressure * drho_dT / rho / rho;
     133           3 : }
     134             : 
     135             : Real
     136           8 : NaClFluidProperties::cp_from_p_T(Real pressure, Real temperature) const
     137             : {
     138             :   // Correlation needs pressure in bar
     139           8 :   Real pbar = pressure * 1.0e-5;
     140             :   // Correlation requires temperature in Celsius
     141           8 :   Real Tc = temperature - _T_c2k;
     142             :   // Triple point temperature of NaCl (in C)
     143           8 :   Real Tt = _T_triple - _T_c2k;
     144             :   // Coefficients used in the correlation
     145           8 :   Real r3 = -1.7099e-3 - 3.82734e-6 * Tc - 8.65455e-9 * Tc * Tc;
     146           8 :   Real r4 = 5.29063e-8 - 9.63084e-11 * Tc + 6.50745e-13 * Tc * Tc;
     147             : 
     148             :   // Halite isobaric heat capacity
     149           8 :   return 1148.81 + 0.551548 * (Tc - Tt) + 2.64309e-4 * (Tc - Tt) * (Tc - Tt) + r3 * pbar +
     150           8 :          r4 * pbar * pbar;
     151             : }
     152             : 
     153             : void
     154           1 : NaClFluidProperties::cp_from_p_T(
     155             :     Real pressure, Real temperature, Real & cp, Real & dcp_dp, Real & dcp_dT) const
     156             : {
     157             :   // Correlation needs pressure in bar
     158           1 :   Real pbar = pressure * 1.0e-5;
     159             :   // Correlation requires temperature in Celsius
     160           1 :   Real Tc = temperature - _T_c2k;
     161             :   // Triple point temperature of NaCl (in C)
     162           1 :   Real Tt = _T_triple - _T_c2k;
     163             :   // Coefficients used in the correlation
     164           1 :   Real r3 = -1.7099e-3 - 3.82734e-6 * Tc - 8.65455e-9 * Tc * Tc;
     165           1 :   Real r4 = 5.29063e-8 - 9.63084e-11 * Tc + 6.50745e-13 * Tc * Tc;
     166           1 :   Real dr3_dT = -3.82734e-6 - 2 * 8.65455e-9 * Tc;
     167           1 :   Real dr4_dT = -9.63084e-11 + 2 * 6.50745e-13 * Tc;
     168             : 
     169             :   // Halite isobaric heat capacity
     170           1 :   cp = 1148.81 + 0.551548 * (Tc - Tt) + 2.64309e-4 * (Tc - Tt) * (Tc - Tt) + r3 * pbar +
     171           1 :        r4 * pbar * pbar;
     172           1 :   dcp_dp = r3 * 1.e-5 + 2 * r4 * pbar * 1.e-5;
     173           1 :   dcp_dT = 0.551548 + 2 * 2.64309e-4 * (Tc - Tt) + dr3_dT * pbar + dr4_dT * pbar * pbar;
     174           1 : }
     175             : 
     176             : Real
     177           0 : NaClFluidProperties::cv_from_p_T(Real pressure, Real temperature) const
     178             : {
     179           0 :   return e_from_p_T(pressure, temperature) / temperature;
     180             : }
     181             : 
     182             : Real
     183           8 : NaClFluidProperties::k_from_p_T(Real /*pressure*/, Real temperature) const
     184             : {
     185             :   // Correlation requires temperature in Celsius
     186           8 :   Real Tc = temperature - _T_c2k;
     187             : 
     188           8 :   return 6.82793 - 3.16584e-2 * Tc + 1.03451e-4 * Tc * Tc - 1.48207e-7 * Tc * Tc * Tc;
     189             : }
     190             : 
     191             : void
     192           1 : NaClFluidProperties::k_from_p_T(
     193             :     Real /*pressure*/, Real temperature, Real & k, Real & dk_dp, Real & dk_dT) const
     194             : {
     195             :   // Correlation requires temperature in Celsius
     196           1 :   Real Tc = temperature - _T_c2k;
     197             : 
     198           1 :   k = 6.82793 - 3.16584e-2 * Tc + 1.03451e-4 * Tc * Tc - 1.48207e-7 * Tc * Tc * Tc;
     199           1 :   dk_dp = 0.0;
     200           1 :   dk_dT = -3.16584e-2 + 2.06902e-4 * Tc - 4.44621e-7 * Tc * Tc;
     201           1 : }
     202             : 
     203             : Real
     204          13 : NaClFluidProperties::h_from_p_T(Real pressure, Real temperature) const
     205             : {
     206             :   // Correlation needs pressure in bar
     207          13 :   Real pbar = pressure * 1.0e-5;
     208             :   // Correlation requires temperature in Celsius
     209          13 :   Real Tc = temperature - _T_c2k;
     210             :   // Triple point temperature of water (in C)
     211          13 :   Real Tt = 273.16 - _T_c2k;
     212             :   // Triple point presure of water (in bar)
     213             :   Real pt = 611.657 * 1.0e-5;
     214             : 
     215             :   // Note: the enthalpy of halite is 0 at the triple point of water
     216          13 :   return 8.7664e2 * (Tc - Tt) + 6.4139e-2 * (Tc * Tc - Tt * Tt) +
     217          13 :          8.8101e-5 * (Tc * Tc * Tc - Tt * Tt * Tt) + 44.14 * (pbar - pt);
     218             : }
     219             : 
     220             : void
     221           4 : NaClFluidProperties::h_from_p_T(
     222             :     Real pressure, Real temperature, Real & h, Real & dh_dp, Real & dh_dT) const
     223             : {
     224             :   // Correlation needs pressure in bar
     225           4 :   Real pbar = pressure * 1.0e-5;
     226             :   // Correlation requires temperature in Celsius
     227           4 :   Real Tc = temperature - _T_c2k;
     228             :   // Triple point temperature of water (in C)
     229           4 :   Real Tt = 273.16 - _T_c2k;
     230             :   // Triple point presure of water (in bar)
     231             :   Real pt = 611.657 * 1.0e-5;
     232             : 
     233             :   // Note: the enthalpy of halite is 0 at the triple point of water
     234           4 :   h = 8.7664e2 * (Tc - Tt) + 6.4139e-2 * (Tc * Tc - Tt * Tt) +
     235           4 :       8.8101e-5 * (Tc * Tc * Tc - Tt * Tt * Tt) + 44.14 * (pbar - pt);
     236             : 
     237           4 :   dh_dp = 44.14 * 1.0e-5;
     238           4 :   dh_dT = 8.7664e2 + 2.0 * 6.4139e-2 * Tc + 3.0 * 8.8101e-5 * Tc * Tc;
     239           4 : }

Generated by: LCOV version 1.14