www.mooseframework.org
PorousFlowBrineCO2.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 
17 class PorousFlowBrineCO2;
18 
19 template <>
20 InputParameters validParams<PorousFlowBrineCO2>();
21 
52 {
53 public:
54  PorousFlowBrineCO2(const InputParameters & parameters);
55 
56  virtual std::string fluidStateName() const override;
57 
58  virtual void thermophysicalProperties(Real pressure,
59  Real temperature,
60  Real Xnacl,
61  Real Z,
62  unsigned int qp,
63  std::vector<FluidStateProperties> & fsp) const override;
64 
79  void equilibriumMoleFractions(const DualReal & pressure,
80  const DualReal & temperature,
81  const DualReal & Xnacl,
82  DualReal & xco2,
83  DualReal & yh2o) const;
84 
94  void equilibriumMassFractions(const DualReal & pressure,
95  const DualReal & temperature,
96  const DualReal & Xnacl,
97  DualReal & Xco2,
98  DualReal & Yh2o) const;
99 
111  void massFractions(const DualReal & pressure,
112  const DualReal & temperature,
113  const DualReal & Xnacl,
114  const DualReal & Z,
115  FluidStatePhaseEnum & phase_state,
116  std::vector<FluidStateProperties> & fsp) const;
117 
125  void gasProperties(const DualReal & pressure,
126  const DualReal & temperature,
127  std::vector<FluidStateProperties> & fsp) const;
128 
137  void liquidProperties(const DualReal & pressure,
138  const DualReal & temperature,
139  const DualReal & Xnacl,
140  std::vector<FluidStateProperties> & fsp) const;
141 
152  DualReal saturation(const DualReal & pressure,
153  const DualReal & temperature,
154  const DualReal & Xnacl,
155  const DualReal & Z,
156  std::vector<FluidStateProperties> & fsp) const;
157 
168  void twoPhaseProperties(const DualReal & pressure,
169  const DualReal & temperature,
170  const DualReal & Xnacl,
171  const DualReal & Z,
172  unsigned int qp,
173  std::vector<FluidStateProperties> & fsp) const;
174 
185  void fugacityCoefficientsLowTemp(const DualReal & pressure,
186  const DualReal & temperature,
187  const DualReal & co2_density,
188  DualReal & fco2,
189  DualReal & fh2o) const;
190 
192 
204  void fugacityCoefficientsHighTemp(const DualReal & pressure,
205  const DualReal & temperature,
206  const DualReal & co2_density,
207  const DualReal & xco2,
208  const DualReal & yh2o,
209  DualReal & fco2,
210  DualReal & fh2o) const;
211 
212  DualReal fugacityCoefficientH2OHighTemp(const DualReal & pressure,
213  const DualReal & temperature,
214  const DualReal & co2_density,
215  const DualReal & xco2,
216  const DualReal & yh2o) const;
217 
218  DualReal fugacityCoefficientCO2HighTemp(const DualReal & pressure,
219  const DualReal & temperature,
220  const DualReal & co2_density,
221  const DualReal & xco2,
222  const DualReal & yh2o) const;
224 
233  DualReal activityCoefficientH2O(const DualReal & temperature, const DualReal & xco2) const;
234 
243  DualReal activityCoefficientCO2(const DualReal & temperature, const DualReal & xco2) const;
244 
259  DualReal activityCoefficient(const DualReal & pressure,
260  const DualReal & temperature,
261  const DualReal & Xnacl) const;
262 
274  DualReal activityCoefficientHighTemp(const DualReal & temperature, const DualReal & Xnacl) const;
275 
286  DualReal equilibriumConstantH2O(const DualReal & temperature) const;
287 
298  DualReal equilibriumConstantCO2(const DualReal & temperature) const;
299 
307  DualReal partialDensityCO2(const DualReal & temperature) const;
308 
309  virtual Real totalMassFraction(
310  Real pressure, Real temperature, Real Xnacl, Real saturation, unsigned int qp) const override;
311 
316  unsigned int saltComponentIndex() const { return _salt_component; };
317 
327  DualReal henryConstant(const DualReal & temperature, const DualReal & Xnacl) const;
328 
341  DualReal enthalpyOfDissolutionGas(const DualReal & temperature, const DualReal & Xnacl) const;
342 
356  DualReal enthalpyOfDissolution(const DualReal & temperature) const;
357 
368  void equilibriumMoleFractionsLowTemp(const DualReal & pressure,
369  const DualReal & temperature,
370  const DualReal & Xnacl,
371  DualReal & xco2,
372  DualReal & yh2o) const;
373 
385  Real temperature,
386  Real Xnacl,
387  Real co2_density,
388  Real & xco2,
389  Real & yh2o) const;
390 
391 protected:
393  void checkVariables(Real pressure, Real temperature) const;
394 
408  Real temperature, Real f0, Real df0, Real f1, Real df1, Real & value, Real & deriv) const;
409 
411 
424  void funcABHighTemp(Real pressure,
425  Real temperature,
426  Real Xnacl,
427  Real co2_density,
428  Real xco2,
429  Real yh2o,
430  Real & A,
431  Real & B) const;
432 
433  void funcABHighTemp(Real pressure,
434  Real temperature,
435  Real Xnacl,
436  Real co2_density,
437  Real xco2,
438  Real yh2o,
439  Real & A,
440  Real & dA_dp,
441  Real & dA_dT,
442  Real & B,
443  Real & dB_dp,
444  Real & dB_dT,
445  Real & dB_dX) const;
446 
447  void funcABLowTemp(const DualReal & pressure,
448  const DualReal & temperature,
449  const DualReal & co2_density,
450  DualReal & A,
451  DualReal & B) const;
453 
455  const unsigned int _salt_component;
461  const Real _Mh2o;
463  const Real _invMh2o;
465  const Real _Mco2;
467  const Real _Mnacl;
469  const Real _Rbar;
471  const Real _Tlower;
473  const Real _Tupper;
476  const Real _Zmin;
478  const std::vector<Real> _co2_henry;
479 };
PorousFlowBrineCO2::henryConstant
DualReal henryConstant(const DualReal &temperature, const DualReal &Xnacl) const
Henry's constant of dissolution of gas phase CO2 in brine.
Definition: PorousFlowBrineCO2.C:1080
PorousFlowBrineCO2::gasProperties
void gasProperties(const DualReal &pressure, const DualReal &temperature, std::vector< FluidStateProperties > &fsp) const
Thermophysical properties of the gaseous state.
Definition: PorousFlowBrineCO2.C:246
PorousFlowBrineCO2::massFractions
void massFractions(const DualReal &pressure, const DualReal &temperature, const DualReal &Xnacl, const DualReal &Z, FluidStatePhaseEnum &phase_state, std::vector< FluidStateProperties > &fsp) const
Mass fractions of CO2 and H2O in both phases, as well as derivatives wrt PorousFlow variables.
Definition: PorousFlowBrineCO2.C:161
PorousFlowBrineCO2::totalMassFraction
virtual Real totalMassFraction(Real pressure, Real temperature, Real Xnacl, Real saturation, unsigned int qp) const override
Total mass fraction of fluid component summed over all phases in the two-phase state for a specified ...
Definition: PorousFlowBrineCO2.C:1037
SinglePhaseFluidProperties
Common class for single phase fluid properties.
Definition: SinglePhaseFluidProperties.h:89
PorousFlowBrineCO2::enthalpyOfDissolutionGas
DualReal enthalpyOfDissolutionGas(const DualReal &temperature, const DualReal &Xnacl) const
Enthalpy of dissolution of gas phase CO2 in brine calculated using Henry's constant From Himmelblau,...
Definition: PorousFlowBrineCO2.C:1103
PorousFlowBrineCO2::PorousFlowBrineCO2
PorousFlowBrineCO2(const InputParameters &parameters)
Definition: PorousFlowBrineCO2.C:30
PorousFlowFluidStateMultiComponentBase
Compositional flash routines for miscible multiphase flow classes with multiple fluid components.
Definition: PorousFlowFluidStateMultiComponentBase.h:23
PorousFlowBrineCO2::activityCoefficientCO2
DualReal activityCoefficientCO2(const DualReal &temperature, const DualReal &xco2) const
Activity coefficient of CO2 Eq.
Definition: PorousFlowBrineCO2.C:567
validParams< PorousFlowBrineCO2 >
InputParameters validParams< PorousFlowBrineCO2 >()
Definition: PorousFlowBrineCO2.C:20
PorousFlowBrineCO2::twoPhaseProperties
void twoPhaseProperties(const DualReal &pressure, const DualReal &temperature, const DualReal &Xnacl, const DualReal &Z, unsigned int qp, std::vector< FluidStateProperties > &fsp) const
Gas and liquid properties in the two-phase region.
Definition: PorousFlowBrineCO2.C:355
PorousFlowBrineCO2::_Tupper
const Real _Tupper
Temperature above which the Spycher & Pruess (2010) model is used (K)
Definition: PorousFlowBrineCO2.h:473
FluidStatePhaseEnum
FluidStatePhaseEnum
Phase state enum.
Definition: PorousFlowFluidStateBase.h:18
PorousFlowBrineCO2::_Tlower
const Real _Tlower
Temperature below which the Spycher, Pruess & Ennis-King (2003) model is used (K)
Definition: PorousFlowBrineCO2.h:471
PorousFlowBrineCO2::solveEquilibriumMoleFractionHighTemp
void solveEquilibriumMoleFractionHighTemp(Real pressure, Real temperature, Real Xnacl, Real co2_density, Real &xco2, Real &yh2o) const
Function to solve for yh2o and xco2 iteratively in the elevated temperature regime (T > 100C)
Definition: PorousFlowBrineCO2.C:960
PorousFlowBrineCO2::fluidStateName
virtual std::string fluidStateName() const override
Name of FluidState.
Definition: PorousFlowBrineCO2.C:86
PorousFlowBrineCO2::activityCoefficient
DualReal activityCoefficient(const DualReal &pressure, const DualReal &temperature, const DualReal &Xnacl) const
Activity coefficient for CO2 in brine.
Definition: PorousFlowBrineCO2.C:583
PorousFlowBrineCO2::checkVariables
void checkVariables(Real pressure, Real temperature) const
Check the input variables.
Definition: PorousFlowBrineCO2.C:1163
PorousFlowBrineCO2::_Zmin
const Real _Zmin
Minimum Z - below this value all CO2 will be dissolved.
Definition: PorousFlowBrineCO2.h:476
PorousFlowBrineCO2::_invMh2o
const Real _invMh2o
Inverse of molar mass of H2O (mol/kg)
Definition: PorousFlowBrineCO2.h:463
PorousFlowBrineCO2::smoothCubicInterpolation
void smoothCubicInterpolation(Real temperature, Real f0, Real df0, Real f1, Real df1, Real &value, Real &deriv) const
Cubic function to smoothly interpolate between the low temperature and elevated temperature models fo...
Definition: PorousFlowBrineCO2.C:1144
PorousFlowBrineCO2::equilibriumMoleFractionsLowTemp
void equilibriumMoleFractionsLowTemp(const DualReal &pressure, const DualReal &temperature, const DualReal &Xnacl, DualReal &xco2, DualReal &yh2o) const
Mole fractions of CO2 in brine and water vapor in CO2 at equilibrium in the low temperature regime (T...
Definition: PorousFlowBrineCO2.C:792
PorousFlowBrineCO2::fugacityCoefficientsLowTemp
void fugacityCoefficientsLowTemp(const DualReal &pressure, const DualReal &temperature, const DualReal &co2_density, DualReal &fco2, DualReal &fh2o) const
Fugacity coefficients for H2O and CO2 for T <= 100C Eq.
Definition: PorousFlowBrineCO2.C:401
PorousFlowBrineCO2::saturation
DualReal saturation(const DualReal &pressure, const DualReal &temperature, const DualReal &Xnacl, const DualReal &Z, std::vector< FluidStateProperties > &fsp) const
Gas saturation in the two-phase region.
Definition: PorousFlowBrineCO2.C:311
PorousFlowFluidStateMultiComponentBase.h
PorousFlowBrineCO2::funcABLowTemp
void funcABLowTemp(const DualReal &pressure, const DualReal &temperature, const DualReal &co2_density, DualReal &A, DualReal &B) const
Definition: PorousFlowBrineCO2.C:833
PorousFlowBrineCO2::activityCoefficientHighTemp
DualReal activityCoefficientHighTemp(const DualReal &temperature, const DualReal &Xnacl) const
Activity coefficient for CO2 in brine used in the elevated temperature formulation.
Definition: PorousFlowBrineCO2.C:605
PorousFlowBrineCO2::_Rbar
const Real _Rbar
Molar gas constant in bar cm^3 /(K mol)
Definition: PorousFlowBrineCO2.h:469
Water97FluidProperties
Water (H2O) fluid properties as a function of pressure (Pa) and temperature (K) from IAPWS-IF97: Revi...
Definition: Water97FluidProperties.h:42
PorousFlowBrineCO2::_co2_fp
const SinglePhaseFluidProperties & _co2_fp
Fluid properties UserObject for the CO2.
Definition: PorousFlowBrineCO2.h:459
PorousFlowBrineCO2::enthalpyOfDissolution
DualReal enthalpyOfDissolution(const DualReal &temperature) const
Enthalpy of dissolution of CO2 in brine calculated using linear fit to model of Duan and Sun,...
Definition: PorousFlowBrineCO2.C:1134
PorousFlowBrineCO2::fugacityCoefficientCO2HighTemp
DualReal fugacityCoefficientCO2HighTemp(const DualReal &pressure, const DualReal &temperature, const DualReal &co2_density, const DualReal &xco2, const DualReal &yh2o) const
Definition: PorousFlowBrineCO2.C:505
PorousFlowBrineCO2::saltComponentIndex
unsigned int saltComponentIndex() const
The index of the salt component.
Definition: PorousFlowBrineCO2.h:316
PorousFlowBrineCO2::fugacityCoefficientsHighTemp
void fugacityCoefficientsHighTemp(const DualReal &pressure, const DualReal &temperature, const DualReal &co2_density, const DualReal &xco2, const DualReal &yh2o, DualReal &fco2, DualReal &fh2o) const
Fugacity coefficients for H2O and CO2 at elevated temperatures (100C < T <= 300C).
Definition: PorousFlowBrineCO2.C:441
PorousFlowBrineCO2::activityCoefficientH2O
DualReal activityCoefficientH2O(const DualReal &temperature, const DualReal &xco2) const
Activity coefficient of H2O Eq.
Definition: PorousFlowBrineCO2.C:551
PorousFlowBrineCO2::thermophysicalProperties
virtual void thermophysicalProperties(Real pressure, Real temperature, Real Xnacl, Real Z, unsigned int qp, std::vector< FluidStateProperties > &fsp) const override
Determines the complete thermophysical state of the system for a given set of primary variables.
Definition: PorousFlowBrineCO2.C:92
PorousFlowBrineCO2::equilibriumConstantCO2
DualReal equilibriumConstantCO2(const DualReal &temperature) const
Equilibrium constant for CO2 For temperatures 12C <= T <= 99C, uses Spycher, Pruess and Ennis-King (2...
Definition: PorousFlowBrineCO2.C:648
PorousFlowBrineCO2::partialDensityCO2
DualReal partialDensityCO2(const DualReal &temperature) const
Partial density of dissolved CO2 From Garcia, Density of aqueous solutions of CO2,...
Definition: PorousFlowBrineCO2.C:1026
PorousFlowBrineCO2::equilibriumConstantH2O
DualReal equilibriumConstantH2O(const DualReal &temperature) const
Equilibrium constant for H2O For temperatures 12C <= T <= 99C, uses Spycher, Pruess and Ennis-King (2...
Definition: PorousFlowBrineCO2.C:621
PorousFlowBrineCO2::equilibriumMassFractions
void equilibriumMassFractions(const DualReal &pressure, const DualReal &temperature, const DualReal &Xnacl, DualReal &Xco2, DualReal &Yh2o) const
Mass fractions of CO2 in brine and water vapor in CO2 at equilibrium.
Definition: PorousFlowBrineCO2.C:376
PorousFlowBrineCO2::_Mnacl
const Real _Mnacl
Molar mass of NaCL.
Definition: PorousFlowBrineCO2.h:467
NS::temperature
const std::string temperature
Definition: NS.h:26
PorousFlowBrineCO2::liquidProperties
void liquidProperties(const DualReal &pressure, const DualReal &temperature, const DualReal &Xnacl, std::vector< FluidStateProperties > &fsp) const
Thermophysical properties of the liquid state.
Definition: PorousFlowBrineCO2.C:269
PorousFlowBrineCO2::fugacityCoefficientH2OHighTemp
DualReal fugacityCoefficientH2OHighTemp(const DualReal &pressure, const DualReal &temperature, const DualReal &co2_density, const DualReal &xco2, const DualReal &yh2o) const
Definition: PorousFlowBrineCO2.C:459
PorousFlowBrineCO2::_co2_henry
const std::vector< Real > _co2_henry
Henry's coefficeients for CO2.
Definition: PorousFlowBrineCO2.h:478
PorousFlowBrineCO2
Specialized class for brine and CO2 including calculation of mutual solubility of the two fluids usin...
Definition: PorousFlowBrineCO2.h:51
PorousFlowBrineCO2::_Mco2
const Real _Mco2
Molar mass of CO2 (kg/mol)
Definition: PorousFlowBrineCO2.h:465
PorousFlowBrineCO2::_Mh2o
const Real _Mh2o
Molar mass of water (kg/mol)
Definition: PorousFlowBrineCO2.h:461
BrineFluidProperties
Brine (NaCl in H2O) fluid properties as a function of pressure (Pa), temperature (K) and NaCl mass fr...
Definition: BrineFluidProperties.h:38
PorousFlowBrineCO2::_salt_component
const unsigned int _salt_component
Salt component index.
Definition: PorousFlowBrineCO2.h:455
PorousFlowBrineCO2::_brine_fp
const BrineFluidProperties & _brine_fp
Fluid properties UserObject for water.
Definition: PorousFlowBrineCO2.h:457
PorousFlowBrineCO2::funcABHighTemp
void funcABHighTemp(Real pressure, Real temperature, Real Xnacl, Real co2_density, Real xco2, Real yh2o, Real &A, Real &B) const
The function A (Eq.
Definition: PorousFlowBrineCO2.C:867
NS::pressure
const std::string pressure
Definition: NS.h:25
PorousFlowBrineCO2::equilibriumMoleFractions
void equilibriumMoleFractions(const DualReal &pressure, const DualReal &temperature, const DualReal &Xnacl, DualReal &xco2, DualReal &yh2o) const
Mole fractions of CO2 in brine and water vapor in CO2 at equilibrium.
Definition: PorousFlowBrineCO2.C:674