Material designed to form a std::vector<std::vector> of mass fractions from primary-species concentrations and secondary-species concentrations for an equilibrium aqueous chemistry reaction system. More...
#include <PorousFlowMassFractionAqueousEquilibriumChemistry.h>
Public Types | |
typedef DerivativeMaterialPropertyNameInterface::SymbolName | SymbolName |
Public Member Functions | |
PorousFlowMassFractionAqueousEquilibriumChemistry (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 | |
virtual void | initQpStatefulProperties () override |
virtual void | computeQpProperties () override |
Real | stoichiometry (unsigned reaction_num, unsigned primary_num) const |
The stoichiometric coefficient. More... | |
virtual void | computeQpSecondaryConcentrations () |
Compute the secondary-species concentration as defined by the chemistry Must be overridden by derived classes. More... | |
virtual void | initQpSecondaryConcentrations () |
Initialises (at _t_step = 0) the secondary concentrations. More... | |
void | findZeroConcentration (unsigned &zero_conc_index, unsigned &zero_count) const |
Checks gamp[i] = _primary_activity_coefficients[i] * (*_primary[i])[qp]. More... | |
virtual void | dQpSecondaryConcentration_dprimary (unsigned reaction_num, std::vector< Real > &dsc) const |
Computes derivative of the secondary concentration with respect to the primary concentrations Must be overridden by derived classes. More... | |
virtual Real | dQpSecondaryConcentration_dT (unsigned reaction_num) const |
Computes derivative of the secondary concentration with respect to the temperature Must be overridden by derived classes. More... | |
void | build_mass_frac (unsigned int qp) |
Builds the mass-fraction variable matrix at the quad point. More... | |
Protected Attributes | |
MaterialProperty< std::vector< Real > > & | _sec_conc |
Secondary concentrations at quadpoint or nodes. More... | |
MaterialProperty< std::vector< std::vector< Real > > > & | _dsec_conc_dvar |
Derivative of the secondary concentrations with respect to the porous flow variables. 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 | _aq_ph |
Aqueous phase number. More... | |
const unsigned int | _aq_i |
Index (into _mf_vars) of the first of the 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... | |
const std::vector< Real > | _secondary_activity_coefficients |
Activity coefficients for the secondary species. More... | |
GenericMaterialProperty< std::vector< std::vector< Real > >, is_ad > & | _mass_frac |
Mass fraction matrix at quadpoint or nodes. More... | |
GenericMaterialProperty< std::vector< std::vector< RealGradient > >, is_ad > *const | _grad_mass_frac |
Gradient of the mass fraction matrix at the quad points. More... | |
MaterialProperty< std::vector< std::vector< std::vector< Real > > > > *const | _dmass_frac_dvar |
Derivative of the mass fraction matrix with respect to the porous flow variables. More... | |
const unsigned int | _num_passed_mf_vars |
Number of mass-fraction variables provided by the user This needs to be num_phases*(_num_components - 1), since the mass fraction of the final component in each phase is determined as 1 - sum{components}(mass fraction of all other components in the phase) More... | |
std::vector< unsigned int > | _mf_vars_num |
The variable number of the mass-fraction variables. More... | |
std::vector< const GenericVariableValue< is_ad > * > | _mf_vars |
The mass-fraction variables. More... | |
std::vector< const GenericVariableGradient< is_ad > * > | _grad_mf_vars |
The gradient of the mass-fraction variables. 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<std::vector> of mass fractions from primary-species concentrations and secondary-species concentrations for an equilibrium aqueous chemistry reaction system.
Definition at line 20 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
PorousFlowMassFractionAqueousEquilibriumChemistry::PorousFlowMassFractionAqueousEquilibriumChemistry | ( | const InputParameters & | parameters | ) |
Definition at line 67 of file PorousFlowMassFractionAqueousEquilibriumChemistry.C.
|
protectedinherited |
Builds the mass-fraction variable matrix at the quad point.
qp | the quad point |
|
overrideprotectedvirtual |
Reimplemented from PorousFlowMassFractionTempl< is_ad >.
Definition at line 167 of file PorousFlowMassFractionAqueousEquilibriumChemistry.C.
Referenced by initQpStatefulProperties().
|
protectedvirtual |
Compute the secondary-species concentration as defined by the chemistry Must be overridden by derived classes.
Definition at line 311 of file PorousFlowMassFractionAqueousEquilibriumChemistry.C.
Referenced by computeQpProperties().
|
protectedvirtual |
Computes derivative of the secondary concentration with respect to the primary concentrations Must be overridden by derived classes.
reaction_num | The reaction number corresponding to the secondary-species concentration |
dsc | dsc[i] = d(secondaryConcentration[reaction_num])/d(primary_species[i]) |
Definition at line 342 of file PorousFlowMassFractionAqueousEquilibriumChemistry.C.
Referenced by computeQpProperties().
|
protectedvirtual |
Computes derivative of the secondary concentration with respect to the temperature Must be overridden by derived classes.
reaction_num | The reaction number corresponding to the secondary-species concentration |
dsc | dsc[i] = d(secondaryConcentration[reaction_num])/d(primary_species[i]) |
Definition at line 400 of file PorousFlowMassFractionAqueousEquilibriumChemistry.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 287 of file PorousFlowMassFractionAqueousEquilibriumChemistry.C.
Referenced by dQpSecondaryConcentration_dprimary().
|
protectedvirtual |
Initialises (at _t_step = 0) the secondary concentrations.
Definition at line 305 of file PorousFlowMassFractionAqueousEquilibriumChemistry.C.
Referenced by computeQpProperties().
|
overrideprotectedvirtual |
Reimplemented from PorousFlowMassFractionTempl< is_ad >.
Definition at line 161 of file PorousFlowMassFractionAqueousEquilibriumChemistry.C.
|
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 279 of file PorousFlowMassFractionAqueousEquilibriumChemistry.C.
Referenced by computeQpProperties(), computeQpSecondaryConcentrations(), and dQpSecondaryConcentration_dprimary().
|
static |
Definition at line 15 of file PorousFlowMassFractionAqueousEquilibriumChemistry.C.
|
protected |
Index (into _mf_vars) of the first of the primary species.
Definition at line 95 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpProperties(), computeQpSecondaryConcentrations(), dQpSecondaryConcentration_dprimary(), and findZeroConcentration().
|
protected |
Aqueous phase number.
Definition at line 92 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpProperties().
|
protectedinherited |
Derivative of the mass fraction matrix with respect to the porous flow variables.
Definition at line 34 of file PorousFlowMassFraction.h.
Referenced by computeQpProperties().
|
protected |
Derivative of the secondary concentrations with respect to the porous flow variables.
Definition at line 80 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpProperties().
|
protected |
d(temperature)/(d porflow variable)
Definition at line 86 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpProperties().
|
protected |
Equilibrium constants (dimensionless)
Definition at line 107 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpSecondaryConcentrations(), dQpSecondaryConcentration_dprimary(), and PorousFlowMassFractionAqueousEquilibriumChemistry().
|
protected |
Whether the equilibium constants are written in their log10 form, or in absolute terms.
Definition at line 101 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpSecondaryConcentrations(), and dQpSecondaryConcentration_dprimary().
|
protectedinherited |
Gradient of the mass fraction matrix at the quad points.
Definition at line 31 of file PorousFlowMassFraction.h.
Referenced by computeQpProperties().
|
protectedinherited |
The gradient of the mass-fraction variables.
Definition at line 60 of file PorousFlowMassFraction.h.
Referenced by computeQpProperties(), and PorousFlowMassFractionTempl< is_ad >::PorousFlowMassFractionTempl().
|
protectedinherited |
Mass fraction matrix at quadpoint or nodes.
Definition at line 28 of file PorousFlowMassFraction.h.
Referenced by computeQpProperties().
|
protectedinherited |
The mass-fraction variables.
Definition at line 57 of file PorousFlowMassFraction.h.
Referenced by computeQpProperties(), computeQpSecondaryConcentrations(), dQpSecondaryConcentration_dprimary(), findZeroConcentration(), and PorousFlowMassFractionTempl< is_ad >::PorousFlowMassFractionTempl().
|
protectedinherited |
The variable number of the mass-fraction variables.
Definition at line 54 of file PorousFlowMassFraction.h.
Referenced by computeQpProperties(), and PorousFlowMassFractionTempl< is_ad >::PorousFlowMassFractionTempl().
|
protectedinherited |
Number of fluid components.
Definition at line 30 of file PorousFlowMaterialVectorBase.h.
Referenced by computeQpProperties(), PorousFlowAqueousPreDisChemistry::PorousFlowAqueousPreDisChemistry(), PorousFlowDiffusivityBaseTempl< is_ad >::PorousFlowDiffusivityBaseTempl(), and PorousFlowMassFractionTempl< is_ad >::PorousFlowMassFractionTempl().
|
protected |
Number of equilibrium_constants provided.
Definition at line 104 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by PorousFlowMassFractionAqueousEquilibriumChemistry().
|
protectedinherited |
Number of mass-fraction variables provided by the user This needs to be num_phases*(_num_components - 1), since the mass fraction of the final component in each phase is determined as 1 - sum{components}(mass fraction of all other components in the phase)
Definition at line 51 of file PorousFlowMassFraction.h.
Referenced by PorousFlowMassFractionTempl< is_ad >::PorousFlowMassFractionTempl().
|
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 89 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpProperties(), computeQpSecondaryConcentrations(), dQpSecondaryConcentration_dprimary(), findZeroConcentration(), PorousFlowMassFractionAqueousEquilibriumChemistry(), and stoichiometry().
|
protected |
Number of equations in the aqueous geochemistry system.
Definition at line 98 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpProperties(), computeQpSecondaryConcentrations(), initQpSecondaryConcentrations(), and PorousFlowMassFractionAqueousEquilibriumChemistry().
|
protectedinherited |
Number of PorousFlow variables.
Definition at line 33 of file PorousFlowMaterialVectorBase.h.
Referenced by PorousFlowVolumetricStrain::computeQpProperties(), PorousFlowAqueousPreDisChemistry::computeQpProperties(), computeQpProperties(), PorousFlowPorosityLinear::computeQpProperties(), PorousFlowPorosityHMBiotModulus::computeQpProperties(), PorousFlowTotalGravitationalDensityFullySaturatedFromPorosity::computeQpProperties(), PorousFlowPorosityExponentialBase::computeQpProperties(), PorousFlowAqueousPreDisChemistry::initQpStatefulProperties(), and PorousFlowPorosityLinear::initQpStatefulProperties().
|
protected |
Activity coefficients for the primary species (dimensionless)
Definition at line 110 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpSecondaryConcentrations(), dQpSecondaryConcentration_dprimary(), findZeroConcentration(), and PorousFlowMassFractionAqueousEquilibriumChemistry().
|
protected |
Stoichiometry defining the aqeuous geochemistry equilibrium reactions.
Definition at line 113 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by PorousFlowMassFractionAqueousEquilibriumChemistry(), and stoichiometry().
|
protected |
Secondary concentrations at quadpoint or nodes.
Definition at line 77 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpProperties(), computeQpSecondaryConcentrations(), dQpSecondaryConcentration_dprimary(), and initQpSecondaryConcentrations().
|
protected |
Activity coefficients for the secondary species.
Definition at line 116 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpSecondaryConcentrations(), dQpSecondaryConcentration_dprimary(), and PorousFlowMassFractionAqueousEquilibriumChemistry().
|
protected |
Temperature.
Definition at line 83 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.