www.mooseframework.org
CO2FluidProperties.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 
41 {
42 public:
44 
46  virtual ~CO2FluidProperties();
47 
48  virtual Real rho_from_p_T(Real pressure, Real temperature) const override;
49 
50  virtual void rho_from_p_T(
51  Real pressure, Real temperature, Real & rho, Real & drho_dp, Real & drho_dT) const override;
52 
53  virtual Real mu_from_p_T(Real pressure, Real temperature) const override;
54 
55  virtual void mu_from_p_T(
56  Real pressure, Real temperature, Real & mu, Real & dmu_dp, Real & dmu_dT) const override;
57 
58  virtual Real mu_from_rho_T(Real density, Real temperature) const override;
59 
62  Real ddensity_dT,
63  Real & mu,
64  Real & dmu_drho,
65  Real & dmu_dT) const;
66 
67  virtual void
68  rho_mu_from_p_T(Real pressure, Real temperature, Real & rho, Real & mu) const override;
69 
70  virtual void rho_mu_from_p_T(Real pressure,
72  Real & rho,
73  Real & drho_dp,
74  Real & drho_dT,
75  Real & mu,
76  Real & dmu_dp,
77  Real & dmu_dT) const override;
78 
79  virtual std::string fluidName() const override;
80 
81  virtual Real molarMass() 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 
103 
114 
115  virtual Real vaporPressure(Real temperature) const override;
116 
117  virtual void vaporPressure(Real temperature, Real & psat, Real & dpsat_dT) const override;
118 
130 
142 
143  virtual Real p_from_rho_T(Real density, Real temperature) const override;
144 
145  virtual std::vector<Real> henryCoefficients() const override;
146 
155 
156  virtual Real k_from_p_T(Real pressure, Real temperature) const override;
157 
158  virtual void
159  k_from_p_T(Real pressure, Real temperature, Real & k, Real & dk_dp, Real & dk_dT) const override;
160 
161  virtual Real k_from_rho_T(Real density, Real temperature) const override;
162 
163 protected:
164  virtual Real alpha(Real delta, Real tau) const override;
165 
166  virtual Real dalpha_ddelta(Real delta, Real tau) const override;
167 
168  virtual Real dalpha_dtau(Real delta, Real tau) const override;
169 
170  virtual Real d2alpha_ddelta2(Real delta, Real tau) const override;
171 
172  virtual Real d2alpha_dtau2(Real delta, Real tau) const override;
173 
174  virtual Real d2alpha_ddeltatau(Real delta, Real tau) const override;
175 
177  const Real _Mco2 = 44.0098e-3;
179  const Real _critical_pressure = 7.3773e6;
181  const Real _critical_temperature = 304.1282;
183  const Real _critical_density = 467.6;
185  const Real _triple_point_pressure = 0.51795e6;
189  const Real _Rco2 = 188.9241;
190 
192  const std::array<Real, 5> _a0{{1.99427042, 0.62105248, 0.41195293, 1.04028922, 0.08327678}};
193  const std::array<Real, 5> _theta0{{3.15163, 6.11190, 6.77708, 11.32384, 27.08792}};
194 
196  const std::array<Real, 7> _n1{{0.38856823203161,
197  2.9385475942740,
198  -5.5867188534934,
199  -0.76753199592477,
200  0.31729005580416,
201  0.54803315897767,
202  0.12279411220335}};
203  const std::array<unsigned int, 7> _d1{{1, 1, 1, 1, 2, 2, 3}};
204  const std::array<Real, 7> _t1{{0.0, 0.75, 1.0, 2.0, 0.75, 2.0, 0.75}};
205  const std::array<Real, 27> _n2{
206  {2.1658961543220, 1.5841735109724, -0.23132705405503, 0.058116916431436,
207  -0.55369137205382, 0.48946615909422, -0.024275739843501, 0.062494790501678,
208  -0.12175860225246, -0.37055685270086, -0.016775879700426, -0.11960736637987,
209  -0.045619362508778, 0.035612789270346, -0.0074427727132052, -0.0017395704902432,
210  -0.021810121289527, 0.024332166559236, -0.037440133423463, 0.14338715756878,
211  -0.13491969083286, -0.023151225053480, 0.012363125492901, 0.0021058321972940,
212  -0.00033958519026368, 0.0055993651771592, -0.00030335118055646}};
213  const std::array<unsigned int, 27> _d2{
214  {1, 2, 4, 5, 5, 5, 6, 6, 6, 1, 1, 4, 4, 4, 7, 8, 2, 3, 3, 5, 5, 6, 7, 8, 10, 4, 8}};
215  const std::array<Real, 27> _t2{{1.5, 1.5, 2.5, 0.0, 1.5, 2.0, 0.0, 1.0, 2.0,
216  3.0, 6.0, 3.0, 6.0, 8.0, 6.0, 0.0, 7.0, 12.0,
217  16.0, 22.0, 24.0, 16.0, 24.0, 8.0, 2.0, 28.0, 14.0}};
218  const std::array<unsigned int, 27> _c2{
219  {1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 6}};
220  const std::array<Real, 5> _n3{
221  {-213.65488688320, 26641.569149272, -24027.212204557, -283.41603423999, 212.47284400179}};
222  const std::array<unsigned int, 5> _d3{{2, 2, 2, 3, 3}};
223  const std::array<unsigned int, 5> _t3{{1, 0, 1, 3, 3}};
224  const std::array<Real, 5> _alpha3{{25.0, 25.0, 25.0, 15.0, 20.0}};
225  const std::array<Real, 5> _beta3{{325.0, 300.0, 300.0, 275.0, 275.0}};
226  const std::array<Real, 5> _gamma3{{1.16, 1.19, 1.19, 1.25, 1.22}};
227  const std::array<Real, 5> _eps3{{1.0, 1.0, 1.0, 1.0, 1.0}};
228  const std::array<Real, 3> _n4{{-0.66642276540751, 0.72608632349897, 0.055068668612842}};
229  const std::array<Real, 3> _a4{{3.5, 3.5, 3.0}};
230  const std::array<Real, 3> _b4{{0.875, 0.925, 0.875}};
231  const std::array<Real, 3> _beta4{{0.3, 0.3, 0.3}};
232  const std::array<Real, 3> _A4{{0.7, 0.7, 0.7}};
233  const std::array<Real, 3> _B4{{0.3, 0.3, 1.0}};
234  const std::array<Real, 3> _C4{{10.0, 10.0, 12.5}};
235  const std::array<Real, 3> _D4{{275.0, 275.0, 275.0}};
236 
238  const std::array<Real, 5> _mu_a{{0.235156, -0.491266, 5.211155e-2, 5.347906e-2, -1.537102e-2}};
239  const std::array<Real, 5> _mu_d{
240  {0.4071119e-2, 0.7198037e-4, 0.2411697e-16, 0.2971072e-22, -0.1627888e-22}};
241 
243  const std::array<Real, 3> _k_g1{{0.0, 0.0, 1.5}};
244  const std::array<Real, 7> _k_g2{{0.0, 1.0, 1.5, 1.5, 1.5, 3.5, 5.5}};
245  const std::array<unsigned int, 3> _k_h1{{1, 5, 1}};
246  const std::array<unsigned int, 7> _k_h2{{1, 2, 0, 5, 9, 0, 0}};
247  const std::array<Real, 3> _k_n1{{7.69857587, 0.159885811, 1.56918621}};
248  const std::array<Real, 7> _k_n2{
249  {-6.73400790, 16.3890156, 3.69415242, 22.3205514, 66.1420950, -0.171779133, 0.00433043347}};
250  const std::array<Real, 12> _k_a{
251  {3.0, 6.70697, 0.94604, 0.3, 0.3, 0.39751, 0.33791, 0.77963, 0.79857, 0.9, 0.02, 0.2}};
252 };
253 
254 #pragma GCC diagnostic pop
virtual Real k_from_rho_T(Real density, Real temperature) const override
const std::array< Real, 7 > _k_n2
const std::array< Real, 3 > _D4
const std::array< Real, 7 > _t1
const std::array< unsigned int, 5 > _d3
CO2 fluid properties Most thermophysical properties taken from: Span and Wagner, "A New Equation of S...
Real sublimationPressure(Real temperature) const
Sublimation pressure.
Real saturatedLiquidDensity(Real temperature) const
Saturated liquid density of CO2 Valid for temperatures between the triple point temperature and criti...
const Real _critical_density
Critical density (kg/m^3)
virtual Real vaporPressure(Real temperature) const override
Vapor pressure.
const std::array< Real, 3 > _k_g1
Coefficients for the thermal conductivity.
const Real _critical_pressure
Critical pressure (Pa)
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$.
virtual std::string fluidName() const override
static const std::string temperature
Definition: NS.h:57
const std::array< Real, 27 > _n2
const std::array< Real, 7 > _n1
Coefficients for the residual component of the Helmholtz free energy.
const std::array< Real, 3 > _C4
const std::array< Real, 5 > _theta0
virtual Real d2alpha_ddeltatau(Real delta, Real tau) const override
Second derivative of Helmholtz free energy wrt delta and tau.
CO2FluidProperties(const InputParameters &parameters)
const std::array< unsigned int, 7 > _k_h2
virtual Real rho_from_p_T(Real pressure, Real temperature) const override
Real saturatedVaporDensity(Real temperature) const
Saturated vapor density of CO2 Valid for temperatures between the triple point temperature and critic...
virtual Real triplePointTemperature() const override
Triple point temperature.
const std::array< unsigned int, 3 > _k_h1
const std::array< Real, 3 > _b4
static const std::string mu
Definition: NS.h:122
const Real _Rco2
Specific gas constant (J/mol/K)
static InputParameters validParams()
const std::array< Real, 5 > _mu_a
Coefficients for viscosity.
const std::array< Real, 3 > _a4
const std::array< Real, 5 > _n3
const std::array< unsigned int, 27 > _c2
const std::array< Real, 5 > _eps3
virtual Real d2alpha_dtau2(Real delta, Real tau) const override
Second derivative of Helmholtz free energy wrt tau.
const std::array< Real, 3 > _A4
const std::array< Real, 3 > _B4
virtual Real d2alpha_ddelta2(Real delta, Real tau) const override
Second derivative of Helmholtz free energy wrt delta.
virtual Real k_from_p_T(Real pressure, Real temperature) const override
const std::array< Real, 5 > _gamma3
const Real _triple_point_temperature
Triple point temperature (K)
const std::array< Real, 5 > _mu_d
const std::array< Real, 3 > _n4
virtual Real mu_from_p_T(Real pressure, Real temperature) const override
const std::array< Real, 5 > _alpha3
virtual Real dalpha_dtau(Real delta, Real tau) const override
Derivative of Helmholtz free energy wrt tau.
const Real _critical_temperature
Critical temperature (K)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const std::array< unsigned int, 5 > _t3
const std::array< Real, 3 > _beta4
virtual Real p_from_rho_T(Real density, Real temperature) const override
Pressure as a function of density and temperature.
static const std::string pressure
Definition: NS.h:56
virtual Real criticalDensity() const override
Critical density.
const std::array< Real, 12 > _k_a
virtual std::vector< Real > henryCoefficients() const override
Henry&#39;s law coefficients for dissolution in water.
const InputParameters & parameters() const
const std::array< Real, 3 > _k_n1
virtual void rho_mu_from_p_T(Real pressure, Real temperature, Real &rho, Real &mu) const override
Combined methods.
virtual Real criticalPressure() const override
Critical pressure.
const Real _triple_point_pressure
Triple point pressure (Pa)
const std::array< Real, 5 > _a0
Coefficients for the ideal gas component of the Helmholtz free energy.
virtual Real mu_from_rho_T(Real density, Real temperature) const override
const std::array< Real, 27 > _t2
const std::array< Real, 7 > _k_g2
virtual Real criticalTemperature() const override
Critical temperature.
const std::array< Real, 5 > _beta3
const std::array< unsigned int, 7 > _d1
Real partialDensity(Real temperature) const
Partial density of dissolved CO2 From Garcia, Density of aqueous solutions of CO2, LBNL-49023 (2001)
virtual Real dalpha_ddelta(Real delta, Real tau) const override
Derivative of Helmholtz free energy wrt delta.
Real meltingPressure(Real temperature) const
Melting 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:124
virtual Real molarMass() const override
Fluid name.
virtual Real triplePointPressure() const override
Triple point pressure.
virtual Real alpha(Real delta, Real tau) const override
Helmholtz free energy.
const Real _Mco2
Molar mass of CO2 (kg/mol)
const std::array< unsigned int, 27 > _d2