https://mooseframework.inl.gov
HydrogenFluidProperties.h
Go to the documentation of this file.
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 #pragma once
11 
13 #include <array>
14 
15 #pragma GCC diagnostic push
16 #pragma GCC diagnostic ignored "-Woverloaded-virtual"
17 
38 {
39 public:
41 
43 
44  virtual std::string fluidName() const override;
45 
46  virtual Real molarMass() const override;
47 
48  virtual Real mu_from_rho_T(Real density, Real temperature) const override;
49 
52  Real ddensity_dT,
53  Real & mu,
54  Real & dmu_drho,
55  Real & dmu_dT) const;
56 
57  virtual Real mu_from_p_T(Real pressure, Real temperature) const override;
58 
59  virtual void mu_from_p_T(
60  Real pressure, Real temperature, Real & mu, Real & dmu_dp, Real & dmu_dT) const override;
61 
62  virtual void
63  rho_mu_from_p_T(Real pressure, Real temperature, Real & rho, Real & mu) const override;
64 
65  virtual void rho_mu_from_p_T(Real pressure,
67  Real & rho,
68  Real & drho_dp,
69  Real & drho_dT,
70  Real & mu,
71  Real & dmu_dp,
72  Real & dmu_dT) const override;
73 
74  virtual Real k_from_rho_T(Real density, Real temperature) const override;
75 
76  virtual Real k_from_p_T(Real pressure, Real temperature) const override;
77 
78  virtual void
79  k_from_p_T(Real pressure, Real temperature, Real & k, Real & dk_dp, Real & dk_dT) const override;
80 
81  virtual std::vector<Real> henryCoefficients() const override;
82 
83  virtual Real criticalPressure() const override;
84 
85  virtual Real criticalTemperature() const override;
86 
87  virtual Real criticalDensity() const override;
88 
89  virtual Real triplePointPressure() const override;
90 
91  virtual Real triplePointTemperature() const override;
92 
93  virtual Real vaporPressure(Real temperature) const override;
94 
95  virtual void vaporPressure(Real temperature, Real & psat, Real & dpsat_dT) const override;
96 
97 protected:
106  virtual Real alpha(Real delta, Real tau) const override;
107 
115  virtual Real dalpha_ddelta(Real delta, Real tau) const override;
116 
124  virtual Real dalpha_dtau(Real delta, Real tau) const override;
125 
133  virtual Real d2alpha_ddelta2(Real delta, Real tau) const override;
134 
142  virtual Real d2alpha_dtau2(Real delta, Real tau) const override;
143 
151  virtual Real d2alpha_ddeltatau(Real delta, Real tau) const override;
152 
154  const Real _Mh2;
167 
169  const std::array<Real, 5> _a{{1.616, -0.4117, -0.792, 0.758, 1.217}};
170  const std::array<Real, 5> _b{
171  {-16.0205159149, -22.6580178006, -60.0090511389, -74.9434303817, -206.9392065168}};
173  const std::array<Real, 7> _N1{{-6.93643, 0.01, 2.1101, 4.52059, 0.732564, -1.34086, 0.130985}};
174  const std::array<Real, 7> _t1{{0.6844, 1.0, 0.989, 0.489, 0.803, 1.1444, 1.409}};
175  const std::array<unsigned int, 7> _d1{{1, 4, 1, 1, 2, 2, 3}};
176 
177  const std::array<Real, 2> _N2{{-0.777414, 0.351944}};
178  const std::array<Real, 2> _t2{{1.754, 1.311}};
179  const std::array<unsigned int, 2> _d2{{1, 3}};
180 
181  const std::array<Real, 5> _N3{{-0.0211716, 0.0226312, 0.032187, -0.0231752, 0.0557346}};
182  const std::array<Real, 5> _t3{{4.187, 5.646, 0.791, 7.249, 2.986}};
183  const std::array<unsigned int, 5> _d3{{2, 1, 3, 1, 1}};
184  const std::array<Real, 5> _phi3{{-1.685, -0.489, -0.103, -2.506, -1.607}};
185  const std::array<Real, 5> _beta3{{-0.171, -0.2245, -0.1304, -0.2785, -0.3967}};
186  const std::array<Real, 5> _gamma3{{0.7164, 1.3444, 1.4517, 0.7204, 1.5445}};
187  const std::array<Real, 5> _D3{{1.506, 0.156, 1.736, 0.67, 1.662}};
188 
190  const std::array<Real, 5> _amu{{2.09630e-1, -4.55274e-1, 1.423602e-1, -3.35325e-2, 2.76981e-3}};
191  const std::array<Real, 7> _bmu{{-0.187, 2.4871, 3.7151, -11.0972, 9.0965, -3.8292, 0.5166}};
192  const std::array<Real, 6> _cmu{
193  {6.43449673, 4.56334068e-2, 2.32797868e-1, 9.5832612e-1, 1.27941189e-1, 3.63576595e-1}};
194 
196  const std::array<Real, 7> _a1k{
197  {-3.40976e-1, 4.5882, -1.4508, 3.26394e-1, 3.16939e-3, 1.90592e-4, -1.139e-6}};
198  const std::array<Real, 4> _a2k{{1.38497e2, -2.21878e1, 4.57151, 1.0}};
199  const std::array<Real, 5> _b1k{{3.63081e-2, -2.07629e-2, 3.1481e-2, -1.43097e-2, 1.7498e-3}};
200  const std::array<Real, 5> _b2k{{1.8337e-3, -8.86716e-3, 1.5826e-2, -1.06283e-2, 2.80673e-3}};
201 };
202 
203 #pragma GCC diagnostic pop
const std::array< Real, 2 > _N2
virtual Real dalpha_dtau(Real delta, Real tau) const override
Derivative of Helmholtz free energy wrt tau.
const std::array< Real, 6 > _cmu
const std::array< Real, 5 > _beta3
const std::array< Real, 5 > _t3
virtual Real d2alpha_ddelta2(Real delta, Real tau) const override
Second derivative of Helmholtz free energy wrt delta.
const std::array< Real, 5 > _b2k
virtual Real criticalTemperature() const override
Critical temperature.
const std::array< Real, 7 > _N1
Coefficients for residual component of the Helmholtz free energy.
const std::array< Real, 5 > _N3
const std::array< unsigned int, 7 > _d1
virtual Real mu_from_p_T(Real pressure, Real temperature) const override
const Real _T_triple
Triple point temperature (K)
virtual Real mu_from_rho_T(Real density, Real temperature) const override
HydrogenFluidProperties(const InputParameters &parameters)
const std::array< Real, 7 > _t1
virtual Real dalpha_ddelta(Real delta, Real tau) const override
Derivative of Helmholtz free energy wrt delta.
virtual Real triplePointPressure() const override
Triple point pressure.
virtual Real k_from_p_T(Real pressure, Real temperature) const override
const std::array< Real, 4 > _a2k
static const std::string density
Definition: NS.h:33
int delta(unsigned int i, unsigned int j)
Delta function, which returns zero if $i j$ and unity if $i=j$.
const std::array< Real, 5 > _phi3
const std::array< Real, 5 > _b
const std::array< unsigned int, 2 > _d2
static const std::string temperature
Definition: NS.h:59
const Real _rho_molar_critical
Critical molar density (mol/l)
const std::array< Real, 5 > _b1k
virtual std::vector< Real > henryCoefficients() const override
Henry&#39;s law coefficients for dissolution in water.
const std::array< Real, 5 > _D3
virtual std::string fluidName() const override
Fluid name.
const std::array< Real, 5 > _amu
Coefficients for viscosity.
const std::array< Real, 5 > _a
Coefficients for ideal gas component of the Helmholtz free energy.
virtual Real triplePointTemperature() const override
Triple point temperature.
virtual Real d2alpha_ddeltatau(Real delta, Real tau) const override
Second derivative of Helmholtz free energy wrt delta and tau.
static InputParameters validParams()
const std::array< Real, 5 > _gamma3
const Real _rho_critical
Critical density (kg/m^3)
static const std::string mu
Definition: NS.h:123
const Real _Mh2
Hydrogen molar mass (kg/mol)
Hydrogen (H2) fluid properties as a function of pressure (Pa) and temperature (K).
const std::array< Real, 7 > _a1k
Coefficients for thermal conductivity.
virtual Real k_from_rho_T(Real density, Real temperature) const override
virtual Real criticalDensity() const override
Critical density.
const Real _T_critical
Critical temperature (K)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual Real molarMass() const override
Molar mass [kg/mol].
virtual Real alpha(Real delta, Real tau) const override
Helmholtz free energy for H2 From Leachman et al (reference above)
static const std::string pressure
Definition: NS.h:56
const Real _p_triple
Triple point pressure (Pa)
const std::array< Real, 2 > _t2
const InputParameters & parameters() const
const Real _p_critical
Critical pressure (Pa)
virtual void rho_mu_from_p_T(Real pressure, Real temperature, Real &rho, Real &mu) const override
Combined methods.
const std::array< unsigned int, 5 > _d3
virtual Real d2alpha_dtau2(Real delta, Real tau) const override
Second derivative of Helmholtz free energy wrt tau.
virtual Real criticalPressure() const override
Critical pressure.
Base class equation of state for fluids that use a Helmholtz free energy alpha(delta, tau), where delta is a scaled density and tau is a scaled temperature.
static const std::string k
Definition: NS.h:130
virtual Real vaporPressure(Real temperature) const override
Vapor pressure.
const std::array< Real, 7 > _bmu