Specialized class for brine and CO2 including calculation of mutual solubility of the two fluids using a high-accuracy fugacity-based formulation. More...
#include <PorousFlowBrineCO2.h>
Public Member Functions | |
PorousFlowBrineCO2 (const InputParameters ¶meters) | |
virtual std::string | fluidStateName () const override |
Name of FluidState. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
void | gasProperties (const DualReal &pressure, const DualReal &temperature, std::vector< FluidStateProperties > &fsp) const |
Thermophysical properties of the gaseous state. More... | |
void | liquidProperties (const DualReal &pressure, const DualReal &temperature, const DualReal &Xnacl, std::vector< FluidStateProperties > &fsp) const |
Thermophysical properties of the liquid state. More... | |
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. More... | |
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. More... | |
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. More... | |
DualReal | activityCoefficientH2O (const DualReal &temperature, const DualReal &xco2) const |
Activity coefficient of H2O Eq. More... | |
DualReal | activityCoefficientCO2 (const DualReal &temperature, const DualReal &xco2) const |
Activity coefficient of CO2 Eq. More... | |
DualReal | activityCoefficient (const DualReal &pressure, const DualReal &temperature, const DualReal &Xnacl) const |
Activity coefficient for CO2 in brine. More... | |
DualReal | activityCoefficientHighTemp (const DualReal &temperature, const DualReal &Xnacl) const |
Activity coefficient for CO2 in brine used in the elevated temperature formulation. More... | |
DualReal | equilibriumConstantH2O (const DualReal &temperature) const |
Equilibrium constant for H2O For temperatures 12C <= T <= 99C, uses Spycher, Pruess and Ennis-King (2003) For temperatures 109C <= T <= 300C, uses Spycher and Pruess (2010) For temperatures 99C < T < 109C, the value is calculated by smoothly interpolating the two formulations. More... | |
DualReal | equilibriumConstantCO2 (const DualReal &temperature) const |
Equilibrium constant for CO2 For temperatures 12C <= T <= 99C, uses Spycher, Pruess and Ennis-King (2003) For temperatures 109C <= T <= 300C, uses Spycher and Pruess (2010) For temperatures 99C < T < 109C, the value is calculated by smoothly interpolating the two formulations. More... | |
DualReal | partialDensityCO2 (const DualReal &temperature) const |
Partial density of dissolved CO2 From Garcia, Density of aqueous solutions of CO2, LBNL-49023 (2001) More... | |
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 gas saturation. More... | |
unsigned int | saltComponentIndex () const |
The index of the salt component. More... | |
DualReal | henryConstant (const DualReal &temperature, const DualReal &Xnacl) const |
Henry's constant of dissolution of gas phase CO2 in brine. More... | |
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, Partial molal heats and entropies of solution for gases dissolved in water from the freezing to the near critical point, J. More... | |
DualReal | enthalpyOfDissolution (const DualReal &temperature) const |
Enthalpy of dissolution of CO2 in brine calculated using linear fit to model of Duan and Sun, An improved model calculating CO2 solubility in pure water and aqueous NaCl solutions from 273 to 533 K and from 0 to 2000 bar, Chemical geology, 193, 257–271 (2003). More... | |
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 <= 99C). More... | |
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) More... | |
void | phaseState (Real Zi, Real Xi, Real Yi, FluidStatePhaseEnum &phase_state) const |
Determines the phase state gven the total mass fraction and equilibrium mass fractions. More... | |
unsigned int | getPressureIndex () const |
unsigned int | getTemperatureIndex () const |
unsigned int | getZIndex () const |
unsigned int | getXIndex () const |
Real | rachfordRice (Real vf, std::vector< Real > &Zi, std::vector< Real > &Ki) const |
Rachford-Rice equation for vapor fraction. More... | |
Real | rachfordRiceDeriv (Real vf, std::vector< Real > &Zi, std::vector< Real > &Ki) const |
Derivative of Rachford-Rice equation wrt vapor fraction. More... | |
Real | vaporMassFraction (Real Z0, Real K0, Real K1) const |
Solves Rachford-Rice equation to provide vapor mass fraction. More... | |
DualReal | vaporMassFraction (const DualReal &Z0, const DualReal &K0, const DualReal &K1) const |
Real | vaporMassFraction (std::vector< Real > &Zi, std::vector< Real > &Ki) const |
void | initialize () final |
void | execute () final |
void | finalize () final |
unsigned int | numPhases () const |
The maximum number of phases in this model. More... | |
unsigned int | numComponents () const |
The maximum number of components in this model. More... | |
unsigned int | aqueousPhaseIndex () const |
The index of the aqueous phase. More... | |
unsigned int | gasPhaseIndex () const |
The index of the gas phase. More... | |
unsigned int | aqueousComponentIndex () const |
The index of the aqueous fluid component. More... | |
unsigned int | gasComponentIndex () const |
The index of the gas fluid component. More... | |
void | clearFluidStateProperties (std::vector< FluidStateProperties > &fsp) const |
Clears the contents of the FluidStateProperties data structure. More... | |
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). More... | |
DualReal | fugacityCoefficientH2OHighTemp (const DualReal &pressure, const DualReal &temperature, const DualReal &co2_density, const DualReal &xco2, const DualReal &yh2o) const |
DualReal | fugacityCoefficientCO2HighTemp (const DualReal &pressure, const DualReal &temperature, const DualReal &co2_density, const DualReal &xco2, const DualReal &yh2o) const |
Protected Member Functions | |
void | checkVariables (Real pressure, Real temperature) const |
Check the input variables. More... | |
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 for 99C < T < 109C. More... | |
void | funcABHighTemp (Real pressure, Real temperature, Real Xnacl, Real co2_density, Real xco2, Real yh2o, Real &A, Real &B) const |
The function A (Eq. More... | |
void | funcABHighTemp (Real pressure, Real temperature, Real Xnacl, Real co2_density, Real xco2, Real yh2o, Real &A, Real &dA_dp, Real &dA_dT, Real &B, Real &dB_dp, Real &dB_dT, Real &dB_dX) const |
void | funcABLowTemp (const DualReal &pressure, const DualReal &temperature, const DualReal &co2_density, DualReal &A, DualReal &B) const |
Protected Attributes | |
const unsigned int | _salt_component |
Salt component index. More... | |
const BrineFluidProperties & | _brine_fp |
Fluid properties UserObject for water. More... | |
const SinglePhaseFluidProperties & | _co2_fp |
Fluid properties UserObject for the CO2. More... | |
const Real | _Mh2o |
Molar mass of water (kg/mol) More... | |
const Real | _invMh2o |
Inverse of molar mass of H2O (mol/kg) More... | |
const Real | _Mco2 |
Molar mass of CO2 (kg/mol) More... | |
const Real | _Mnacl |
Molar mass of NaCL. More... | |
const Real | _Rbar |
Molar gas constant in bar cm^3 /(K mol) More... | |
const Real | _Tlower |
Temperature below which the Spycher, Pruess & Ennis-King (2003) model is used (K) More... | |
const Real | _Tupper |
Temperature above which the Spycher & Pruess (2010) model is used (K) More... | |
const Real | _Zmin |
Minimum Z - below this value all CO2 will be dissolved. More... | |
const std::vector< Real > | _co2_henry |
Henry's coefficeients for CO2. More... | |
const unsigned int | _pidx |
Index of derivative wrt pressure. More... | |
const unsigned int | _Zidx |
Index of derivative wrt total mass fraction Z. More... | |
const unsigned int | _Tidx |
Index of derivative wrt temperature. More... | |
const unsigned int | _Xidx |
Index of derivative wrt salt mass fraction X. More... | |
const Real | _nr_max_its |
Maximum number of iterations for the Newton-Raphson routine. More... | |
const Real | _nr_tol |
Tolerance for Newton-Raphson iterations. More... | |
unsigned int | _num_phases |
Number of phases. More... | |
unsigned int | _num_components |
Number of components. More... | |
const unsigned int | _aqueous_phase_number |
Phase number of the aqueous phase. More... | |
unsigned int | _gas_phase_number |
Phase number of the gas phase. More... | |
const unsigned int | _aqueous_fluid_component |
Fluid component number of the aqueous component. More... | |
unsigned int | _gas_fluid_component |
Fluid component number of the gas phase. More... | |
const Real | _R |
Universal gas constant (J/mol/K) More... | |
const Real | _T_c2k |
Conversion from C to K. More... | |
const PorousFlowCapillaryPressure & | _pc |
Capillary pressure UserObject. More... | |
FluidStateProperties | _empty_fsp |
Empty FluidStateProperties object. More... | |
Specialized class for brine and CO2 including calculation of mutual solubility of the two fluids using a high-accuracy fugacity-based formulation.
For temperatures 12C <= T <= 99C, the formulation is based on Spycher, Pruess and Ennis-King, CO2-H2O mixtures in the geological sequestration of CO2. I. Assessment and calculation of mutual solubilities from 12 to 100C and up to 600 bar, Geochimica et Cosmochimica Acta, 67, 3015-3031 (2003), and Spycher and Pruess, CO2-H2O mixtures in the geological sequestration of CO2. II. Partitioning in chloride brine at 12-100C and up to 600 bar, Geochimica et Cosmochimica Acta, 69, 3309-3320 (2005).
For temperatures 109C <= T <= 300C, the formulation is based on Spycher and Pruess, A Phase-Partitioning Model for CO2-Brine Mixtures at Elevated Temperatures and Pressures: Application to CO2-Enhanced Geothermal Systems, Transport in Porous Media, 82, 173-196 (2010)
As the two formulations do not coincide at temperatures near 100C, a cubic polynomial is used in the intermediate temperature range 99C < T < 109C to provide a smooth transition from the two formulations in this region.
Notation convention Throughout this class, both mole fractions and mass fractions will be used. The following notation will be used: yk: mole fraction of component k in the gas phase xk: mole fraction of component k in the liquid phase Yk: mass fraction of component k in the gas phase Xk: mass fraction of component k in the liquid phase
Definition at line 51 of file PorousFlowBrineCO2.h.
PorousFlowBrineCO2::PorousFlowBrineCO2 | ( | const InputParameters & | parameters | ) |
Definition at line 30 of file PorousFlowBrineCO2.C.
DualReal PorousFlowBrineCO2::activityCoefficient | ( | const DualReal & | pressure, |
const DualReal & | temperature, | ||
const DualReal & | Xnacl | ||
) | const |
Activity coefficient for CO2 in brine.
From Duan and Sun, An improved model calculating CO2 solubility in pure water and aqueous NaCl solutions from 257 to 533 K and from 0 to 2000 bar, Chem. Geol., 193, 257-271 (2003)
Note: this is not a 'true' activity coefficient, and is instead related to the molality of CO2 in water and brine. Nevertheless, Spycher and Pruess (2005) refer to it as an activity coefficient, so this notation is followed here.
pressure | phase pressure (Pa) |
temperature | phase temperature (K) |
Xnacl | salt mass fraction (kg/kg) |
Definition at line 583 of file PorousFlowBrineCO2.C.
Referenced by equilibriumMoleFractionsLowTemp().
DualReal PorousFlowBrineCO2::activityCoefficientCO2 | ( | const DualReal & | temperature, |
const DualReal & | xco2 | ||
) | const |
Activity coefficient of CO2 Eq.
(13) from Spycher & Pruess (2010)
temperature | temperature (K) |
xco2 | mole fraction of CO2 in liquid phase (-) |
Definition at line 567 of file PorousFlowBrineCO2.C.
Referenced by funcABHighTemp().
DualReal PorousFlowBrineCO2::activityCoefficientH2O | ( | const DualReal & | temperature, |
const DualReal & | xco2 | ||
) | const |
Activity coefficient of H2O Eq.
(12) from Spycher & Pruess (2010)
temperature | temperature (K) |
xco2 | mole fraction of CO2 in liquid phase (-) |
Definition at line 551 of file PorousFlowBrineCO2.C.
Referenced by funcABHighTemp().
DualReal PorousFlowBrineCO2::activityCoefficientHighTemp | ( | const DualReal & | temperature, |
const DualReal & | Xnacl | ||
) | const |
Activity coefficient for CO2 in brine used in the elevated temperature formulation.
Eq. (18) from Spycher and Pruess (2010).
Note: unlike activityCoefficient(), no pressure dependence is included in this formulation
temperature | phase temperature (K) |
Xnacl | salt mass fraction (kg/kg) |
Definition at line 605 of file PorousFlowBrineCO2.C.
Referenced by funcABHighTemp().
|
inlineinherited |
The index of the aqueous fluid component.
Definition at line 92 of file PorousFlowFluidStateBase.h.
|
inlineinherited |
The index of the aqueous phase.
Definition at line 80 of file PorousFlowFluidStateBase.h.
|
protected |
Check the input variables.
Definition at line 1163 of file PorousFlowBrineCO2.C.
Referenced by thermophysicalProperties(), and totalMassFraction().
|
inherited |
Clears the contents of the FluidStateProperties data structure.
[out] | fsp | FluidStateProperties data structure with all data initialized to 0 |
Definition at line 39 of file PorousFlowFluidStateBase.C.
Referenced by PorousFlowWaterNCG::thermophysicalProperties(), PorousFlowFluidStateSingleComponent::thermophysicalProperties(), and thermophysicalProperties().
DualReal PorousFlowBrineCO2::enthalpyOfDissolution | ( | const DualReal & | temperature | ) | const |
Enthalpy of dissolution of CO2 in brine calculated using linear fit to model of Duan and Sun, An improved model calculating CO2 solubility in pure water and aqueous NaCl solutions from 273 to 533 K and from 0 to 2000 bar, Chemical geology, 193, 257–271 (2003).
In the region of interest, the more complicated model given in Eq. (8) of Duan and Sun is well approximated by a simple linear fit (R^2 = 0.9997).
Note: as the effect of salt mass fraction is small, it is not included in this function.
temperature | fluid temperature (K) |
Definition at line 1134 of file PorousFlowBrineCO2.C.
Referenced by liquidProperties().
DualReal PorousFlowBrineCO2::enthalpyOfDissolutionGas | ( | const DualReal & | temperature, |
const DualReal & | Xnacl | ||
) | const |
Enthalpy of dissolution of gas phase CO2 in brine calculated using Henry's constant From Himmelblau, Partial molal heats and entropies of solution for gases dissolved in water from the freezing to the near critical point, J.
Phys. Chem. 63 (1959). Correction due to salinity from Battistelli et al, A fluid property module for the TOUGH2 simulator for saline brines with non-condensible gas, Proc. Eighteenth Workshop on Geothermal Reservoir Engineering (1993).
temperature | fluid temperature (K) |
Xnacl | NaCl mass fraction (kg/kg) |
Definition at line 1103 of file PorousFlowBrineCO2.C.
DualReal PorousFlowBrineCO2::equilibriumConstantCO2 | ( | const DualReal & | temperature | ) | const |
Equilibrium constant for CO2 For temperatures 12C <= T <= 99C, uses Spycher, Pruess and Ennis-King (2003) For temperatures 109C <= T <= 300C, uses Spycher and Pruess (2010) For temperatures 99C < T < 109C, the value is calculated by smoothly interpolating the two formulations.
temperature | temperature (K) |
Definition at line 648 of file PorousFlowBrineCO2.C.
Referenced by funcABHighTemp(), and funcABLowTemp().
DualReal PorousFlowBrineCO2::equilibriumConstantH2O | ( | const DualReal & | temperature | ) | const |
Equilibrium constant for H2O For temperatures 12C <= T <= 99C, uses Spycher, Pruess and Ennis-King (2003) For temperatures 109C <= T <= 300C, uses Spycher and Pruess (2010) For temperatures 99C < T < 109C, the value is calculated by smoothly interpolating the two formulations.
temperature | temperature (K) |
Definition at line 621 of file PorousFlowBrineCO2.C.
Referenced by funcABHighTemp(), and funcABLowTemp().
void PorousFlowBrineCO2::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.
pressure | phase pressure (Pa) | |
temperature | phase temperature (K) | |
Xnacl | NaCl mass fraction (kg/kg) | |
[out] | Xco2 | mass fraction of CO2 in liquid (kg/kg) |
[out] | Yh2o | mass fraction of H2O in gas (kg/kg) |
Definition at line 376 of file PorousFlowBrineCO2.C.
Referenced by massFractions(), and totalMassFraction().
void PorousFlowBrineCO2::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.
In the low temperature regime (T <= 99C), the mole fractions are calculated directly, while in the elevated temperature regime (T >= 109C), they are calculated iteratively. In the intermediate regime (99C < T < 109C), a cubic polynomial is used to smoothly connect the low and elevated temperature regimes.
pressure | phase pressure (Pa) | |
temperature | phase temperature (K) | |
Xnacl | NaCl mass fraction (kg/kg) | |
[out] | xco2 | mole fraction of CO2 in liquid |
[out] | yh2o | mole fraction of H2O in gas |
Definition at line 674 of file PorousFlowBrineCO2.C.
Referenced by equilibriumMassFractions().
void PorousFlowBrineCO2::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 <= 99C).
pressure | phase pressure (Pa) | |
temperature | phase temperature (K) | |
Xnacl | NaCl mass fraction (kg/kg) | |
[out] | xco2 | mole fraction of CO2 in liquid |
[out] | yh2o | mass fraction of mole in gas |
Definition at line 792 of file PorousFlowBrineCO2.C.
Referenced by equilibriumMoleFractions().
|
inlinefinalinherited |
Definition at line 61 of file PorousFlowFluidStateBase.h.
|
inlinefinalinherited |
Definition at line 62 of file PorousFlowFluidStateBase.h.
|
overridevirtual |
Name of FluidState.
Implements PorousFlowFluidStateBase.
Definition at line 86 of file PorousFlowBrineCO2.C.
DualReal PorousFlowBrineCO2::fugacityCoefficientCO2HighTemp | ( | const DualReal & | pressure, |
const DualReal & | temperature, | ||
const DualReal & | co2_density, | ||
const DualReal & | xco2, | ||
const DualReal & | yh2o | ||
) | const |
Definition at line 505 of file PorousFlowBrineCO2.C.
Referenced by fugacityCoefficientsHighTemp().
DualReal PorousFlowBrineCO2::fugacityCoefficientH2OHighTemp | ( | const DualReal & | pressure, |
const DualReal & | temperature, | ||
const DualReal & | co2_density, | ||
const DualReal & | xco2, | ||
const DualReal & | yh2o | ||
) | const |
Definition at line 459 of file PorousFlowBrineCO2.C.
Referenced by fugacityCoefficientsHighTemp().
void PorousFlowBrineCO2::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).
Eq. (A8) from Spycher & Pruess (2010)
pressure | gas pressure (Pa) | |
temperature | temperature (K) | |
co2_density | CO2 density (kg/m^3) | |
xco2 | mole fraction of CO2 in liquid phase (-) | |
yh2o | mole fraction of H2O in gas phase (-) | |
[out] | fco2 | fugacity coefficient for CO2 |
[out] | fh2o | fugacity coefficient for H2O |
Definition at line 441 of file PorousFlowBrineCO2.C.
Referenced by funcABHighTemp().
void PorousFlowBrineCO2::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.
(B7) from Spycher, Pruess and Ennis-King (2003)
pressure | gas pressure (Pa) | |
temperature | temperature (K) | |
co2_density | CO2 density (kg/m^3) | |
[out] | fco2 | fugacity coefficient for CO2 |
[out] | fh2o | fugacity coefficient for H2O |
Definition at line 401 of file PorousFlowBrineCO2.C.
Referenced by funcABLowTemp().
|
protected |
The function A (Eq.
(11) of Spycher, Pruess and Ennis-King (2003) for T <= 100C, and Eqs. (10) and (17) of Spycher and Pruess (2010) for T > 100C)
pressure | gas pressure (Pa) | |
temperature | fluid temperature (K) | |
Xnacl | NaCl mass fraction (kg/kg) | |
co2_density | CO2 density (kg/m^3) | |
xco2 | mole fraction of CO2 in liquid phase (-) | |
yh2o | mole fraction of H2O in gas phase (-) | |
[out] | A | the function A |
[out] | B | the function B |
Definition at line 867 of file PorousFlowBrineCO2.C.
Referenced by equilibriumMoleFractions(), funcABHighTemp(), and solveEquilibriumMoleFractionHighTemp().
|
protected |
Definition at line 925 of file PorousFlowBrineCO2.C.
|
protected |
Definition at line 833 of file PorousFlowBrineCO2.C.
Referenced by equilibriumMoleFractionsLowTemp().
|
inlineinherited |
The index of the gas fluid component.
Definition at line 98 of file PorousFlowFluidStateBase.h.
|
inlineinherited |
The index of the gas phase.
Definition at line 86 of file PorousFlowFluidStateBase.h.
void PorousFlowBrineCO2::gasProperties | ( | const DualReal & | pressure, |
const DualReal & | temperature, | ||
std::vector< FluidStateProperties > & | fsp | ||
) | const |
Thermophysical properties of the gaseous state.
pressure | gas pressure (Pa) | |
temperature | temperature (K) | |
[out] | FluidStateProperties | data structure |
Definition at line 246 of file PorousFlowBrineCO2.C.
Referenced by thermophysicalProperties(), totalMassFraction(), and twoPhaseProperties().
|
inlineinherited |
Definition at line 70 of file PorousFlowFluidStateMultiComponentBase.h.
|
inlineinherited |
Definition at line 71 of file PorousFlowFluidStateMultiComponentBase.h.
|
inlineinherited |
Definition at line 73 of file PorousFlowFluidStateMultiComponentBase.h.
|
inlineinherited |
Definition at line 72 of file PorousFlowFluidStateMultiComponentBase.h.
DualReal PorousFlowBrineCO2::henryConstant | ( | const DualReal & | temperature, |
const DualReal & | Xnacl | ||
) | const |
Henry's constant of dissolution of gas phase CO2 in brine.
From Battistelli et al, A fluid property module for the TOUGH2 simulator for saline brines with non-condensible gas, Proc. Eighteenth Workshop on Geothermal Reservoir Engineering (1993)
temperature | fluid temperature (K) |
Xnacl | NaCl mass fraction (kg/kg) |
Definition at line 1080 of file PorousFlowBrineCO2.C.
Referenced by enthalpyOfDissolutionGas().
|
inlinefinalinherited |
Definition at line 60 of file PorousFlowFluidStateBase.h.
void PorousFlowBrineCO2::liquidProperties | ( | const DualReal & | pressure, |
const DualReal & | temperature, | ||
const DualReal & | Xnacl, | ||
std::vector< FluidStateProperties > & | fsp | ||
) | const |
Thermophysical properties of the liquid state.
pressure | liquid pressure (Pa) | |
temperature | temperature (K) | |
Xnacl | NaCl mass fraction (kg/kg) | |
[out] | FluidStateProperties | data structure |
Definition at line 269 of file PorousFlowBrineCO2.C.
Referenced by thermophysicalProperties(), totalMassFraction(), and twoPhaseProperties().
void PorousFlowBrineCO2::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.
Values depend on the phase state (liquid, gas or two phase)
pressure | phase pressure (Pa) | |
temperature | phase temperature (K) | |
Xnacl | NaCl mass fraction (kg/kg) | |
Z | total mass fraction of CO2 component | |
[out] | PhaseStateEnum | current phase state |
[out] | FluidStateProperties | data structure |
Definition at line 161 of file PorousFlowBrineCO2.C.
Referenced by thermophysicalProperties().
|
inlineinherited |
The maximum number of components in this model.
Definition at line 74 of file PorousFlowFluidStateBase.h.
|
inlineinherited |
The maximum number of phases in this model.
Definition at line 68 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowFluidState::PorousFlowFluidState(), and PorousFlowFluidStateSingleComponent::PorousFlowFluidStateSingleComponent().
DualReal PorousFlowBrineCO2::partialDensityCO2 | ( | const DualReal & | temperature | ) | const |
Partial density of dissolved CO2 From Garcia, Density of aqueous solutions of CO2, LBNL-49023 (2001)
temperature | fluid temperature (K) |
Definition at line 1026 of file PorousFlowBrineCO2.C.
Referenced by liquidProperties(), and saturation().
|
inherited |
Determines the phase state gven the total mass fraction and equilibrium mass fractions.
Zi | total mass fraction | |
Xi | equilibrium mass fraction in liquid | |
Yi | equilibrium mass fraction in gas | |
[out] | phase_state | the phase state (gas, liquid, two phase) |
Definition at line 28 of file PorousFlowFluidStateMultiComponentBase.C.
Referenced by PorousFlowWaterNCG::massFractions(), and massFractions().
|
inherited |
Rachford-Rice equation for vapor fraction.
Can be solved analytically for two components in two phases, but must be solved iteratively using a root finding algorithm for more components. This equation has the nice property that it is monotonic in the interval [0,1], so that only a small number of iterations are typically required to find the root.
The Rachford-Rice equation can also be used to check whether the phase state is two phase, single phase gas, or single phase liquid. Evaluate f(v), the Rachford-Rice equation evaluated at the vapor mass fraction.
If f(0) < 0, then the mixture is below the bubble point, and only a single phase liquid can exist
If f(1) > 0, then the mixture is above the dew point, and only a single phase gas exists.
If f(0) >= 0 and f(1) <= 0, the mixture is between the bubble and dew points, and both gas and liquid phases exist.
vf | vapor fraction |
Zi | mass fractions |
Ki | equilibrium constants |
Definition at line 27 of file PorousFlowFluidStateFlash.C.
Referenced by PorousFlowFluidStateFlash::vaporMassFraction().
|
inherited |
Derivative of Rachford-Rice equation wrt vapor fraction.
Has the nice property that it is strictly negative in the interval [0,1]
vf | vapor fraction |
Zi | mass fractions |
Ki | equilibrium constants |
Definition at line 53 of file PorousFlowFluidStateFlash.C.
Referenced by PorousFlowFluidStateFlash::vaporMassFraction().
|
inline |
The index of the salt component.
Definition at line 316 of file PorousFlowBrineCO2.h.
DualReal PorousFlowBrineCO2::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.
pressure | gas pressure (Pa) |
temperature | phase temperature (K) |
Xnacl | NaCl mass fraction (kg/kg) |
Z | total mass fraction of CO2 component |
FluidStateProperties | data structure |
Definition at line 311 of file PorousFlowBrineCO2.C.
Referenced by totalMassFraction(), and twoPhaseProperties().
|
protected |
Cubic function to smoothly interpolate between the low temperature and elevated temperature models for 99C < T < 109C.
temperature | temperature (K) | |
f0 | function value at T = 372K (99C) | |
df0 | derivative of function at T = 372K (99C) | |
f1 | function value at T = 382K (109C) | |
df1 | derivative of function at T = 382K (109C) | |
[out] | value | value at the given temperature |
[out] | deriv | derivative at the given temperature |
Definition at line 1144 of file PorousFlowBrineCO2.C.
Referenced by equilibriumMoleFractions().
void PorousFlowBrineCO2::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)
pressure | gas pressure (Pa) | |
temperature | fluid temperature (K) | |
Xnacl | NaCl mass fraction (kg/kg) | |
co2_density | CO2 density (kg/m^3) | |
[out] | xco2 | mole fraction of CO2 in liquid phase (-) |
[out] | yh2o | mole fraction of H2O in gas phase (-) |
Definition at line 960 of file PorousFlowBrineCO2.C.
Referenced by equilibriumMoleFractions().
|
overridevirtual |
Determines the complete thermophysical state of the system for a given set of primary variables.
pressure | gas phase pressure (Pa) | |
temperature | fluid temperature (K) | |
Xnacl | mass fraction of NaCl | |
Z | total mass fraction of fluid component | |
qp | quadpoint index | |
[out] | fsp | the FluidStateProperties struct containing all properties |
Implements PorousFlowFluidStateMultiComponentBase.
Definition at line 92 of file PorousFlowBrineCO2.C.
|
overridevirtual |
Total mass fraction of fluid component summed over all phases in the two-phase state for a specified gas saturation.
pressure | gas pressure (Pa) |
temperature | temperature (K) |
Xnacl | NaCl mass fraction (kg/kg) |
saturation | gas saturation (-) |
qp | quadpoint index |
Implements PorousFlowFluidStateMultiComponentBase.
Definition at line 1037 of file PorousFlowBrineCO2.C.
void PorousFlowBrineCO2::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.
pressure | gas pressure (Pa) | |
temperature | phase temperature (K) | |
Xnacl | NaCl mass fraction (kg/kg) | |
Z | total mass fraction of NCG component | |
qp | quadpoint for capillary presssure | |
[out] | FluidStateProperties | data structure |
Definition at line 355 of file PorousFlowBrineCO2.C.
Referenced by thermophysicalProperties().
|
inherited |
Definition at line 87 of file PorousFlowFluidStateFlash.C.
|
inherited |
Solves Rachford-Rice equation to provide vapor mass fraction.
For two components, the analytical solution is used, while for cases with more than two components, a Newton-Raphson iterative solution is calculated.
Zi | total mass fraction(s) |
Ki | equilibrium constant(s) |
Definition at line 81 of file PorousFlowFluidStateFlash.C.
Referenced by PorousFlowWaterNCG::saturation(), saturation(), and PorousFlowFluidStateFlash::vaporMassFraction().
|
inherited |
Definition at line 95 of file PorousFlowFluidStateFlash.C.
|
protectedinherited |
Fluid component number of the aqueous component.
Definition at line 127 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowFluidStateBase::aqueousComponentIndex(), PorousFlowWaterNCG::massFractions(), massFractions(), PorousFlowBrineCO2(), PorousFlowWaterNCG::PorousFlowWaterNCG(), PorousFlowWaterVapor::PorousFlowWaterVapor(), PorousFlowWaterNCG::saturation(), saturation(), PorousFlowWaterNCG::totalMassFraction(), and totalMassFraction().
|
protectedinherited |
Phase number of the aqueous phase.
Definition at line 123 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowFluidStateBase::aqueousPhaseIndex(), PorousFlowWaterNCG::gasDensity(), PorousFlowWaterNCG::gasProperties(), PorousFlowWaterNCG::liquidProperties(), liquidProperties(), PorousFlowWaterNCG::massFractions(), massFractions(), PorousFlowBrineCO2(), PorousFlowWaterNCG::PorousFlowWaterNCG(), PorousFlowWaterVapor::PorousFlowWaterVapor(), PorousFlowWaterVapor::thermophysicalProperties(), PorousFlowWaterNCG::thermophysicalProperties(), thermophysicalProperties(), PorousFlowWaterNCG::totalMassFraction(), and totalMassFraction().
|
protected |
Fluid properties UserObject for water.
Definition at line 457 of file PorousFlowBrineCO2.h.
Referenced by henryConstant(), liquidProperties(), PorousFlowBrineCO2(), saturation(), and solveEquilibriumMoleFractionHighTemp().
|
protected |
Fluid properties UserObject for the CO2.
Definition at line 459 of file PorousFlowBrineCO2.h.
Referenced by equilibriumMoleFractions(), equilibriumMoleFractionsLowTemp(), gasProperties(), liquidProperties(), PorousFlowBrineCO2(), and saturation().
|
protected |
Henry's coefficeients for CO2.
Definition at line 478 of file PorousFlowBrineCO2.h.
Referenced by henryConstant().
|
protectedinherited |
Empty FluidStateProperties object.
Definition at line 139 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowFluidStateBase::clearFluidStateProperties(), PorousFlowBrineCO2(), PorousFlowWaterNCG::PorousFlowWaterNCG(), and PorousFlowWaterVapor::PorousFlowWaterVapor().
|
protectedinherited |
Fluid component number of the gas phase.
Definition at line 129 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowFluidStateBase::gasComponentIndex(), PorousFlowWaterNCG::gasDensity(), PorousFlowWaterNCG::gasProperties(), PorousFlowWaterNCG::liquidProperties(), liquidProperties(), PorousFlowWaterNCG::massFractions(), massFractions(), PorousFlowBrineCO2(), PorousFlowWaterNCG::PorousFlowWaterNCG(), PorousFlowWaterVapor::PorousFlowWaterVapor(), PorousFlowWaterNCG::saturation(), saturation(), PorousFlowWaterNCG::totalMassFraction(), and totalMassFraction().
|
protectedinherited |
Phase number of the gas phase.
Definition at line 125 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowWaterNCG::gasDensity(), PorousFlowFluidStateBase::gasPhaseIndex(), PorousFlowWaterNCG::gasProperties(), gasProperties(), PorousFlowWaterNCG::massFractions(), massFractions(), PorousFlowBrineCO2(), PorousFlowWaterNCG::PorousFlowWaterNCG(), PorousFlowWaterVapor::PorousFlowWaterVapor(), PorousFlowWaterNCG::saturation(), saturation(), PorousFlowWaterVapor::thermophysicalProperties(), PorousFlowWaterNCG::thermophysicalProperties(), thermophysicalProperties(), PorousFlowWaterNCG::totalMassFraction(), totalMassFraction(), PorousFlowWaterNCG::twoPhaseProperties(), and twoPhaseProperties().
|
protected |
Inverse of molar mass of H2O (mol/kg)
Definition at line 463 of file PorousFlowBrineCO2.h.
Referenced by activityCoefficientHighTemp(), equilibriumMassFractions(), equilibriumMoleFractionsLowTemp(), funcABHighTemp(), funcABLowTemp(), and solveEquilibriumMoleFractionHighTemp().
|
protected |
Molar mass of CO2 (kg/mol)
Definition at line 465 of file PorousFlowBrineCO2.h.
Referenced by enthalpyOfDissolution(), enthalpyOfDissolutionGas(), equilibriumMassFractions(), fugacityCoefficientCO2HighTemp(), fugacityCoefficientH2OHighTemp(), fugacityCoefficientsLowTemp(), and partialDensityCO2().
|
protected |
Molar mass of water (kg/mol)
Definition at line 461 of file PorousFlowBrineCO2.h.
Referenced by equilibriumMassFractions().
|
protected |
Molar mass of NaCL.
Definition at line 467 of file PorousFlowBrineCO2.h.
Referenced by activityCoefficient(), activityCoefficientHighTemp(), equilibriumMassFractions(), equilibriumMoleFractionsLowTemp(), henryConstant(), and solveEquilibriumMoleFractionHighTemp().
|
protectedinherited |
Maximum number of iterations for the Newton-Raphson routine.
Definition at line 80 of file PorousFlowFluidStateFlash.h.
Referenced by PorousFlowFluidStateFlash::vaporMassFraction().
|
protectedinherited |
Tolerance for Newton-Raphson iterations.
Definition at line 82 of file PorousFlowFluidStateFlash.h.
Referenced by PorousFlowFluidStateFlash::vaporMassFraction().
|
protectedinherited |
Number of components.
Definition at line 121 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowFluidStateBase::numComponents(), PorousFlowBrineCO2(), PorousFlowWaterNCG::PorousFlowWaterNCG(), PorousFlowWaterVapor::PorousFlowWaterVapor(), PorousFlowWaterNCG::totalMassFraction(), and totalMassFraction().
|
protectedinherited |
Number of phases.
Definition at line 119 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowFluidStateBase::numPhases(), PorousFlowBrineCO2(), PorousFlowWaterNCG::PorousFlowWaterNCG(), PorousFlowWaterVapor::PorousFlowWaterVapor(), PorousFlowWaterNCG::totalMassFraction(), and totalMassFraction().
|
protectedinherited |
Capillary pressure UserObject.
Definition at line 137 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowWaterVapor::thermophysicalProperties(), PorousFlowWaterNCG::thermophysicalProperties(), thermophysicalProperties(), PorousFlowWaterNCG::totalMassFraction(), totalMassFraction(), PorousFlowWaterNCG::twoPhaseProperties(), and twoPhaseProperties().
|
protectedinherited |
Index of derivative wrt pressure.
Definition at line 73 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by equilibriumMoleFractions(), PorousFlowFluidStateMultiComponentBase::getPressureIndex(), PorousFlowWaterNCG::massFractions(), massFractions(), PorousFlowWaterNCG::thermophysicalProperties(), and thermophysicalProperties().
|
protectedinherited |
Universal gas constant (J/mol/K)
Definition at line 133 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowWaterNCG::enthalpyOfDissolution(), and enthalpyOfDissolutionGas().
|
protected |
Molar gas constant in bar cm^3 /(K mol)
Definition at line 469 of file PorousFlowBrineCO2.h.
Referenced by fugacityCoefficientCO2HighTemp(), fugacityCoefficientH2OHighTemp(), fugacityCoefficientsLowTemp(), funcABHighTemp(), and funcABLowTemp().
|
protected |
Salt component index.
Definition at line 455 of file PorousFlowBrineCO2.h.
Referenced by massFractions(), PorousFlowBrineCO2(), and saltComponentIndex().
|
protectedinherited |
Conversion from C to K.
Definition at line 135 of file PorousFlowFluidStateBase.h.
Referenced by equilibriumConstantCO2(), equilibriumConstantH2O(), funcABHighTemp(), henryConstant(), and partialDensityCO2().
|
protectedinherited |
Index of derivative wrt temperature.
Definition at line 81 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by PorousFlowWaterNCG::enthalpyOfDissolution(), enthalpyOfDissolutionGas(), equilibriumMoleFractions(), PorousFlowFluidStateMultiComponentBase::getTemperatureIndex(), PorousFlowWaterNCG::massFractions(), massFractions(), PorousFlowWaterNCG::thermophysicalProperties(), and thermophysicalProperties().
|
protected |
Temperature below which the Spycher, Pruess & Ennis-King (2003) model is used (K)
Definition at line 471 of file PorousFlowBrineCO2.h.
Referenced by equilibriumMoleFractions(), and smoothCubicInterpolation().
|
protected |
Temperature above which the Spycher & Pruess (2010) model is used (K)
Definition at line 473 of file PorousFlowBrineCO2.h.
Referenced by equilibriumMoleFractions(), and smoothCubicInterpolation().
|
protectedinherited |
Index of derivative wrt salt mass fraction X.
Definition at line 83 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by equilibriumMoleFractions(), PorousFlowFluidStateMultiComponentBase::getXIndex(), massFractions(), and thermophysicalProperties().
|
protectedinherited |
Index of derivative wrt total mass fraction Z.
Definition at line 79 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by PorousFlowFluidStateMultiComponentBase::getZIndex(), PorousFlowWaterNCG::massFractions(), massFractions(), PorousFlowWaterNCG::thermophysicalProperties(), and thermophysicalProperties().
|
protected |
Minimum Z - below this value all CO2 will be dissolved.
This reduces the computational burden when small values of Z are present
Definition at line 476 of file PorousFlowBrineCO2.h.
Referenced by massFractions().