https://mooseframework.inl.gov
Loading...
Searching...
No Matches
PorousFlowAqueousPreDisChemistry.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
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
20{
21public:
23
25
26protected:
27 void initQpStatefulProperties() override;
28 void computeQpProperties() override;
34 Real stoichiometry(unsigned reaction_num, unsigned primary_num) const;
35
40 virtual void computeQpReactionRates();
41
50 void findZeroConcentration(unsigned & zero_conc_index, unsigned & zero_count) const;
51
57 virtual void dQpReactionRate_dprimary(unsigned reaction_num, std::vector<Real> & drr) const;
58
63 virtual Real dQpReactionRate_dT(unsigned reaction_num) const;
64
65 Real rateConstantQp(unsigned reaction_num) const;
66
69
71 const unsigned int _aq_ph;
72
75
78
81
83 const unsigned int _num_primary;
84
86 const unsigned int _num_reactions;
87
90
93
95 std::vector<const VariableValue *> _equilibrium_constants;
96
98 const std::vector<Real> _primary_activity_coefficients;
99
101 const std::vector<Real> _reactions;
102
104 std::vector<unsigned int> _primary_var_num;
105
107 std::vector<const VariableValue *> _primary;
108
109 // Old values of the mineral species concentrations
111
113 std::vector<Real> _mineral_sat;
114
116 std::vector<bool> _bounded_rate;
117
120
123
125 const std::vector<Real> _r_area;
126
128 const std::vector<Real> _molar_volume;
129
131 const std::vector<Real> _ref_kconst;
132
134 const std::vector<Real> _e_act;
135
137 const Real _gas_const;
138
141
143 const std::vector<Real> _theta_exponent;
144
146 const std::vector<Real> _eta_exponent;
147
149 std::vector<const VariableValue *> _initial_conc;
150};
Material designed to form a std::vector of mass fractions of mineral concentrations from primary-spec...
std::vector< unsigned int > _primary_var_num
The variable number of the primary variables.
const std::vector< Real > _r_area
Reactive surface area (m^2/L) for each reaction.
const unsigned int _num_primary
Number of primary species.
const MaterialProperty< std::vector< Real > > & _sec_conc_old
std::vector< bool > _bounded_rate
Whether the reaction rate has to be bounded in order that the precipitate stays inside [0,...
const Real _one_over_ref_temp
1/reference_temperature (1/K)
void findZeroConcentration(unsigned &zero_conc_index, unsigned &zero_count) const
Checks gamp[i] = _primary_activity_coefficients[i] * (*_primary[i])[qp].
std::vector< const VariableValue * > _primary
Values of the primary species' concentrations (dimensionless)
const std::vector< Real > _ref_kconst
Rate constant (mol/(m^2 s)) at reference temperature for each reaction.
const MaterialProperty< std::vector< Real > > & _dtemperature_dvar
d(temperature)/(d porflow variable)
const Real _gas_const
Gas constant (J/(mol K))
MaterialProperty< std::vector< Real > > & _reaction_rate
Reaction rate of mineralisation.
const unsigned int _aq_ph
Aqueous phase number.
const MaterialProperty< std::vector< Real > > & _saturation
Saturation.
std::vector< const VariableValue * > _initial_conc
Initial values of the secondary species concentrations.
const std::vector< Real > _reactions
Stoichiometry defining the aqeuous geochemistry equilibrium reactions.
const MaterialProperty< Real > & _porosity_old
Old values of the porosity.
Real stoichiometry(unsigned reaction_num, unsigned primary_num) const
The stoichiometric coefficient.
virtual Real dQpReactionRate_dT(unsigned reaction_num) const
Computes derivative of the reaction rate with respect to the temperature.
const unsigned int _num_reactions
Number of equations in the aqueous geochemistry system.
const bool _equilibrium_constants_as_log10
Whether the equilibium constants are written in their log10 form, or in absolute terms.
virtual void computeQpReactionRates()
Compute the secondary-species concentration as defined by the chemistry Must be overridden by derived...
virtual void dQpReactionRate_dprimary(unsigned reaction_num, std::vector< Real > &drr) const
Computes derivative of the reaction rate with respect to the primary concentrations.
std::vector< const VariableValue * > _equilibrium_constants
Equilibrium constants (dimensionless)
const MaterialProperty< Real > & _temperature
Temperature.
const std::vector< Real > _eta_exponent
Eta exponent for the precipitation-dissolution for each reaction.
std::vector< Real > _mineral_sat
Mineral saturation ratio - a useful temporary variable during computeQpProperties.
const std::vector< Real > _primary_activity_coefficients
Activity coefficients for the primary species (dimensionless)
MaterialProperty< std::vector< std::vector< Real > > > & _dreaction_rate_dvar
d(reaction rate of mineralisation)/d(porous flow var)
const std::vector< Real > _theta_exponent
Theta exponent for the precipitation-dissolution for each reaction.
const std::vector< Real > _e_act
Activation energy (J/mol) for each reaction.
Real rateConstantQp(unsigned reaction_num) const
const unsigned _num_equilibrium_constants
Number of equilibrium_constants provided.
const std::vector< Real > _molar_volume
Molar volume (L/mol) for each secondary species.
Base class for all PorousFlow vector materials.