https://mooseframework.inl.gov
Loading...
Searching...
No Matches
CO2FluidProperties.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
41{
42public:
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
60 void mu_from_rho_T(Real density,
61 Real temperature,
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,
71 Real temperature,
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
102 Real meltingPressure(Real temperature) const;
103
113 Real sublimationPressure(Real temperature) const;
114
115 virtual Real vaporPressure(Real temperature) const override;
116
117 virtual void vaporPressure(Real temperature, Real & psat, Real & dpsat_dT) const override;
118
129 Real saturatedLiquidDensity(Real temperature) const;
130
141 Real saturatedVaporDensity(Real temperature) const;
142
143 virtual Real p_from_rho_T(Real density, Real temperature) const override;
144
145 virtual std::vector<Real> henryCoefficients() const override;
146
154 Real partialDensity(Real temperature) const;
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
163protected:
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;
187 const Real _triple_point_temperature = 216.592;
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
const double mu
CO2 fluid properties Most thermophysical properties taken from: Span and Wagner, "A New Equation of S...
virtual Real p_from_rho_T(Real density, Real temperature) const override
Pressure as a function of density and temperature.
virtual Real rho_from_p_T(Real pressure, Real temperature) const override
virtual Real criticalDensity() const override
Critical density.
virtual Real molarMass() const override
Molar mass [kg/mol].
Real meltingPressure(Real temperature) const
Melting pressure.
const std::array< unsigned int, 5 > _d3
virtual Real k_from_p_T(Real pressure, Real temperature) const override
const std::array< Real, 3 > _b4
const std::array< Real, 7 > _k_g2
const std::array< Real, 3 > _n4
virtual Real alpha(Real delta, Real tau) const override
Helmholtz free energy.
const std::array< Real, 3 > _D4
const Real _critical_pressure
Critical pressure (Pa)
virtual Real triplePointPressure() const override
Triple point pressure.
Real saturatedLiquidDensity(Real temperature) const
Saturated liquid density of CO2 Valid for temperatures between the triple point temperature and criti...
virtual Real d2alpha_ddeltatau(Real delta, Real tau) const override
Second derivative of Helmholtz free energy wrt delta and tau.
const std::array< unsigned int, 7 > _k_h2
virtual void rho_mu_from_p_T(Real pressure, Real temperature, Real &rho, Real &mu) const override
Combined methods.
const std::array< Real, 7 > _k_n2
const std::array< Real, 27 > _n2
const std::array< unsigned int, 27 > _c2
virtual Real d2alpha_ddelta2(Real delta, Real tau) const override
Second derivative of Helmholtz free energy wrt delta.
const std::array< Real, 3 > _k_n1
virtual Real mu_from_rho_T(Real density, Real temperature) const override
const std::array< Real, 3 > _a4
const std::array< Real, 12 > _k_a
const std::array< unsigned int, 27 > _d2
const std::array< Real, 5 > _beta3
virtual Real mu_from_p_T(Real pressure, Real temperature) const override
virtual Real criticalTemperature() const override
Critical temperature.
const std::array< Real, 3 > _A4
const std::array< Real, 5 > _theta0
virtual std::vector< Real > henryCoefficients() const override
Henry's law coefficients for dissolution in water.
const std::array< Real, 7 > _t1
virtual Real dalpha_ddelta(Real delta, Real tau) const override
Derivative of Helmholtz free energy wrt delta.
const std::array< unsigned int, 3 > _k_h1
virtual Real vaporPressure(Real temperature) const override
Vapor pressure.
const std::array< Real, 5 > _eps3
Real sublimationPressure(Real temperature) const
Sublimation pressure.
virtual Real k_from_rho_T(Real density, Real temperature) const override
const Real _Rco2
Specific gas constant (J/mol/K)
const std::array< Real, 7 > _n1
Coefficients for the residual component of the Helmholtz free energy.
const std::array< Real, 5 > _n3
const std::array< Real, 3 > _beta4
const std::array< Real, 5 > _mu_d
virtual Real triplePointTemperature() const override
Triple point temperature.
virtual Real criticalPressure() const override
Critical pressure.
const Real _critical_density
Critical density (kg/m^3)
const Real _triple_point_temperature
Triple point temperature (K)
virtual Real dalpha_dtau(Real delta, Real tau) const override
Derivative of Helmholtz free energy wrt tau.
Real partialDensity(Real temperature) const
Partial density of dissolved CO2 From Garcia, Density of aqueous solutions of CO2,...
const std::array< Real, 3 > _C4
virtual std::string fluidName() const override
Fluid name.
const Real _Mco2
Molar mass of CO2 (kg/mol)
const Real _critical_temperature
Critical temperature (K)
const std::array< Real, 5 > _mu_a
Coefficients for viscosity.
virtual Real d2alpha_dtau2(Real delta, Real tau) const override
Second derivative of Helmholtz free energy wrt tau.
const std::array< unsigned int, 7 > _d1
static InputParameters validParams()
const std::array< Real, 5 > _alpha3
const std::array< unsigned int, 5 > _t3
const std::array< Real, 5 > _a0
Coefficients for the ideal gas component of the Helmholtz free energy.
const std::array< Real, 3 > _k_g1
Coefficients for the thermal conductivity.
Real saturatedVaporDensity(Real temperature) const
Saturated vapor density of CO2 Valid for temperatures between the triple point temperature and critic...
const std::array< Real, 3 > _B4
const std::array< Real, 27 > _t2
const std::array< Real, 5 > _gamma3
const Real _triple_point_pressure
Triple point pressure (Pa)
Base class equation of state for fluids that use a Helmholtz free energy alpha(delta,...
const InputParameters & parameters() const