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 Member Functions | |
PorousFlowMassFractionAqueousEquilibriumChemistry (const InputParameters ¶meters) | |
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... | |
MaterialProperty< std::vector< std::vector< Real > > > & | _mass_frac |
Mass fraction matrix at quadpoint or nodes. More... | |
MaterialProperty< std::vector< std::vector< RealGradient > > > *const | _grad_mass_frac |
Gradient of the mass fraction matrix at the quad points. More... | |
MaterialProperty< std::vector< std::vector< std::vector< Real > > > > & | _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 VariableValue * > | _mf_vars |
The mass-fraction variables. More... | |
std::vector< const VariableGradient * > | _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 25 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
PorousFlowMassFractionAqueousEquilibriumChemistry::PorousFlowMassFractionAqueousEquilibriumChemistry | ( | const InputParameters & | parameters | ) |
Definition at line 68 of file PorousFlowMassFractionAqueousEquilibriumChemistry.C.
|
protectedinherited |
Builds the mass-fraction variable matrix at the quad point.
qp | the quad point |
|
overrideprotectedvirtual |
Reimplemented from PorousFlowMassFraction.
Definition at line 159 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 303 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 334 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 392 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 279 of file PorousFlowMassFractionAqueousEquilibriumChemistry.C.
Referenced by dQpSecondaryConcentration_dprimary().
|
protectedvirtual |
Initialises (at _t_step = 0) the secondary concentrations.
Definition at line 297 of file PorousFlowMassFractionAqueousEquilibriumChemistry.C.
Referenced by computeQpProperties().
|
overrideprotectedvirtual |
Reimplemented from PorousFlowMassFraction.
Definition at line 153 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 271 of file PorousFlowMassFractionAqueousEquilibriumChemistry.C.
Referenced by computeQpProperties(), computeQpSecondaryConcentrations(), and dQpSecondaryConcentration_dprimary().
|
protected |
Index (into _mf_vars) of the first of the primary species.
Definition at line 98 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpProperties(), computeQpSecondaryConcentrations(), dQpSecondaryConcentration_dprimary(), and findZeroConcentration().
|
protected |
Aqueous phase number.
Definition at line 95 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpProperties().
|
protectedinherited |
Derivative of the mass fraction matrix with respect to the porous flow variables.
Definition at line 36 of file PorousFlowMassFraction.h.
Referenced by computeQpProperties(), and PorousFlowMassFraction::computeQpProperties().
|
protected |
Derivative of the secondary concentrations with respect to the porous flow variables.
Definition at line 83 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpProperties().
|
protected |
d(temperature)/(d porflow variable)
Definition at line 89 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpProperties().
|
protected |
Equilibrium constants (dimensionless)
Definition at line 110 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 104 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpSecondaryConcentrations(), and dQpSecondaryConcentration_dprimary().
|
protectedinherited |
Gradient of the mass fraction matrix at the quad points.
Definition at line 33 of file PorousFlowMassFraction.h.
Referenced by computeQpProperties().
|
protectedinherited |
The gradient of the mass-fraction variables.
Definition at line 62 of file PorousFlowMassFraction.h.
Referenced by computeQpProperties(), PorousFlowMassFraction::computeQpProperties(), and PorousFlowMassFraction::PorousFlowMassFraction().
|
protectedinherited |
Mass fraction matrix at quadpoint or nodes.
Definition at line 30 of file PorousFlowMassFraction.h.
Referenced by computeQpProperties(), and PorousFlowMassFraction::computeQpProperties().
|
protectedinherited |
The mass-fraction variables.
Definition at line 59 of file PorousFlowMassFraction.h.
Referenced by computeQpProperties(), PorousFlowMassFraction::computeQpProperties(), computeQpSecondaryConcentrations(), dQpSecondaryConcentration_dprimary(), findZeroConcentration(), and PorousFlowMassFraction::PorousFlowMassFraction().
|
protectedinherited |
The variable number of the mass-fraction variables.
Definition at line 56 of file PorousFlowMassFraction.h.
Referenced by computeQpProperties(), PorousFlowMassFraction::computeQpProperties(), and PorousFlowMassFraction::PorousFlowMassFraction().
|
protectedinherited |
Number of fluid components.
Definition at line 33 of file PorousFlowMaterialVectorBase.h.
Referenced by PorousFlowDiffusivityBase::computeQpProperties(), computeQpProperties(), PorousFlowMassFraction::computeQpProperties(), PorousFlowAqueousPreDisChemistry::PorousFlowAqueousPreDisChemistry(), PorousFlowDiffusivityBase::PorousFlowDiffusivityBase(), and PorousFlowMassFraction::PorousFlowMassFraction().
|
protected |
Number of equilibrium_constants provided.
Definition at line 107 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 53 of file PorousFlowMassFraction.h.
Referenced by PorousFlowMassFraction::PorousFlowMassFraction().
|
protectedinherited |
Number of phases.
Definition at line 30 of file PorousFlowMaterialVectorBase.h.
Referenced by PorousFlowDiffusivityBase::computeQpProperties(), PorousFlowDiffusivityMillingtonQuirk::computeQpProperties(), PorousFlowEffectiveFluidPressure::computeQpProperties(), PorousFlowMassFraction::computeQpProperties(), PorousFlowJoiner::computeQpProperties(), PorousFlowEffectiveFluidPressure::initQpStatefulProperties(), PorousFlowJoiner::initQpStatefulProperties(), PorousFlowDiffusivityBase::PorousFlowDiffusivityBase(), PorousFlowDiffusivityConst::PorousFlowDiffusivityConst(), PorousFlowJoiner::PorousFlowJoiner(), PorousFlowMassFraction::PorousFlowMassFraction(), PorousFlowThermalConductivityFromPorosity::PorousFlowThermalConductivityFromPorosity(), PorousFlowThermalConductivityIdeal::PorousFlowThermalConductivityIdeal(), and PorousFlowTotalGravitationalDensityFullySaturatedFromPorosity::PorousFlowTotalGravitationalDensityFullySaturatedFromPorosity().
|
protected |
Number of primary species.
Definition at line 92 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 101 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpProperties(), computeQpSecondaryConcentrations(), initQpSecondaryConcentrations(), and PorousFlowMassFractionAqueousEquilibriumChemistry().
|
protectedinherited |
Number of PorousFlow variables.
Definition at line 36 of file PorousFlowMaterialVectorBase.h.
Referenced by PorousFlowDiffusivityBase::computeQpProperties(), PorousFlowPermeabilityConst::computeQpProperties(), PorousFlowVolumetricStrain::computeQpProperties(), PorousFlowDiffusivityMillingtonQuirk::computeQpProperties(), PorousFlowAqueousPreDisChemistry::computeQpProperties(), computeQpProperties(), PorousFlowThermalConductivityIdeal::computeQpProperties(), PorousFlowEffectiveFluidPressure::computeQpProperties(), PorousFlowPermeabilityTensorFromVar::computeQpProperties(), PorousFlowPorosityConst::computeQpProperties(), PorousFlowThermalConductivityFromPorosity::computeQpProperties(), PorousFlowMatrixInternalEnergy::computeQpProperties(), PorousFlowPorosityHMBiotModulus::computeQpProperties(), PorousFlowPermeabilityConstFromVar::computeQpProperties(), PorousFlowTotalGravitationalDensityFullySaturatedFromPorosity::computeQpProperties(), PorousFlowPermeabilityExponential::computeQpProperties(), PorousFlowPermeabilityKozenyCarman::computeQpProperties(), PorousFlowMassFraction::computeQpProperties(), PorousFlowJoiner::computeQpProperties(), PorousFlowPorosityExponentialBase::computeQpProperties(), and PorousFlowAqueousPreDisChemistry::initQpStatefulProperties().
|
protected |
Activity coefficients for the primary species (dimensionless)
Definition at line 113 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpSecondaryConcentrations(), dQpSecondaryConcentration_dprimary(), findZeroConcentration(), and PorousFlowMassFractionAqueousEquilibriumChemistry().
|
protected |
Stoichiometry defining the aqeuous geochemistry equilibrium reactions.
Definition at line 116 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by PorousFlowMassFractionAqueousEquilibriumChemistry(), and stoichiometry().
|
protected |
Secondary concentrations at quadpoint or nodes.
Definition at line 80 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpProperties(), computeQpSecondaryConcentrations(), dQpSecondaryConcentration_dprimary(), and initQpSecondaryConcentrations().
|
protected |
Activity coefficients for the secondary species.
Definition at line 119 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.
Referenced by computeQpSecondaryConcentrations(), dQpSecondaryConcentration_dprimary(), and PorousFlowMassFractionAqueousEquilibriumChemistry().
|
protected |
Temperature.
Definition at line 86 of file PorousFlowMassFractionAqueousEquilibriumChemistry.h.