Material designed to form a std::vector of mass fractions of mineral concentrations from primary-species concentrations for an equilibrium precipitation-dissolution chemistry reaction system. More...
#include <PorousFlowAqueousPreDisChemistry.h>
Public Types | |
typedef DerivativeMaterialPropertyNameInterface::SymbolName | SymbolName |
Public Member Functions | |
PorousFlowAqueousPreDisChemistry (const InputParameters ¶meters) | |
const GenericMaterialProperty< U, is_ad > & | getDefaultMaterialProperty (const std::string &name) |
const GenericMaterialProperty< U, is_ad > & | getDefaultMaterialPropertyByName (const std::string &name) |
void | validateDerivativeMaterialPropertyBase (const std::string &base) |
const MaterialPropertyName | derivativePropertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const |
const MaterialPropertyName | derivativePropertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const |
const MaterialPropertyName | derivativePropertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const |
const MaterialPropertyName | derivativePropertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const |
GenericMaterialProperty< U, is_ad > & | declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c) |
GenericMaterialProperty< U, is_ad > & | declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c) |
GenericMaterialProperty< U, is_ad > & | declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="") |
GenericMaterialProperty< U, is_ad > & | declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c) |
GenericMaterialProperty< U, is_ad > & | declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c) |
GenericMaterialProperty< U, is_ad > & | declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="") |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c) |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c) |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="") |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint) |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint) |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c) |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c) |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="") |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint) |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint) |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c) |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="") |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c) |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) |
const GenericMaterialProperty< U, is_ad > & | getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="") |
void | validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true) |
void | validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="") |
void | validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true) |
void | validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="") |
void | validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="") |
void | validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="") |
const MaterialPropertyName | propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const |
const MaterialPropertyName | propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const |
const MaterialPropertyName | propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const |
const MaterialPropertyName | propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const |
const MaterialPropertyName | propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const |
const MaterialPropertyName | propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const |
const MaterialPropertyName | propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const |
const MaterialPropertyName | propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const |
Static Public Member Functions | |
static InputParameters | validParams () |
Protected Member Functions | |
void | initQpStatefulProperties () override |
void | computeQpProperties () override |
Real | stoichiometry (unsigned reaction_num, unsigned primary_num) const |
The stoichiometric coefficient. More... | |
virtual void | computeQpReactionRates () |
Compute the secondary-species concentration as defined by the chemistry Must be overridden by derived classes. More... | |
void | findZeroConcentration (unsigned &zero_conc_index, unsigned &zero_count) const |
Checks gamp[i] = _primary_activity_coefficients[i] * (*_primary[i])[qp]. More... | |
virtual void | dQpReactionRate_dprimary (unsigned reaction_num, std::vector< Real > &drr) const |
Computes derivative of the reaction rate with respect to the primary concentrations. More... | |
virtual Real | dQpReactionRate_dT (unsigned reaction_num) const |
Computes derivative of the reaction rate with respect to the temperature. More... | |
Real | rateConstantQp (unsigned reaction_num) const |
Protected Attributes | |
const MaterialProperty< Real > & | _porosity_old |
Old values of the porosity. More... | |
const unsigned int | _aq_ph |
Aqueous phase number. More... | |
const MaterialProperty< std::vector< Real > > & | _saturation |
Saturation. More... | |
const MaterialProperty< Real > & | _temperature |
Temperature. More... | |
const MaterialProperty< std::vector< Real > > & | _dtemperature_dvar |
d(temperature)/(d porflow variable) More... | |
const unsigned int | _num_primary |
Number of primary species. More... | |
const unsigned int | _num_reactions |
Number of equations in the aqueous geochemistry system. More... | |
const bool | _equilibrium_constants_as_log10 |
Whether the equilibium constants are written in their log10 form, or in absolute terms. More... | |
const unsigned | _num_equilibrium_constants |
Number of equilibrium_constants provided. More... | |
std::vector< const VariableValue * > | _equilibrium_constants |
Equilibrium constants (dimensionless) More... | |
const std::vector< Real > | _primary_activity_coefficients |
Activity coefficients for the primary species (dimensionless) More... | |
const std::vector< Real > | _reactions |
Stoichiometry defining the aqeuous geochemistry equilibrium reactions. More... | |
std::vector< unsigned int > | _primary_var_num |
The variable number of the primary variables. More... | |
std::vector< const VariableValue * > | _primary |
Values of the primary species' concentrations (dimensionless) More... | |
const MaterialProperty< std::vector< Real > > & | _sec_conc_old |
std::vector< Real > | _mineral_sat |
Mineral saturation ratio - a useful temporary variable during computeQpProperties. More... | |
std::vector< bool > | _bounded_rate |
Whether the reaction rate has to be bounded in order that the precipitate stays inside [0, 1]. More... | |
MaterialProperty< std::vector< Real > > & | _reaction_rate |
Reaction rate of mineralisation. More... | |
MaterialProperty< std::vector< std::vector< Real > > > & | _dreaction_rate_dvar |
d(reaction rate of mineralisation)/d(porous flow var) More... | |
const std::vector< Real > | _r_area |
Reactive surface area (m^2/L) for each reaction. More... | |
const std::vector< Real > | _molar_volume |
Molar volume (L/mol) for each secondary species. More... | |
const std::vector< Real > | _ref_kconst |
Rate constant (mol/(m^2 s)) at reference temperature for each reaction. More... | |
const std::vector< Real > | _e_act |
Activation energy (J/mol) for each reaction. More... | |
const Real | _gas_const |
Gas constant (J/(mol K)) More... | |
const Real | _one_over_ref_temp |
1/reference_temperature (1/K) More... | |
const std::vector< Real > | _theta_exponent |
Theta exponent for the precipitation-dissolution for each reaction. More... | |
const std::vector< Real > | _eta_exponent |
Eta exponent for the precipitation-dissolution for each reaction. More... | |
std::vector< const VariableValue * > | _initial_conc |
Initial values of the secondary species concentrations. More... | |
const unsigned int | _num_phases |
Number of phases. More... | |
const unsigned int | _num_components |
Number of fluid components. More... | |
const unsigned int | _num_var |
Number of PorousFlow variables. More... | |
Material designed to form a std::vector of mass fractions of mineral concentrations from primary-species concentrations for an equilibrium precipitation-dissolution chemistry reaction system.
Definition at line 19 of file PorousFlowAqueousPreDisChemistry.h.
PorousFlowAqueousPreDisChemistry::PorousFlowAqueousPreDisChemistry | ( | const InputParameters & | parameters | ) |
Definition at line 69 of file PorousFlowAqueousPreDisChemistry.C.
|
overrideprotected |
Definition at line 243 of file PorousFlowAqueousPreDisChemistry.C.
|
protectedvirtual |
Compute the secondary-species concentration as defined by the chemistry Must be overridden by derived classes.
Definition at line 307 of file PorousFlowAqueousPreDisChemistry.C.
Referenced by computeQpProperties().
|
protectedvirtual |
Computes derivative of the reaction rate with respect to the primary concentrations.
reaction_num | The reaction number corresponding to the secondary-species concentration |
drr | drr[i] = d(reactionRate[reaction_num])/d(primary_species[i]) |
Definition at line 373 of file PorousFlowAqueousPreDisChemistry.C.
Referenced by computeQpProperties().
|
protectedvirtual |
Computes derivative of the reaction rate with respect to the temperature.
reaction_num | The reaction number corresponding to the secondary-species concentration |
Definition at line 458 of file PorousFlowAqueousPreDisChemistry.C.
Referenced by computeQpProperties().
|
protected |
Checks gamp[i] = _primary_activity_coefficients[i] * (*_primary[i])[qp].
Returns: if all of these are positive, then zero_count = 0, zero_conc_index = 0 if one of these is zero, then zero_count = 1, zero_conc_index = the index of the zero gamp if more than one is zero, then zero_count = 2, and zero_conc_index is the index of the 2nd zero
Definition at line 289 of file PorousFlowAqueousPreDisChemistry.C.
Referenced by dQpReactionRate_dprimary().
|
overrideprotected |
Definition at line 234 of file PorousFlowAqueousPreDisChemistry.C.
|
protected |
Definition at line 451 of file PorousFlowAqueousPreDisChemistry.C.
Referenced by computeQpReactionRates(), dQpReactionRate_dprimary(), and dQpReactionRate_dT().
|
protected |
The stoichiometric coefficient.
reaction_num | Reaction number (0, ..., _num_reactions - 1) |
primary_num | The number of the primary species (0, ..., _num_primary - 1) |
Definition at line 282 of file PorousFlowAqueousPreDisChemistry.C.
Referenced by computeQpReactionRates(), and dQpReactionRate_dprimary().
|
static |
Definition at line 15 of file PorousFlowAqueousPreDisChemistry.C.
|
protected |
Aqueous phase number.
Definition at line 71 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates().
|
protected |
Whether the reaction rate has to be bounded in order that the precipitate stays inside [0, 1].
Definition at line 116 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates(), dQpReactionRate_dprimary(), and dQpReactionRate_dT().
|
protected |
d(reaction rate of mineralisation)/d(porous flow var)
Definition at line 122 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpProperties(), and initQpStatefulProperties().
|
protected |
d(temperature)/(d porflow variable)
Definition at line 80 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpProperties().
|
protected |
Activation energy (J/mol) for each reaction.
Definition at line 134 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by dQpReactionRate_dT(), PorousFlowAqueousPreDisChemistry(), and rateConstantQp().
|
protected |
Equilibrium constants (dimensionless)
Definition at line 95 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates(), dQpReactionRate_dprimary(), and PorousFlowAqueousPreDisChemistry().
|
protected |
Whether the equilibium constants are written in their log10 form, or in absolute terms.
Definition at line 89 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates(), and dQpReactionRate_dprimary().
|
protected |
Eta exponent for the precipitation-dissolution for each reaction.
Definition at line 146 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates(), dQpReactionRate_dprimary(), dQpReactionRate_dT(), and PorousFlowAqueousPreDisChemistry().
|
protected |
Gas constant (J/(mol K))
Definition at line 137 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by dQpReactionRate_dT(), and rateConstantQp().
|
protected |
Initial values of the secondary species concentrations.
Definition at line 149 of file PorousFlowAqueousPreDisChemistry.h.
|
protected |
Mineral saturation ratio - a useful temporary variable during computeQpProperties.
Definition at line 113 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates(), dQpReactionRate_dprimary(), and dQpReactionRate_dT().
|
protected |
Molar volume (L/mol) for each secondary species.
Definition at line 128 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates(), dQpReactionRate_dprimary(), dQpReactionRate_dT(), and PorousFlowAqueousPreDisChemistry().
|
protectedinherited |
Number of fluid components.
Definition at line 30 of file PorousFlowMaterialVectorBase.h.
Referenced by PorousFlowMassFractionAqueousEquilibriumChemistry::computeQpProperties(), PorousFlowAqueousPreDisChemistry(), PorousFlowDiffusivityBaseTempl< is_ad >::PorousFlowDiffusivityBaseTempl(), and PorousFlowMassFractionTempl< is_ad >::PorousFlowMassFractionTempl().
|
protected |
Number of equilibrium_constants provided.
Definition at line 92 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by PorousFlowAqueousPreDisChemistry().
|
protectedinherited |
Number of phases.
Definition at line 27 of file PorousFlowMaterialVectorBase.h.
Referenced by PorousFlowDiffusivityBaseTempl< is_ad >::PorousFlowDiffusivityBaseTempl(), PorousFlowDiffusivityConstTempl< is_ad >::PorousFlowDiffusivityConstTempl(), PorousFlowJoinerTempl< is_ad >::PorousFlowJoinerTempl(), PorousFlowMassFractionTempl< is_ad >::PorousFlowMassFractionTempl(), PorousFlowThermalConductivityFromPorosityTempl< is_ad >::PorousFlowThermalConductivityFromPorosityTempl(), PorousFlowThermalConductivityIdealTempl< is_ad >::PorousFlowThermalConductivityIdealTempl(), and PorousFlowTotalGravitationalDensityFullySaturatedFromPorosity::PorousFlowTotalGravitationalDensityFullySaturatedFromPorosity().
|
protected |
Number of primary species.
Definition at line 83 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpProperties(), computeQpReactionRates(), dQpReactionRate_dprimary(), findZeroConcentration(), PorousFlowAqueousPreDisChemistry(), and stoichiometry().
|
protected |
Number of equations in the aqueous geochemistry system.
Definition at line 86 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpProperties(), computeQpReactionRates(), initQpStatefulProperties(), and PorousFlowAqueousPreDisChemistry().
|
protectedinherited |
Number of PorousFlow variables.
Definition at line 33 of file PorousFlowMaterialVectorBase.h.
Referenced by PorousFlowVolumetricStrain::computeQpProperties(), computeQpProperties(), PorousFlowMassFractionAqueousEquilibriumChemistry::computeQpProperties(), PorousFlowPorosityLinear::computeQpProperties(), PorousFlowPorosityHMBiotModulus::computeQpProperties(), PorousFlowTotalGravitationalDensityFullySaturatedFromPorosity::computeQpProperties(), PorousFlowPorosityExponentialBase::computeQpProperties(), initQpStatefulProperties(), and PorousFlowPorosityLinear::initQpStatefulProperties().
|
protected |
1/reference_temperature (1/K)
Definition at line 140 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by rateConstantQp().
|
protected |
Old values of the porosity.
Definition at line 68 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates().
|
protected |
Values of the primary species' concentrations (dimensionless)
Definition at line 107 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates(), dQpReactionRate_dprimary(), findZeroConcentration(), and PorousFlowAqueousPreDisChemistry().
|
protected |
Activity coefficients for the primary species (dimensionless)
Definition at line 98 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates(), dQpReactionRate_dprimary(), findZeroConcentration(), and PorousFlowAqueousPreDisChemistry().
|
protected |
The variable number of the primary variables.
Definition at line 104 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpProperties(), and PorousFlowAqueousPreDisChemistry().
|
protected |
Reactive surface area (m^2/L) for each reaction.
Definition at line 125 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates(), dQpReactionRate_dprimary(), dQpReactionRate_dT(), and PorousFlowAqueousPreDisChemistry().
|
protected |
Reaction rate of mineralisation.
Definition at line 119 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpProperties(), computeQpReactionRates(), and initQpStatefulProperties().
|
protected |
Stoichiometry defining the aqeuous geochemistry equilibrium reactions.
Definition at line 101 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by PorousFlowAqueousPreDisChemistry(), and stoichiometry().
|
protected |
Rate constant (mol/(m^2 s)) at reference temperature for each reaction.
Definition at line 131 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by PorousFlowAqueousPreDisChemistry(), and rateConstantQp().
|
protected |
Saturation.
Definition at line 74 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates().
|
protected |
Definition at line 110 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates().
|
protected |
Temperature.
Definition at line 77 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by dQpReactionRate_dT(), and rateConstantQp().
|
protected |
Theta exponent for the precipitation-dissolution for each reaction.
Definition at line 143 of file PorousFlowAqueousPreDisChemistry.h.
Referenced by computeQpReactionRates(), dQpReactionRate_dprimary(), dQpReactionRate_dT(), and PorousFlowAqueousPreDisChemistry().