21 "Weight of equilibrium species concentration in the primary species concentration");
23 "log_k", 0.0,
"Equilibrium constant of the equilibrium reaction in dissociation form");
26 "Stoichiometric coef of the primary species this kernel "
27 "operates on in the equilibrium reaction");
29 "gamma_u", 1.0,
"Activity coefficient of primary species that this kernel operates on");
31 "sto_v", {},
"The stoichiometric coefficients of coupled primary species");
32 params.
addCoupledVar(
"v",
"List of coupled primary species in this equilibrium species");
33 params.
addCoupledVar(
"gamma_v", 1.0,
"Activity coefficients of coupled primary species");
34 params.
addCoupledVar(
"gamma_eq", 1.0,
"Activity coefficient of this equilibrium species");
41 _diffusivity(getMaterialProperty<Real>(
"diffusivity")),
42 _weight(getParam<Real>(
"weight")),
43 _log_k(coupledValue(
"log_k")),
44 _sto_u(getParam<Real>(
"sto_u")),
45 _sto_v(getParam<
std::vector<Real>>(
"sto_v")),
46 _vars(coupledIndices(
"v")),
47 _vals(coupledValues(
"v")),
48 _grad_vals(coupledGradients(
"v")),
49 _gamma_u(coupledValue(
"gamma_u")),
50 _gamma_v(isCoupled(
"gamma_v")
51 ? coupledValues(
"gamma_v")
53 &coupledValue(
"gamma_v"))),
54 _gamma_eq(coupledValue(
"gamma_eq"))
60 mooseError(
"The number of stoichiometric coefficients in sto_v is not equal to the number of "
61 "coupled species in ",
66 mooseError(
"The number of activity coefficients in gamma_v is not equal to the number of "
67 "coupled species in ",
76 for (
unsigned int i = 0; i <
_vals.size(); ++i)
79 RealGradient diff2_sum(0.0, 0.0, 0.0);
81 for (
unsigned int i = 0; i <
_vals.size(); ++i)
87 for (
unsigned int j = 0; j <
_vals.size(); ++j)
94 mooseAssert(
_gamma_eq[
_qp] > 0.0,
"Activity coefficient must be greater than zero");
102 RealGradient diff1_1 =
106 for (
unsigned int i = 0; i <
_vals.size(); ++i)
112 RealGradient diff1 = diff1_1 + diff1_2;
115 RealGradient diff2_sum(0.0, 0.0, 0.0);
116 for (
unsigned int i = 0; i <
_vals.size(); ++i)
121 for (
unsigned int j = 0; j <
_vals.size(); ++j)
136 if (
_vals.size() == 0)
145 for (
unsigned int i = 0; i <
_vals.size(); ++i)
147 if (jvar ==
_vars[i])
156 RealGradient diff2_1(1.0, 1.0, 1.0);
157 RealGradient diff2_2(1.0, 1.0, 1.0);
159 for (
unsigned int i = 0; i <
_vals.size(); ++i)
160 if (jvar ==
_vars[i])
170 RealGradient diff2 = val_u * (diff2_1 + diff2_2);
172 for (
unsigned int i = 0; i <
_vals.size(); ++i)
173 if (jvar !=
_vars[i])
177 RealGradient diff3_sum(0.0, 0.0, 0.0);
179 unsigned int var = 0;
181 for (
unsigned int i = 0; i <
_vals.size(); ++i)
182 if (jvar ==
_vars[i])
189 for (
unsigned int i = 0; i <
_vals.size(); ++i)
196 for (
unsigned int j = 0; j <
_vals.size(); ++j)
197 if (j != var && j != i)
registerMooseObject("ChemicalReactionsApp", CoupledDiffusionReactionSub)
unsigned int coupledComponents(const std::string &var_name) const
virtual bool isCoupled(const std::string &var_name, unsigned int i=0) const
Diffusion of primary species in given equilibrium species.
const VariableValue & _gamma_eq
Activity coefficient of equilibrium species.
const std::vector< Real > _sto_v
Stoichiometric coefficients of the coupled primary species.
const VariableValue & _log_k
Equilibrium constant for the equilibrium species in association form.
const Real _sto_u
Stoichiometric coefficient of the primary species.
const VariableValue & _gamma_u
Activity coefficient of primary species in the equilibrium species.
const std::vector< const VariableValue * > _vals
Coupled primary species concentrations.
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
const MaterialProperty< Real > & _diffusivity
Material property of dispersion-diffusion coefficient.
const Real _weight
Weight of the equilibrium species concentration in the total primary species concentration.
const std::vector< const VariableValue * > _gamma_v
Activity coefficients of coupled primary species in the equilibrium species.
virtual Real computeQpJacobian() override
static InputParameters validParams()
virtual Real computeQpResidual() override
const std::vector< const VariableGradient * > _grad_vals
Coupled gradients of primary species concentrations.
const std::vector< unsigned int > _vars
Coupled primary species variable numbers.
CoupledDiffusionReactionSub(const InputParameters ¶meters)
const VariableGradient & _grad_u
const VariablePhiValue & _phi
static InputParameters validParams()
const VariablePhiGradient & _grad_phi
const VariableTestGradient & _grad_test
void mooseError(Args &&... args) const
const std::string & _name
VariableValueTempl< false > VariableValue