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 Types | |
typedef DataFileName | DataFileParameterType |
Public Member Functions | |
PorousFlowBrineCO2 (const InputParameters ¶meters) | |
virtual std::string | fluidStateName () const override |
Name of FluidState. More... | |
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 | thermophysicalProperties (const ADReal &pressure, const ADReal &temperature, const ADReal &Xnacl, const ADReal &Z, unsigned int qp, std::vector< FluidStateProperties > &fsp) const override |
void | equilibriumMoleFractions (const ADReal &pressure, const ADReal &temperature, const ADReal &Xnacl, ADReal &xco2, ADReal &yh2o) const |
Mole fractions of CO2 in brine and water vapor in CO2 at equilibrium. More... | |
void | equilibriumMassFractions (const ADReal &pressure, const ADReal &temperature, const ADReal &Xnacl, ADReal &Xco2, ADReal &Yh2o) const |
Mass fractions of CO2 in brine and water vapor in CO2 at equilibrium. More... | |
void | massFractions (const ADReal &pressure, const ADReal &temperature, const ADReal &Xnacl, const ADReal &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 ADReal &pressure, const ADReal &temperature, std::vector< FluidStateProperties > &fsp) const |
Thermophysical properties of the gaseous state. More... | |
void | liquidProperties (const ADReal &pressure, const ADReal &temperature, const ADReal &Xnacl, std::vector< FluidStateProperties > &fsp) const |
Thermophysical properties of the liquid state. More... | |
ADReal | saturation (const ADReal &pressure, const ADReal &temperature, const ADReal &Xnacl, const ADReal &Z, std::vector< FluidStateProperties > &fsp) const |
Gas saturation in the two-phase region. More... | |
void | twoPhaseProperties (const ADReal &pressure, const ADReal &temperature, const ADReal &Xnacl, const ADReal &Z, unsigned int qp, std::vector< FluidStateProperties > &fsp) const |
Gas and liquid properties in the two-phase region. More... | |
void | fugacityCoefficientsLowTemp (const ADReal &pressure, const ADReal &temperature, const ADReal &co2_density, ADReal &fco2, ADReal &fh2o) const |
Fugacity coefficients for H2O and CO2 for T <= 100C Eq. More... | |
ADReal | activityCoefficientH2O (const ADReal &temperature, const ADReal &xco2) const |
Activity coefficient of H2O Eq. More... | |
ADReal | activityCoefficientCO2 (const ADReal &temperature, const ADReal &xco2) const |
Activity coefficient of CO2 Eq. More... | |
ADReal | activityCoefficient (const ADReal &pressure, const ADReal &temperature, const ADReal &Xnacl) const |
Activity coefficient for CO2 in brine. More... | |
ADReal | activityCoefficientHighTemp (const ADReal &temperature, const ADReal &Xnacl) const |
Activity coefficient for CO2 in brine used in the elevated temperature formulation. More... | |
ADReal | equilibriumConstantH2O (const ADReal &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... | |
ADReal | equilibriumConstantCO2 (const ADReal &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... | |
ADReal | partialDensityCO2 (const ADReal &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... | |
ADReal | henryConstant (const ADReal &temperature, const ADReal &Xnacl) const |
Henry's constant of dissolution of gas phase CO2 in brine. More... | |
ADReal | enthalpyOfDissolutionGas (const ADReal &temperature, const ADReal &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... | |
ADReal | enthalpyOfDissolution (const ADReal &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 ADReal &pressure, const ADReal &temperature, const ADReal &Xnacl, ADReal &xco2, ADReal &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... | |
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 | 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... | |
ADReal | vaporMassFraction (const ADReal &Z0, const ADReal &K0, const ADReal &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... | |
void | clearFluidStateProperties (std::vector< FluidStateProperties > &fsp) const |
Clears the contents of the FluidStateProperties data structure. More... | |
SubProblem & | getSubProblem () const |
bool | shouldDuplicateInitialExecution () const |
virtual Real | spatialValue (const Point &) const |
virtual const std::vector< Point > | spatialPoints () const |
void | gatherSum (T &value) |
void | gatherMax (T &value) |
void | gatherMin (T &value) |
void | gatherProxyValueMax (T1 &proxy, T2 &value) |
void | gatherProxyValueMin (T1 &proxy, T2 &value) |
void | setPrimaryThreadCopy (UserObject *primary) |
UserObject * | primaryThreadCopy () |
std::set< UserObjectName > | getDependObjects () const |
virtual bool | needThreadedCopy () const |
const std::set< std::string > & | getRequestedItems () override |
const std::set< std::string > & | getSuppliedItems () override |
unsigned int | systemNumber () const |
virtual bool | enabled () const |
std::shared_ptr< MooseObject > | getSharedPtr () |
std::shared_ptr< const MooseObject > | getSharedPtr () const |
MooseApp & | getMooseApp () const |
const std::string & | type () const |
virtual const std::string & | name () const |
std::string | typeAndName () const |
std::string | errorPrefix (const std::string &error_type) const |
void | callMooseError (std::string msg, const bool with_prefix) const |
MooseObjectParameterName | uniqueParameterName (const std::string ¶meter_name) const |
const InputParameters & | parameters () const |
MooseObjectName | uniqueName () const |
const T & | getParam (const std::string &name) const |
std::vector< std::pair< T1, T2 > > | getParam (const std::string ¶m1, const std::string ¶m2) const |
const T * | queryParam (const std::string &name) const |
const T & | getRenamedParam (const std::string &old_name, const std::string &new_name) const |
T | getCheckedPointerParam (const std::string &name, const std::string &error_string="") const |
bool | isParamValid (const std::string &name) const |
bool | isParamSetByUser (const std::string &nm) const |
void | paramError (const std::string ¶m, Args... args) const |
void | paramWarning (const std::string ¶m, Args... args) const |
void | paramInfo (const std::string ¶m, Args... args) const |
void | connectControllableParams (const std::string ¶meter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const |
void | mooseError (Args &&... args) const |
void | mooseErrorNonPrefixed (Args &&... args) const |
void | mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const |
void | mooseWarning (Args &&... args) const |
void | mooseWarningNonPrefixed (Args &&... args) const |
void | mooseDeprecated (Args &&... args) const |
void | mooseInfo (Args &&... args) const |
std::string | getDataFileName (const std::string ¶m) const |
std::string | getDataFileNameByName (const std::string &relative_path) const |
std::string | getDataFilePath (const std::string &relative_path) const |
virtual void | initialSetup () |
virtual void | timestepSetup () |
virtual void | jacobianSetup () |
virtual void | residualSetup () |
virtual void | customSetup (const ExecFlagType &) |
const ExecFlagEnum & | getExecuteOnEnum () const |
UserObjectName | getUserObjectName (const std::string ¶m_name) const |
const T & | getUserObject (const std::string ¶m_name, bool is_dependency=true) const |
const T & | getUserObjectByName (const UserObjectName &object_name, bool is_dependency=true) const |
const UserObject & | getUserObjectBase (const std::string ¶m_name, bool is_dependency=true) const |
const UserObject & | getUserObjectBaseByName (const UserObjectName &object_name, bool is_dependency=true) const |
const std::vector< MooseVariableScalar *> & | getCoupledMooseScalarVars () |
const std::set< TagID > & | getScalarVariableCoupleableVectorTags () const |
const std::set< TagID > & | getScalarVariableCoupleableMatrixTags () const |
const GenericMaterialProperty< T, is_ad > & | getGenericMaterialProperty (const std::string &name, MaterialData &material_data, const unsigned int state=0) |
const GenericMaterialProperty< T, is_ad > & | getGenericMaterialProperty (const std::string &name, const unsigned int state=0) |
const GenericMaterialProperty< T, is_ad > & | getGenericMaterialProperty (const std::string &name, const unsigned int state=0) |
const MaterialProperty< T > & | getMaterialProperty (const std::string &name, MaterialData &material_data, const unsigned int state=0) |
const MaterialProperty< T > & | getMaterialProperty (const std::string &name, const unsigned int state=0) |
const MaterialProperty< T > & | getMaterialProperty (const std::string &name, const unsigned int state=0) |
const ADMaterialProperty< T > & | getADMaterialProperty (const std::string &name, MaterialData &material_data) |
const ADMaterialProperty< T > & | getADMaterialProperty (const std::string &name) |
const ADMaterialProperty< T > & | getADMaterialProperty (const std::string &name) |
const MaterialProperty< T > & | getMaterialPropertyOld (const std::string &name, MaterialData &material_data) |
const MaterialProperty< T > & | getMaterialPropertyOld (const std::string &name) |
const MaterialProperty< T > & | getMaterialPropertyOld (const std::string &name) |
const MaterialProperty< T > & | getMaterialPropertyOlder (const std::string &name, MaterialData &material_data) |
const MaterialProperty< T > & | getMaterialPropertyOlder (const std::string &name) |
const MaterialProperty< T > & | getMaterialPropertyOlder (const std::string &name) |
const GenericMaterialProperty< T, is_ad > & | getGenericMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data, const unsigned int state) |
const GenericMaterialProperty< T, is_ad > & | getGenericMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0) |
const GenericMaterialProperty< T, is_ad > & | getGenericMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0) |
const MaterialProperty< T > & | getMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data, const unsigned int state=0) |
const MaterialProperty< T > & | getMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0) |
const MaterialProperty< T > & | getMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0) |
const ADMaterialProperty< T > & | getADMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data) |
const ADMaterialProperty< T > & | getADMaterialPropertyByName (const MaterialPropertyName &name) |
const ADMaterialProperty< T > & | getADMaterialPropertyByName (const MaterialPropertyName &name) |
const MaterialProperty< T > & | getMaterialPropertyOldByName (const MaterialPropertyName &name, MaterialData &material_data) |
const MaterialProperty< T > & | getMaterialPropertyOldByName (const MaterialPropertyName &name) |
const MaterialProperty< T > & | getMaterialPropertyOldByName (const MaterialPropertyName &name) |
const MaterialProperty< T > & | getMaterialPropertyOlderByName (const MaterialPropertyName &name, MaterialData &material_data) |
const MaterialProperty< T > & | getMaterialPropertyOlderByName (const MaterialPropertyName &name) |
const MaterialProperty< T > & | getMaterialPropertyOlderByName (const MaterialPropertyName &name) |
std::pair< const MaterialProperty< T > *, std::set< SubdomainID > > | getBlockMaterialProperty (const MaterialPropertyName &name) |
const GenericMaterialProperty< T, is_ad > & | getGenericZeroMaterialProperty (const std::string &name) |
const GenericMaterialProperty< T, is_ad > & | getGenericZeroMaterialProperty () |
const GenericMaterialProperty< T, is_ad > & | getGenericZeroMaterialPropertyByName (const std::string &prop_name) |
const MaterialProperty< T > & | getZeroMaterialProperty (Ts... args) |
std::set< SubdomainID > | getMaterialPropertyBlocks (const std::string &name) |
std::vector< SubdomainName > | getMaterialPropertyBlockNames (const std::string &name) |
std::set< BoundaryID > | getMaterialPropertyBoundaryIDs (const std::string &name) |
std::vector< BoundaryName > | getMaterialPropertyBoundaryNames (const std::string &name) |
void | checkBlockAndBoundaryCompatibility (std::shared_ptr< MaterialBase > discrete) |
std::unordered_map< SubdomainID, std::vector< MaterialBase *> > | buildRequiredMaterials (bool allow_stateful=true) |
void | statefulPropertiesAllowed (bool) |
bool | getMaterialPropertyCalled () const |
virtual const std::unordered_set< unsigned int > & | getMatPropDependencies () const |
virtual void | resolveOptionalProperties () |
const GenericMaterialProperty< T, is_ad > & | getPossiblyConstantGenericMaterialPropertyByName (const MaterialPropertyName &prop_name, MaterialData &material_data, const unsigned int state) |
bool | isImplicit () |
Moose::StateArg | determineState () const |
virtual void | threadJoin (const UserObject &) override |
virtual void | threadJoin (const UserObject &) override |
virtual void | subdomainSetup () override |
virtual void | subdomainSetup () override |
bool | hasUserObject (const std::string ¶m_name) const |
bool | hasUserObject (const std::string ¶m_name) const |
bool | hasUserObject (const std::string ¶m_name) const |
bool | hasUserObject (const std::string ¶m_name) const |
bool | hasUserObjectByName (const UserObjectName &object_name) const |
bool | hasUserObjectByName (const UserObjectName &object_name) const |
bool | hasUserObjectByName (const UserObjectName &object_name) const |
bool | hasUserObjectByName (const UserObjectName &object_name) const |
const GenericOptionalMaterialProperty< T, is_ad > & | getGenericOptionalMaterialProperty (const std::string &name, const unsigned int state=0) |
const GenericOptionalMaterialProperty< T, is_ad > & | getGenericOptionalMaterialProperty (const std::string &name, const unsigned int state=0) |
const OptionalMaterialProperty< T > & | getOptionalMaterialProperty (const std::string &name, const unsigned int state=0) |
const OptionalMaterialProperty< T > & | getOptionalMaterialProperty (const std::string &name, const unsigned int state=0) |
const OptionalADMaterialProperty< T > & | getOptionalADMaterialProperty (const std::string &name) |
const OptionalADMaterialProperty< T > & | getOptionalADMaterialProperty (const std::string &name) |
const OptionalMaterialProperty< T > & | getOptionalMaterialPropertyOld (const std::string &name) |
const OptionalMaterialProperty< T > & | getOptionalMaterialPropertyOld (const std::string &name) |
const OptionalMaterialProperty< T > & | getOptionalMaterialPropertyOlder (const std::string &name) |
const OptionalMaterialProperty< T > & | getOptionalMaterialPropertyOlder (const std::string &name) |
MaterialBase & | getMaterial (const std::string &name) |
MaterialBase & | getMaterial (const std::string &name) |
MaterialBase & | getMaterialByName (const std::string &name, bool no_warn=false) |
MaterialBase & | getMaterialByName (const std::string &name, bool no_warn=false) |
bool | hasMaterialProperty (const std::string &name) |
bool | hasMaterialProperty (const std::string &name) |
bool | hasMaterialPropertyByName (const std::string &name) |
bool | hasMaterialPropertyByName (const std::string &name) |
bool | hasADMaterialProperty (const std::string &name) |
bool | hasADMaterialProperty (const std::string &name) |
bool | hasADMaterialPropertyByName (const std::string &name) |
bool | hasADMaterialPropertyByName (const std::string &name) |
bool | hasGenericMaterialProperty (const std::string &name) |
bool | hasGenericMaterialProperty (const std::string &name) |
bool | hasGenericMaterialPropertyByName (const std::string &name) |
bool | hasGenericMaterialPropertyByName (const std::string &name) |
const Function & | getFunction (const std::string &name) const |
const Function & | getFunctionByName (const FunctionName &name) const |
bool | hasFunction (const std::string ¶m_name) const |
bool | hasFunctionByName (const FunctionName &name) const |
bool | isDefaultPostprocessorValue (const std::string ¶m_name, const unsigned int index=0) const |
bool | hasPostprocessor (const std::string ¶m_name, const unsigned int index=0) const |
bool | hasPostprocessorByName (const PostprocessorName &name) const |
std::size_t | coupledPostprocessors (const std::string ¶m_name) const |
const PostprocessorName & | getPostprocessorName (const std::string ¶m_name, const unsigned int index=0) const |
const VectorPostprocessorValue & | getVectorPostprocessorValue (const std::string ¶m_name, const std::string &vector_name) const |
const VectorPostprocessorValue & | getVectorPostprocessorValue (const std::string ¶m_name, const std::string &vector_name, bool needs_broadcast) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueOld (const std::string ¶m_name, const std::string &vector_name) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueOld (const std::string ¶m_name, const std::string &vector_name, bool needs_broadcast) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const |
const ScatterVectorPostprocessorValue & | getScatterVectorPostprocessorValue (const std::string ¶m_name, const std::string &vector_name) const |
const ScatterVectorPostprocessorValue & | getScatterVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
const ScatterVectorPostprocessorValue & | getScatterVectorPostprocessorValueOld (const std::string ¶m_name, const std::string &vector_name) const |
const ScatterVectorPostprocessorValue & | getScatterVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
bool | hasVectorPostprocessor (const std::string ¶m_name, const std::string &vector_name) const |
bool | hasVectorPostprocessor (const std::string ¶m_name) const |
bool | hasVectorPostprocessorByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
bool | hasVectorPostprocessorByName (const VectorPostprocessorName &name) const |
const VectorPostprocessorName & | getVectorPostprocessorName (const std::string ¶m_name) const |
T & | getSampler (const std::string &name) |
Sampler & | getSampler (const std::string &name) |
T & | getSamplerByName (const SamplerName &name) |
Sampler & | getSamplerByName (const SamplerName &name) |
virtual void | meshChanged () |
virtual void | meshDisplaced () |
PerfGraph & | perfGraph () |
const PostprocessorValue & | getPostprocessorValue (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValue (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValueOld (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValueOld (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValueOlder (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValueOlder (const std::string ¶m_name, const unsigned int index=0) const |
virtual const PostprocessorValue & | getPostprocessorValueByName (const PostprocessorName &name) const |
virtual const PostprocessorValue & | getPostprocessorValueByName (const PostprocessorName &name) const |
const PostprocessorValue & | getPostprocessorValueOldByName (const PostprocessorName &name) const |
const PostprocessorValue & | getPostprocessorValueOldByName (const PostprocessorName &name) const |
const PostprocessorValue & | getPostprocessorValueOlderByName (const PostprocessorName &name) const |
const PostprocessorValue & | getPostprocessorValueOlderByName (const PostprocessorName &name) const |
bool | isVectorPostprocessorDistributed (const std::string ¶m_name) const |
bool | isVectorPostprocessorDistributed (const std::string ¶m_name) const |
bool | isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const |
bool | isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const |
const Distribution & | getDistribution (const std::string &name) const |
const T & | getDistribution (const std::string &name) const |
const Distribution & | getDistribution (const std::string &name) const |
const T & | getDistribution (const std::string &name) const |
const Distribution & | getDistributionByName (const DistributionName &name) const |
const T & | getDistributionByName (const std::string &name) const |
const Distribution & | getDistributionByName (const DistributionName &name) const |
const T & | getDistributionByName (const std::string &name) const |
const Parallel::Communicator & | comm () const |
processor_id_type | n_processors () const |
processor_id_type | processor_id () const |
void | fugacityCoefficientsHighTemp (const ADReal &pressure, const ADReal &temperature, const ADReal &co2_density, const ADReal &xco2, const ADReal &yh2o, ADReal &fco2, ADReal &fh2o) const |
Fugacity coefficients for H2O and CO2 at elevated temperatures (100C < T <= 300C). More... | |
ADReal | fugacityCoefficientH2OHighTemp (const ADReal &pressure, const ADReal &temperature, const ADReal &co2_density, const ADReal &xco2, const ADReal &yh2o) const |
ADReal | fugacityCoefficientCO2HighTemp (const ADReal &pressure, const ADReal &temperature, const ADReal &co2_density, const ADReal &xco2, const ADReal &yh2o) const |
Static Public Member Functions | |
static InputParameters | validParams () |
static void | sort (typename std::vector< T > &vector) |
static void | sortDFS (typename std::vector< T > &vector) |
static void | cyclicDependencyError (CyclicDependencyException< T2 > &e, const std::string &header) |
Public Attributes | |
const ConsoleStream | _console |
Static Public Attributes | |
static constexpr PropertyValue::id_type | default_property_id |
static constexpr PropertyValue::id_type | zero_property_id |
static constexpr auto | SYSTEM |
static constexpr auto | NAME |
Protected Member Functions | |
virtual 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... | |
virtual void | addPostprocessorDependencyHelper (const PostprocessorName &name) const override |
virtual void | addVectorPostprocessorDependencyHelper (const VectorPostprocessorName &name) const override |
virtual void | addUserObjectDependencyHelper (const UserObject &uo) const override |
void | addReporterDependencyHelper (const ReporterName &reporter_name) override |
const ReporterName & | getReporterName (const std::string ¶m_name) const |
T & | declareRestartableData (const std::string &data_name, Args &&... args) |
ManagedValue< T > | declareManagedRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args) |
const T & | getRestartableData (const std::string &data_name) const |
T & | declareRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args) |
T & | declareRecoverableData (const std::string &data_name, Args &&... args) |
T & | declareRestartableDataWithObjectName (const std::string &data_name, const std::string &object_name, Args &&... args) |
T & | declareRestartableDataWithObjectNameWithContext (const std::string &data_name, const std::string &object_name, void *context, Args &&... args) |
std::string | restartableName (const std::string &data_name) const |
const T & | getMeshProperty (const std::string &data_name, const std::string &prefix) |
const T & | getMeshProperty (const std::string &data_name) |
bool | hasMeshProperty (const std::string &data_name, const std::string &prefix) const |
bool | hasMeshProperty (const std::string &data_name, const std::string &prefix) const |
bool | hasMeshProperty (const std::string &data_name) const |
bool | hasMeshProperty (const std::string &data_name) const |
std::string | meshPropertyName (const std::string &data_name) const |
PerfID | registerTimedSection (const std::string §ion_name, const unsigned int level) const |
PerfID | registerTimedSection (const std::string §ion_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const |
std::string | timedSectionName (const std::string §ion_name) const |
bool | isCoupledScalar (const std::string &var_name, unsigned int i=0) const |
unsigned int | coupledScalarComponents (const std::string &var_name) const |
unsigned int | coupledScalar (const std::string &var_name, unsigned int comp=0) const |
libMesh::Order | coupledScalarOrder (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarValue (const std::string &var_name, unsigned int comp=0) const |
const ADVariableValue & | adCoupledScalarValue (const std::string &var_name, unsigned int comp=0) const |
const GenericVariableValue< is_ad > & | coupledGenericScalarValue (const std::string &var_name, unsigned int comp=0) const |
const GenericVariableValue< false > & | coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const |
const GenericVariableValue< true > & | coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const |
const VariableValue & | coupledVectorTagScalarValue (const std::string &var_name, TagID tag, unsigned int comp=0) const |
const VariableValue & | coupledMatrixTagScalarValue (const std::string &var_name, TagID tag, unsigned int comp=0) const |
const VariableValue & | coupledScalarValueOld (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarValueOlder (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDot (const std::string &var_name, unsigned int comp=0) const |
const ADVariableValue & | adCoupledScalarDot (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotDot (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotOld (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotDotOld (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotDu (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotDotDu (const std::string &var_name, unsigned int comp=0) const |
const MooseVariableScalar * | getScalarVar (const std::string &var_name, unsigned int comp) const |
virtual void | checkMaterialProperty (const std::string &name, const unsigned int state) |
void | markMatPropRequested (const std::string &) |
MaterialPropertyName | getMaterialPropertyName (const std::string &name) const |
void | checkExecutionStage () |
const T & | getReporterValue (const std::string ¶m_name, const std::size_t time_index=0) |
const T & | getReporterValue (const std::string ¶m_name, ReporterMode mode, const std::size_t time_index=0) |
const T & | getReporterValue (const std::string ¶m_name, const std::size_t time_index=0) |
const T & | getReporterValue (const std::string ¶m_name, ReporterMode mode, const std::size_t time_index=0) |
const T & | getReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0) |
const T & | getReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0) |
const T & | getReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0) |
const T & | getReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0) |
bool | hasReporterValue (const std::string ¶m_name) const |
bool | hasReporterValue (const std::string ¶m_name) const |
bool | hasReporterValue (const std::string ¶m_name) const |
bool | hasReporterValue (const std::string ¶m_name) const |
bool | hasReporterValueByName (const ReporterName &reporter_name) const |
bool | hasReporterValueByName (const ReporterName &reporter_name) const |
bool | hasReporterValueByName (const ReporterName &reporter_name) const |
bool | hasReporterValueByName (const ReporterName &reporter_name) const |
const GenericMaterialProperty< T, is_ad > * | defaultGenericMaterialProperty (const std::string &name) |
const GenericMaterialProperty< T, is_ad > * | defaultGenericMaterialProperty (const std::string &name) |
const MaterialProperty< T > * | defaultMaterialProperty (const std::string &name) |
const MaterialProperty< T > * | defaultMaterialProperty (const std::string &name) |
const ADMaterialProperty< T > * | defaultADMaterialProperty (const std::string &name) |
const ADMaterialProperty< T > * | defaultADMaterialProperty (const std::string &name) |
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 ADReal &pressure, const ADReal &temperature, const ADReal &co2_density, ADReal &A, ADReal &B) const |
Static Protected Member Functions | |
static std::string | meshPropertyName (const std::string &data_name, const std::string &prefix) |
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 | _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 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 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... | |
SubProblem & | _subproblem |
FEProblemBase & | _fe_problem |
SystemBase & | _sys |
const THREAD_ID | _tid |
Assembly & | _assembly |
const Moose::CoordinateSystemType & | _coord_sys |
const bool | _duplicate_initial_execution |
std::set< std::string > | _depend_uo |
const bool & | _enabled |
MooseApp & | _app |
const std::string | _type |
const std::string | _name |
const InputParameters & | _pars |
Factory & | _factory |
ActionFactory & | _action_factory |
const ExecFlagEnum & | _execute_enum |
const ExecFlagType & | _current_execute_flag |
MooseApp & | _restartable_app |
const std::string | _restartable_system_name |
const THREAD_ID | _restartable_tid |
const bool | _restartable_read_only |
FEProblemBase & | _mci_feproblem |
FEProblemBase & | _mdi_feproblem |
MooseApp & | _pg_moose_app |
const std::string | _prefix |
FEProblemBase & | _sc_fe_problem |
const THREAD_ID | _sc_tid |
const Real & | _real_zero |
const VariableValue & | _scalar_zero |
const Point & | _point_zero |
const InputParameters & | _mi_params |
const std::string | _mi_name |
const MooseObjectName | _mi_moose_object_name |
FEProblemBase & | _mi_feproblem |
SubProblem & | _mi_subproblem |
const THREAD_ID | _mi_tid |
const Moose::MaterialDataType | _material_data_type |
MaterialData & | _material_data |
bool | _stateful_allowed |
bool | _get_material_property_called |
std::vector< std::unique_ptr< PropertyValue > > | _default_properties |
std::unordered_set< unsigned int > | _material_property_dependencies |
const MaterialPropertyName | _get_suffix |
const bool | _use_interpolated_state |
const InputParameters & | _ti_params |
FEProblemBase & | _ti_feproblem |
bool | _is_implicit |
Real & | _t |
const Real & | _t_old |
int & | _t_step |
Real & | _dt |
Real & | _dt_old |
bool | _is_transient |
const Parallel::Communicator & | _communicator |
Static Protected Attributes | |
static const std::string | _interpolated_old |
static const std::string | _interpolated_older |
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 47 of file PorousFlowBrineCO2.h.
PorousFlowBrineCO2::PorousFlowBrineCO2 | ( | const InputParameters & | parameters | ) |
Definition at line 29 of file PorousFlowBrineCO2.C.
ADReal PorousFlowBrineCO2::activityCoefficient | ( | const ADReal & | pressure, |
const ADReal & | temperature, | ||
const ADReal & | 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 578 of file PorousFlowBrineCO2.C.
Referenced by equilibriumMoleFractionsLowTemp().
ADReal PorousFlowBrineCO2::activityCoefficientCO2 | ( | const ADReal & | temperature, |
const ADReal & | 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 563 of file PorousFlowBrineCO2.C.
Referenced by funcABHighTemp().
ADReal PorousFlowBrineCO2::activityCoefficientH2O | ( | const ADReal & | temperature, |
const ADReal & | 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 548 of file PorousFlowBrineCO2.C.
Referenced by funcABHighTemp().
ADReal PorousFlowBrineCO2::activityCoefficientHighTemp | ( | const ADReal & | temperature, |
const ADReal & | 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 600 of file PorousFlowBrineCO2.C.
Referenced by funcABHighTemp().
|
inlineinherited |
The index of the aqueous fluid component.
Definition at line 29 of file PorousFlowFluidStateMultiComponentBase.h.
|
inlineinherited |
The index of the aqueous phase.
Definition at line 77 of file PorousFlowFluidStateBase.h.
Check the input variables.
Definition at line 1158 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 33 of file PorousFlowFluidStateBase.C.
Referenced by PorousFlowWaterNCG::thermophysicalProperties(), and thermophysicalProperties().
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 1129 of file PorousFlowBrineCO2.C.
Referenced by liquidProperties().
ADReal PorousFlowBrineCO2::enthalpyOfDissolutionGas | ( | const ADReal & | temperature, |
const ADReal & | 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 1099 of file PorousFlowBrineCO2.C.
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 643 of file PorousFlowBrineCO2.C.
Referenced by funcABHighTemp(), and funcABLowTemp().
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 616 of file PorousFlowBrineCO2.C.
Referenced by funcABHighTemp(), and funcABLowTemp().
void PorousFlowBrineCO2::equilibriumMassFractions | ( | const ADReal & | pressure, |
const ADReal & | temperature, | ||
const ADReal & | Xnacl, | ||
ADReal & | Xco2, | ||
ADReal & | 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 372 of file PorousFlowBrineCO2.C.
Referenced by massFractions(), and totalMassFraction().
void PorousFlowBrineCO2::equilibriumMoleFractions | ( | const ADReal & | pressure, |
const ADReal & | temperature, | ||
const ADReal & | Xnacl, | ||
ADReal & | xco2, | ||
ADReal & | 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 669 of file PorousFlowBrineCO2.C.
Referenced by equilibriumMassFractions().
void PorousFlowBrineCO2::equilibriumMoleFractionsLowTemp | ( | const ADReal & | pressure, |
const ADReal & | temperature, | ||
const ADReal & | Xnacl, | ||
ADReal & | xco2, | ||
ADReal & | 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 787 of file PorousFlowBrineCO2.C.
Referenced by equilibriumMoleFractions().
|
inlinefinalvirtualinherited |
|
inlinefinalvirtualinherited |
|
overridevirtual |
Name of FluidState.
Implements PorousFlowFluidStateBase.
Definition at line 85 of file PorousFlowBrineCO2.C.
ADReal PorousFlowBrineCO2::fugacityCoefficientCO2HighTemp | ( | const ADReal & | pressure, |
const ADReal & | temperature, | ||
const ADReal & | co2_density, | ||
const ADReal & | xco2, | ||
const ADReal & | yh2o | ||
) | const |
Definition at line 502 of file PorousFlowBrineCO2.C.
Referenced by fugacityCoefficientsHighTemp().
ADReal PorousFlowBrineCO2::fugacityCoefficientH2OHighTemp | ( | const ADReal & | pressure, |
const ADReal & | temperature, | ||
const ADReal & | co2_density, | ||
const ADReal & | xco2, | ||
const ADReal & | yh2o | ||
) | const |
Definition at line 456 of file PorousFlowBrineCO2.C.
Referenced by fugacityCoefficientsHighTemp().
void PorousFlowBrineCO2::fugacityCoefficientsHighTemp | ( | const ADReal & | pressure, |
const ADReal & | temperature, | ||
const ADReal & | co2_density, | ||
const ADReal & | xco2, | ||
const ADReal & | yh2o, | ||
ADReal & | fco2, | ||
ADReal & | 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 438 of file PorousFlowBrineCO2.C.
Referenced by funcABHighTemp().
void PorousFlowBrineCO2::fugacityCoefficientsLowTemp | ( | const ADReal & | pressure, |
const ADReal & | temperature, | ||
const ADReal & | co2_density, | ||
ADReal & | fco2, | ||
ADReal & | 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 397 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 862 of file PorousFlowBrineCO2.C.
Referenced by equilibriumMoleFractions(), funcABHighTemp(), and solveEquilibriumMoleFractionHighTemp().
|
protected |
Definition at line 920 of file PorousFlowBrineCO2.C.
|
protected |
Definition at line 828 of file PorousFlowBrineCO2.C.
Referenced by equilibriumMoleFractionsLowTemp().
|
inlineinherited |
The index of the gas fluid component.
Definition at line 35 of file PorousFlowFluidStateMultiComponentBase.h.
|
inlineinherited |
The index of the gas phase.
Definition at line 83 of file PorousFlowFluidStateBase.h.
void PorousFlowBrineCO2::gasProperties | ( | const ADReal & | pressure, |
const ADReal & | 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 242 of file PorousFlowBrineCO2.C.
Referenced by thermophysicalProperties(), totalMassFraction(), and twoPhaseProperties().
|
inlineinherited |
Definition at line 92 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by PorousFlowWaterNCGTest::buildObjects(), and PorousFlowBrineCO2Test::buildObjects().
|
inlineinherited |
Definition at line 93 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by PorousFlowWaterNCGTest::buildObjects(), and PorousFlowBrineCO2Test::buildObjects().
|
inlineinherited |
Definition at line 95 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by PorousFlowBrineCO2Test::buildObjects().
|
inlineinherited |
Definition at line 94 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by PorousFlowWaterNCGTest::buildObjects(), and PorousFlowBrineCO2Test::buildObjects().
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 1076 of file PorousFlowBrineCO2.C.
Referenced by enthalpyOfDissolutionGas().
|
inlinefinalvirtualinherited |
void PorousFlowBrineCO2::liquidProperties | ( | const ADReal & | pressure, |
const ADReal & | temperature, | ||
const ADReal & | 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 265 of file PorousFlowBrineCO2.C.
Referenced by thermophysicalProperties(), totalMassFraction(), and twoPhaseProperties().
void PorousFlowBrineCO2::massFractions | ( | const ADReal & | pressure, |
const ADReal & | temperature, | ||
const ADReal & | Xnacl, | ||
const ADReal & | 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 171 of file PorousFlowBrineCO2.C.
Referenced by thermophysicalProperties().
|
inlineinherited |
The maximum number of components in this model.
Definition at line 71 of file PorousFlowFluidStateBase.h.
|
inlineinherited |
The maximum number of phases in this model.
Definition at line 65 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowFluidStateSingleComponentTempl< is_ad >::PorousFlowFluidStateSingleComponentTempl(), and PorousFlowFluidStateTempl< is_ad >::PorousFlowFluidStateTempl().
Partial density of dissolved CO2 From Garcia, Density of aqueous solutions of CO2, LBNL-49023 (2001)
temperature | fluid temperature (K) |
Definition at line 1022 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 36 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 26 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 52 of file PorousFlowFluidStateFlash.C.
Referenced by PorousFlowFluidStateFlash::vaporMassFraction().
|
inline |
The index of the salt component.
Definition at line 321 of file PorousFlowBrineCO2.h.
ADReal PorousFlowBrineCO2::saturation | ( | const ADReal & | pressure, |
const ADReal & | temperature, | ||
const ADReal & | Xnacl, | ||
const ADReal & | 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 307 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 1139 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 955 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 91 of file PorousFlowBrineCO2.C.
|
overridevirtual |
Implements PorousFlowFluidStateMultiComponentBase.
Definition at line 112 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 1033 of file PorousFlowBrineCO2.C.
void PorousFlowBrineCO2::twoPhaseProperties | ( | const ADReal & | pressure, |
const ADReal & | temperature, | ||
const ADReal & | Xnacl, | ||
const ADReal & | 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 351 of file PorousFlowBrineCO2.C.
Referenced by thermophysicalProperties().
|
static |
Definition at line 19 of file PorousFlowBrineCO2.C.
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 80 of file PorousFlowFluidStateFlash.C.
Referenced by PorousFlowWaterNCG::saturation(), saturation(), and PorousFlowFluidStateFlash::vaporMassFraction().
|
inherited |
Definition at line 86 of file PorousFlowFluidStateFlash.C.
|
inherited |
Definition at line 94 of file PorousFlowFluidStateFlash.C.
|
protectedinherited |
Fluid component number of the aqueous component.
Definition at line 95 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by PorousFlowFluidStateMultiComponentBase::aqueousComponentIndex(), PorousFlowWaterNCG::massFractions(), massFractions(), PorousFlowBrineCO2(), PorousFlowWaterNCG::PorousFlowWaterNCG(), PorousFlowWaterNCG::saturation(), saturation(), PorousFlowWaterNCG::totalMassFraction(), and totalMassFraction().
|
protectedinherited |
Phase number of the aqueous phase.
Definition at line 102 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 462 of file PorousFlowBrineCO2.h.
Referenced by henryConstant(), liquidProperties(), PorousFlowBrineCO2(), saturation(), and solveEquilibriumMoleFractionHighTemp().
|
protected |
Fluid properties UserObject for the CO2.
Definition at line 464 of file PorousFlowBrineCO2.h.
Referenced by equilibriumMoleFractions(), equilibriumMoleFractionsLowTemp(), gasProperties(), liquidProperties(), PorousFlowBrineCO2(), and saturation().
|
protected |
Henry's coefficeients for CO2.
Definition at line 483 of file PorousFlowBrineCO2.h.
Referenced by henryConstant().
|
protectedinherited |
Empty FluidStateProperties object.
Definition at line 112 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 101 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by PorousFlowFluidStateMultiComponentBase::gasComponentIndex(), PorousFlowWaterNCG::gasDensity(), PorousFlowWaterNCG::gasProperties(), PorousFlowWaterNCG::liquidProperties(), liquidProperties(), PorousFlowWaterNCG::massFractions(), massFractions(), PorousFlowBrineCO2(), PorousFlowWaterNCG::PorousFlowWaterNCG(), PorousFlowWaterNCG::saturation(), saturation(), PorousFlowWaterNCG::totalMassFraction(), and totalMassFraction().
|
protectedinherited |
Phase number of the gas phase.
Definition at line 104 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 468 of file PorousFlowBrineCO2.h.
Referenced by activityCoefficientHighTemp(), equilibriumMassFractions(), equilibriumMoleFractionsLowTemp(), funcABHighTemp(), funcABLowTemp(), and solveEquilibriumMoleFractionHighTemp().
|
protected |
Molar mass of CO2 (kg/mol)
Definition at line 470 of file PorousFlowBrineCO2.h.
Referenced by enthalpyOfDissolution(), enthalpyOfDissolutionGas(), equilibriumMassFractions(), fugacityCoefficientCO2HighTemp(), fugacityCoefficientH2OHighTemp(), fugacityCoefficientsLowTemp(), and partialDensityCO2().
|
protected |
Molar mass of water (kg/mol)
Definition at line 466 of file PorousFlowBrineCO2.h.
Referenced by equilibriumMassFractions().
|
protected |
Molar mass of NaCL.
Definition at line 472 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 77 of file PorousFlowFluidStateFlash.h.
Referenced by PorousFlowFluidStateFlash::vaporMassFraction().
|
protectedinherited |
Tolerance for Newton-Raphson iterations.
Definition at line 79 of file PorousFlowFluidStateFlash.h.
Referenced by PorousFlowFluidStateFlash::vaporMassFraction().
|
protectedinherited |
Number of components.
Definition at line 100 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowFluidStateBase::numComponents(), PorousFlowBrineCO2(), PorousFlowWaterNCG::PorousFlowWaterNCG(), PorousFlowWaterVapor::PorousFlowWaterVapor(), PorousFlowWaterNCG::totalMassFraction(), and totalMassFraction().
|
protectedinherited |
Number of phases.
Definition at line 98 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowFluidStateBase::numPhases(), PorousFlowBrineCO2(), PorousFlowWaterNCG::PorousFlowWaterNCG(), PorousFlowWaterVapor::PorousFlowWaterVapor(), PorousFlowWaterNCG::totalMassFraction(), and totalMassFraction().
|
protectedinherited |
Capillary pressure UserObject.
Definition at line 110 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 105 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by equilibriumMoleFractions(), PorousFlowFluidStateMultiComponentBase::getPressureIndex(), PorousFlowWaterNCG::thermophysicalProperties(), and thermophysicalProperties().
|
protectedinherited |
Universal gas constant (J/mol/K)
Definition at line 106 of file PorousFlowFluidStateBase.h.
Referenced by PorousFlowWaterNCG::enthalpyOfDissolution(), and enthalpyOfDissolutionGas().
|
protected |
Molar gas constant in bar cm^3 /(K mol)
Definition at line 474 of file PorousFlowBrineCO2.h.
Referenced by fugacityCoefficientCO2HighTemp(), fugacityCoefficientH2OHighTemp(), fugacityCoefficientsLowTemp(), funcABHighTemp(), and funcABLowTemp().
|
protected |
Salt component index.
Definition at line 460 of file PorousFlowBrineCO2.h.
Referenced by massFractions(), PorousFlowBrineCO2(), and saltComponentIndex().
|
protectedinherited |
Conversion from C to K.
Definition at line 108 of file PorousFlowFluidStateBase.h.
Referenced by equilibriumConstantCO2(), equilibriumConstantH2O(), funcABHighTemp(), henryConstant(), and partialDensityCO2().
|
protectedinherited |
Index of derivative wrt temperature.
Definition at line 109 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by PorousFlowWaterNCG::enthalpyOfDissolution(), enthalpyOfDissolutionGas(), equilibriumMoleFractions(), PorousFlowFluidStateMultiComponentBase::getTemperatureIndex(), PorousFlowWaterNCG::thermophysicalProperties(), and thermophysicalProperties().
|
protected |
Temperature below which the Spycher, Pruess & Ennis-King (2003) model is used (K)
Definition at line 476 of file PorousFlowBrineCO2.h.
Referenced by equilibriumMoleFractions(), and smoothCubicInterpolation().
|
protected |
Temperature above which the Spycher & Pruess (2010) model is used (K)
Definition at line 478 of file PorousFlowBrineCO2.h.
Referenced by equilibriumMoleFractions(), and smoothCubicInterpolation().
|
protectedinherited |
Index of derivative wrt salt mass fraction X.
Definition at line 111 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by equilibriumMoleFractions(), PorousFlowFluidStateMultiComponentBase::getXIndex(), PorousFlowWaterNCG::thermophysicalProperties(), and thermophysicalProperties().
|
protectedinherited |
Index of derivative wrt total mass fraction Z.
Definition at line 107 of file PorousFlowFluidStateMultiComponentBase.h.
Referenced by PorousFlowFluidStateMultiComponentBase::getZIndex(), 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 481 of file PorousFlowBrineCO2.h.
Referenced by massFractions().