www.mooseframework.org
PorousFlowAqueousPreDisChemistry.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
13 
15 
16 template <>
18 
25 {
26 public:
27  PorousFlowAqueousPreDisChemistry(const InputParameters & parameters);
28 
29 protected:
30  void initQpStatefulProperties() override;
31  void computeQpProperties() override;
37  Real stoichiometry(unsigned reaction_num, unsigned primary_num) const;
38 
43  virtual void computeQpReactionRates();
44 
53  void findZeroConcentration(unsigned & zero_conc_index, unsigned & zero_count) const;
54 
60  virtual void dQpReactionRate_dprimary(unsigned reaction_num, std::vector<Real> & drr) const;
61 
66  virtual Real dQpReactionRate_dT(unsigned reaction_num) const;
67 
68  Real rateConstantQp(unsigned reaction_num) const;
69 
71  const MaterialProperty<Real> & _porosity_old;
72 
74  const unsigned int _aq_ph;
75 
77  const MaterialProperty<std::vector<Real>> & _saturation;
78 
80  const MaterialProperty<Real> & _temperature;
81 
83  const MaterialProperty<std::vector<Real>> & _dtemperature_dvar;
84 
86  const unsigned int _num_primary;
87 
89  const unsigned int _num_reactions;
90 
93 
96 
98  std::vector<const VariableValue *> _equilibrium_constants;
99 
101  const std::vector<Real> _primary_activity_coefficients;
102 
104  const std::vector<Real> _reactions;
105 
107  std::vector<unsigned int> _primary_var_num;
108 
110  std::vector<const VariableValue *> _primary;
111 
112  // Old values of the mineral species concentrations
113  const MaterialProperty<std::vector<Real>> & _sec_conc_old;
114 
116  std::vector<Real> _mineral_sat;
117 
119  std::vector<bool> _bounded_rate;
120 
122  MaterialProperty<std::vector<Real>> & _reaction_rate;
123 
125  MaterialProperty<std::vector<std::vector<Real>>> & _dreaction_rate_dvar;
126 
128  const std::vector<Real> _r_area;
129 
131  const std::vector<Real> _molar_volume;
132 
134  const std::vector<Real> _ref_kconst;
135 
137  const std::vector<Real> _e_act;
138 
140  const Real _gas_const;
141 
143  const Real _one_over_ref_temp;
144 
146  const std::vector<Real> _theta_exponent;
147 
149  const std::vector<Real> _eta_exponent;
150 
152  std::vector<const VariableValue *> _initial_conc;
153 };
154 
PorousFlowAqueousPreDisChemistry::_primary_activity_coefficients
const std::vector< Real > _primary_activity_coefficients
Activity coefficients for the primary species (dimensionless)
Definition: PorousFlowAqueousPreDisChemistry.h:101
PorousFlowMaterialVectorBase
Base class for all PorousFlow vector materials.
Definition: PorousFlowMaterialVectorBase.h:23
PorousFlowAqueousPreDisChemistry::rateConstantQp
Real rateConstantQp(unsigned reaction_num) const
Definition: PorousFlowAqueousPreDisChemistry.C:443
PorousFlowAqueousPreDisChemistry::dQpReactionRate_dprimary
virtual void dQpReactionRate_dprimary(unsigned reaction_num, std::vector< Real > &drr) const
Computes derivative of the reaction rate with respect to the primary concentrations.
Definition: PorousFlowAqueousPreDisChemistry.C:365
PorousFlowAqueousPreDisChemistry::_one_over_ref_temp
const Real _one_over_ref_temp
1/reference_temperature (1/K)
Definition: PorousFlowAqueousPreDisChemistry.h:143
PorousFlowAqueousPreDisChemistry::_num_equilibrium_constants
const unsigned _num_equilibrium_constants
Number of equilibrium_constants provided.
Definition: PorousFlowAqueousPreDisChemistry.h:95
PorousFlowAqueousPreDisChemistry::_num_primary
const unsigned int _num_primary
Number of primary species.
Definition: PorousFlowAqueousPreDisChemistry.h:86
PorousFlowAqueousPreDisChemistry::_porosity_old
const MaterialProperty< Real > & _porosity_old
Old values of the porosity.
Definition: PorousFlowAqueousPreDisChemistry.h:71
PorousFlowAqueousPreDisChemistry::stoichiometry
Real stoichiometry(unsigned reaction_num, unsigned primary_num) const
The stoichiometric coefficient.
Definition: PorousFlowAqueousPreDisChemistry.C:274
PorousFlowAqueousPreDisChemistry::_saturation
const MaterialProperty< std::vector< Real > > & _saturation
Saturation.
Definition: PorousFlowAqueousPreDisChemistry.h:77
PorousFlowAqueousPreDisChemistry::_r_area
const std::vector< Real > _r_area
Reactive surface area (m^2/L) for each reaction.
Definition: PorousFlowAqueousPreDisChemistry.h:128
PorousFlowAqueousPreDisChemistry::_aq_ph
const unsigned int _aq_ph
Aqueous phase number.
Definition: PorousFlowAqueousPreDisChemistry.h:74
PorousFlowAqueousPreDisChemistry::computeQpProperties
void computeQpProperties() override
Definition: PorousFlowAqueousPreDisChemistry.C:235
PorousFlowAqueousPreDisChemistry::_dreaction_rate_dvar
MaterialProperty< std::vector< std::vector< Real > > > & _dreaction_rate_dvar
d(reaction rate of mineralisation)/d(porous flow var)
Definition: PorousFlowAqueousPreDisChemistry.h:125
PorousFlowAqueousPreDisChemistry::_gas_const
const Real _gas_const
Gas constant (J/(mol K))
Definition: PorousFlowAqueousPreDisChemistry.h:140
PorousFlowAqueousPreDisChemistry::_sec_conc_old
const MaterialProperty< std::vector< Real > > & _sec_conc_old
Definition: PorousFlowAqueousPreDisChemistry.h:113
PorousFlowAqueousPreDisChemistry::PorousFlowAqueousPreDisChemistry
PorousFlowAqueousPreDisChemistry(const InputParameters &parameters)
Definition: PorousFlowAqueousPreDisChemistry.C:70
PorousFlowAqueousPreDisChemistry::_num_reactions
const unsigned int _num_reactions
Number of equations in the aqueous geochemistry system.
Definition: PorousFlowAqueousPreDisChemistry.h:89
PorousFlowAqueousPreDisChemistry::_initial_conc
std::vector< const VariableValue * > _initial_conc
Initial values of the secondary species concentrations.
Definition: PorousFlowAqueousPreDisChemistry.h:152
PorousFlowAqueousPreDisChemistry::_temperature
const MaterialProperty< Real > & _temperature
Temperature.
Definition: PorousFlowAqueousPreDisChemistry.h:80
PorousFlowAqueousPreDisChemistry::computeQpReactionRates
virtual void computeQpReactionRates()
Compute the secondary-species concentration as defined by the chemistry Must be overridden by derived...
Definition: PorousFlowAqueousPreDisChemistry.C:299
validParams< PorousFlowAqueousPreDisChemistry >
InputParameters validParams< PorousFlowAqueousPreDisChemistry >()
Definition: PorousFlowAqueousPreDisChemistry.C:16
PorousFlowAqueousPreDisChemistry::_equilibrium_constants_as_log10
const bool _equilibrium_constants_as_log10
Whether the equilibium constants are written in their log10 form, or in absolute terms.
Definition: PorousFlowAqueousPreDisChemistry.h:92
PorousFlowAqueousPreDisChemistry::_mineral_sat
std::vector< Real > _mineral_sat
Mineral saturation ratio - a useful temporary variable during computeQpProperties.
Definition: PorousFlowAqueousPreDisChemistry.h:116
PorousFlowAqueousPreDisChemistry::dQpReactionRate_dT
virtual Real dQpReactionRate_dT(unsigned reaction_num) const
Computes derivative of the reaction rate with respect to the temperature.
Definition: PorousFlowAqueousPreDisChemistry.C:450
PorousFlowAqueousPreDisChemistry::_theta_exponent
const std::vector< Real > _theta_exponent
Theta exponent for the precipitation-dissolution for each reaction.
Definition: PorousFlowAqueousPreDisChemistry.h:146
PorousFlowMaterialVectorBase.h
PorousFlowAqueousPreDisChemistry::findZeroConcentration
void findZeroConcentration(unsigned &zero_conc_index, unsigned &zero_count) const
Checks gamp[i] = _primary_activity_coefficients[i] * (*_primary[i])[qp].
Definition: PorousFlowAqueousPreDisChemistry.C:281
PorousFlowAqueousPreDisChemistry::_eta_exponent
const std::vector< Real > _eta_exponent
Eta exponent for the precipitation-dissolution for each reaction.
Definition: PorousFlowAqueousPreDisChemistry.h:149
PorousFlowAqueousPreDisChemistry::_primary_var_num
std::vector< unsigned int > _primary_var_num
The variable number of the primary variables.
Definition: PorousFlowAqueousPreDisChemistry.h:107
PorousFlowAqueousPreDisChemistry::_bounded_rate
std::vector< bool > _bounded_rate
Whether the reaction rate has to be bounded in order that the precipitate stays inside [0,...
Definition: PorousFlowAqueousPreDisChemistry.h:119
PorousFlowAqueousPreDisChemistry::_ref_kconst
const std::vector< Real > _ref_kconst
Rate constant (mol/(m^2 s)) at reference temperature for each reaction.
Definition: PorousFlowAqueousPreDisChemistry.h:134
PorousFlowAqueousPreDisChemistry::_molar_volume
const std::vector< Real > _molar_volume
Molar volume (L/mol) for each secondary species.
Definition: PorousFlowAqueousPreDisChemistry.h:131
PorousFlowAqueousPreDisChemistry::_e_act
const std::vector< Real > _e_act
Activation energy (J/mol) for each reaction.
Definition: PorousFlowAqueousPreDisChemistry.h:137
PorousFlowAqueousPreDisChemistry::_dtemperature_dvar
const MaterialProperty< std::vector< Real > > & _dtemperature_dvar
d(temperature)/(d porflow variable)
Definition: PorousFlowAqueousPreDisChemistry.h:83
PorousFlowAqueousPreDisChemistry::_reactions
const std::vector< Real > _reactions
Stoichiometry defining the aqeuous geochemistry equilibrium reactions.
Definition: PorousFlowAqueousPreDisChemistry.h:104
PorousFlowAqueousPreDisChemistry
Material designed to form a std::vector of mass fractions of mineral concentrations from primary-spec...
Definition: PorousFlowAqueousPreDisChemistry.h:24
PorousFlowAqueousPreDisChemistry::_reaction_rate
MaterialProperty< std::vector< Real > > & _reaction_rate
Reaction rate of mineralisation.
Definition: PorousFlowAqueousPreDisChemistry.h:122
PorousFlowAqueousPreDisChemistry::initQpStatefulProperties
void initQpStatefulProperties() override
Definition: PorousFlowAqueousPreDisChemistry.C:226
PorousFlowAqueousPreDisChemistry::_equilibrium_constants
std::vector< const VariableValue * > _equilibrium_constants
Equilibrium constants (dimensionless)
Definition: PorousFlowAqueousPreDisChemistry.h:98
PorousFlowAqueousPreDisChemistry::_primary
std::vector< const VariableValue * > _primary
Values of the primary species' concentrations (dimensionless)
Definition: PorousFlowAqueousPreDisChemistry.h:110