Let us consider a multi-species multi-reaction model with \(I\!\in \!{\mathbb {N}}\) mobile (dissolved) species \(X_i\) and \(J\!\in \!{\mathbb {N}}\) kinetic reactions among the mobile species, as well as \(M\) mineral species \(Y_j\) and mineral reactions. The vector of the mobile species concentrations is denoted by \(\varvec{c}_{\mathrm {aq}}=(c_{\mathrm {aq},1},\ldots ,c_{\mathrm {aq},I})^\mathrm{{T}}\) and the vector of the mineral species concentrations by \(\varvec{c}_{\mathrm {min}} = (c_{\mathrm {min},1},\ldots ,c_{\mathrm {min},M})^\mathrm{{T}}\). The aqueous reactions and the precipitation–dissolution reactions are
$$\begin{aligned} \begin{array}{lcll} \sum \limits _{i=1}^I \, {\underline{\sigma }}_{{i,j}} \, X_i &{} \longleftrightarrow &{} \sum \limits _{i=1}^I \, {\overline{\sigma }}_{{i,j}} X_i\,,\quad &{} j=1,\ldots ,J, \\ \sum \limits _{i=1}^I \, {\underline{\tau }}_{{i,j}} \, X_i &{} \longleftrightarrow &{} Y_j + \sum \limits _{i=1}^I \, {\overline{\tau }}_{{i,j}} \, X_i \,,\quad &{} j=1,\ldots ,M\,. \\ \end{array} \end{aligned}$$
We assume that all the stoichiometric coefficients \({\underline{\sigma }}_{{ij}}\), \({\overline{\sigma }}_{{ij}}\), \({\underline{\tau }}_{{ij}}\), \({\overline{\tau }}_{{ij}}\) are nonnegative integers, and we set
$$\begin{aligned} \begin{array}{ll} s_\mathrm{{ij}}:={\overline{\sigma }}_{{ij}}-{\underline{\sigma }}_{{ij}}\,, &{} \quad \varvec{S}_{\mathrm {aq}}:=(s_{{ij}})\in {\mathbb {Z}}^{I,J}\,, \\ s_{\mathrm {min},ij}:={\overline{\tau }}_{{ij}}-{\underline{\tau }}_{{ij}}\,, &{} \quad \varvec{S}_{\mathrm {min}}:=(s_{\mathrm {min},ij})\in {\mathbb {Z}}^{I,M}\,. \end{array} \end{aligned}$$
We denote the aqueous reaction rates and the mineral reaction rates by \(r_{\mathrm {aq},j}\), \(j\!=\!1,\ldots ,I\), and \(r_{\mathrm {min},j}\), \(j\!=\!1,\ldots ,M\). The mass balance equations for the advection-diffusion-reaction problem then read
$$\begin{aligned}&\partial _t (\Phi \,c_{\mathrm {aq},i}) + \nabla ( -\Phi \, d\, \nabla c_{\mathrm {aq},i} + \varvec{q}\,c_{\mathrm {aq},i} ) \nonumber \\&\quad = \Phi \sum \limits _{j=1}^I s_{ij}\,r_{\mathrm {aq},j}(\varvec{c}_{\mathrm {aq}}) + \sum \limits _{j=1}^M s_{\mathrm {min},ij}\,\partial _t c_{\mathrm {min},j}(\varvec{c}_{\mathrm {aq}}) \nonumber \\&\quad = \Phi \! \sum \limits _{j=1}^I \!s_{ij} r_{\mathrm {aq},j}(\varvec{c}_{\mathrm {aq}}) + \!\sum \limits _{j=1}^M \!s_{\mathrm {min},ij} A_{j}(c_{\mathrm {min},j}) r_{\mathrm {min},j}(\varvec{c}_{\mathrm {aq}}), \end{aligned}$$
(5)
\(i\!=\!1,\ldots ,I\), with porosity \(\Phi \), and where (1) was implemented. If we want to take into account the evolution of the porous medium, we have to do this in the specific surface (e.g., by (2)), but equally one should take into account that the porosity is evolving with
$$\begin{aligned} \Phi =\Phi (\varvec{c}_{\mathrm {min}})=\Phi _0-\sum _{j=1}^M \rho _j^{-1}\,c_{\mathrm {min},j}\,, \end{aligned}$$
(6)
where \(\rho _j\) are the molar densities of the pure minerals. This volume balance can be deduced from deriving the equations from upscaling by periodic homogenization [25, 30] and is also used in [1], for one precipitation reaction only. Note that clogging may be possible but is not to be considered here; we focus on situations where mineral amounts change between zero and small positive amounts. Note that the assumption (6) leads to a back coupling of the reaction regime to the Darcy flow field \(\varvec{q}\).
Our model with reaction rate vectors \(\varvec{r}_{\mathrm {aq}}\) for the aqueous reactions and \(\varvec{r}_{\mathrm {min}}\) for the mineral precipitation–dissolution reactions then reads
$$\begin{aligned}&\partial _t (\Phi \varvec{c}_{\mathrm {aq}}) + \varvec{L}\, \varvec{c}_{\mathrm {aq}} = \Phi \varvec{S}_{\mathrm {aq}} \varvec{r}_{\mathrm {aq}}(\varvec{c}_{\mathrm {aq}}) + \varvec{S}_{\mathrm {min}} \partial _t \varvec{c}_{\mathrm {min}} \quad \text{ on } Q_T, \end{aligned}$$
(7)
$$\begin{aligned}&\partial _t \varvec{c}_{\mathrm {min}} = \varvec{A}(\varvec{c}_{\mathrm {min}})\,\varvec{r}_{\mathrm {min}}(\varvec{c}_{\mathrm {aq}},\varvec{w}) \quad \text{ on } Q_T, \end{aligned}$$
(8)
$$\begin{aligned}&\varvec{w} \in H(\varvec{c}_{\mathrm {min}}) \quad \text{ on } Q_T, \end{aligned}$$
(9)
$$\begin{aligned}&\varvec{c} (\cdot ,0) = \varvec{c}_0\quad \text{ on } {{\overline{\Omega }}}, \end{aligned}$$
(10)
$$\begin{aligned}&\varvec{c}_{\mathrm {min}} (\cdot ,0) = \varvec{c}_{\mathrm {min},0}\quad \text{ on } {{\overline{\Omega }}} \end{aligned}$$
(11)
on a domain \(\Omega \!\subset \!{\mathbb {R}}^n\), with \(\Omega _T\!=\!(0,T)\!\times \!\Omega \), \(\varvec{c}\), \(\varvec{c}_{\mathrm {min}}\!\ge \!\varvec{0}\) (componentwise) and with some boundary conditions for \(\varvec{c}_{\mathrm {aq}}\) not specified here. In the following (cf. (12)–(18)), we will explain all the terms in our system (7)–(11). For an explanation of the entity, \(\varvec{w}\) see (18) and the subsequent text.
In (7), \(\varvec{L}=(L_1,\ldots ,L_I)^{\mathrm{{T}}}\) stands for an operator modeling diffusion/dispersion and advection, such as
$$\begin{aligned} L_ic_{\mathrm {aq},i}=\nabla \cdot (-d\,\Phi \,\nabla c_{\mathrm {aq},i} + \varvec{q}\, c_{\mathrm {aq},i})\,. \end{aligned}$$
(12)
The product of vectors is meant componentwise, i.e., \((\varvec{A}\,\varvec{r}_{\mathrm {min}})_j = \varvec{A}_j\,\varvec{r}_{\mathrm {min},j}\), \(j=1,\ldots ,M\). As motivated in Sect. 1, we want to consider the surface model
$$\begin{aligned} A_i(c_{\mathrm {min},i}) = A_{0,i}\,c_{\mathrm {min},i}^{2/3}\,. \end{aligned}$$
(13)
For what follows in the next chapters, it turns out that we may generalize this assumption to
$$\begin{aligned} A_i(c_{\mathrm {min},i}) = A_{0,i}\,c_{\mathrm {min},i}^{\alpha _i} \end{aligned}$$
with \(\alpha _i\!\ge \!0\) and \(A_{0,i}\!>\!0\). The case \(\alpha _i\!=\!0\) corresponds to the constant surface
$$\begin{aligned} A_i(c_{\mathrm {min},i}) = \text{ const } = A_{0,i} \,, \end{aligned}$$
(14)
and for \(\alpha _i\!\ge \!1\), the law (15) is locally Lipschitz continuous. We are mainly interested in the case
$$\begin{aligned} A_i(c_{\mathrm {min},i}) = A_{0,i}\,c_{\mathrm {min},i}^{\alpha _i} \,, \quad 0<\alpha _i<1\,, \end{aligned}$$
(15)
(in particular, the case \(\alpha _i\!=\!\frac{2}{3}\)) where the term (15) is not locally Lipschitz continuous at \(c_{\mathrm {min},i}\!=\!0\).
The aqueous reaction reaction rates in (7)–(11) are assumed to follow the law of mass action (LMA) with—for the sake of simplicity—ideal activities:
$$\begin{aligned} r_{\mathrm {aq},j}(\varvec{c}_{\mathrm {aq}}) = k_{\mathrm {f},j} \prod _{i=1}^{I} c_{\mathrm {aq},i}^{\;{\underline{\sigma }}_{ij}} - k_{\mathrm {b},j} \prod _{i=1}^{I} c_{\mathrm {aq},i}^{\,{\overline{\sigma }}_{ij}}, \end{aligned}$$
(16)
\(j\!=\!1,\ldots ,J\), with \(k_{\mathrm {f},i},k_{\mathrm {b},i}\!\ge \!0\). The precipitation–dissolution reactions also follow the LMA, but with constant activity for the mineral species:
$$\begin{aligned} r_{\mathrm {min},j}(\varvec{c}_{\mathrm {aq}},w_j) = k_{\mathrm {p},j} \prod _{i=1}^{I} c_{\mathrm {aq},i}^{\;{\underline{\tau }}_{ij}} - k_{\mathrm {d},j} \prod _{i=1}^{I} c_{\mathrm {aq},i}^{\,{\overline{\tau }}_{ij}}\,w_j \;, \end{aligned}$$
(17)
\(j\!=\!1,\ldots ,M\), with precipitation and dissolution constants \(k_{\mathrm {p},i},k_{\mathrm {d},i} \!>\! 0\) and with \(w_j \!\in \! H(c_{\mathrm {min},j})\) with the Heaviside “function” or Heaviside graph
$$\begin{aligned} H(x) = \left\{ \begin{array}{cl} \{1\} \,, &{}\quad x>0, \\ {[0,1]} \,, &{}\quad x=0, \\ \{0\} \,, &{}\quad x<0\,. \end{array} \right. \end{aligned}$$
(18)
By this Heaviside term in (8)–(9), the dissolution of minerals is switched off whenever a mineral concentration impends to become negative. This is an established method to implement the nonnegativity of constant-activity species (e.g., [1, 9,10,11, 14, 15, 29]). In order to motivate this term, let us assume for a moment that we would replace \(r_{\mathrm {min},j}\) by
$$\begin{aligned} \rho _{\mathrm {min},j}(\varvec{c}_{\mathrm {aq}}) = k_{\mathrm {p},j} \prod _{i=1}^{I} c_{\mathrm {aq},i}^{\;{\underline{\tau }}_{ij}} - k_{\mathrm {d},j} \prod _{i=1}^{I} c_{\mathrm {aq},i}^{\,{\overline{\tau }}_{ij}} \; \end{aligned}$$
(19)
in (8), or, what is the same, to set \(w_j=1\), \(j=1,\ldots ,M\), instead of (9). Then, if the fluid is undersaturated with respect to some mineral, i.e., \(\rho _{\mathrm {min},j}(\varvec{c}_{\mathrm {aq}})<0\), and if the mineral concentration \(c_{\mathrm {min},j}\) is zero, then negative mineral concentrations would be imminent—at least if the surface area term is non-zero, cf. (14). However, thanks to the Heaviside term, any solution of (7)–(11) is nonnegative. A proof of nonnegativity of solutions for the case (14) is standard and can be found for example in [10, 29]; this proof easily carries over to non-constant surface laws like (15).
There are other established formulations to implement nonnegativity of mineral concentrations. One can replace (8)–(9) by a so-called complementarity formulation [11]
$$\begin{aligned} \begin{array}{l} \Big ( c_{ \mathrm {min},j}>0 \; \text{ and } \; \partial _t c_{ \mathrm {min},j} - A_j(c_{ \mathrm {min},j})\,\rho _{ \mathrm {min},j}(\varvec{c}_{ \mathrm {aq}})=0 \Big ) \\ \qquad \; \text{ or } \;\quad \Big ( c_{ \mathrm {min},j}=0 \; \text{ and } \; \partial _t c_{ \mathrm {min},j} - A_j(c_{ \mathrm {min},j})\,\rho _{ \mathrm {min},j}(\varvec{c}_{ \mathrm {aq}})\ge 0 \Big ), \end{array} \end{aligned}$$
(20)
\(j=1,\ldots ,M\). It is well known that a complementarity condition can be transformed into an equation (see, e.g., [4, 12] for the handling of mineral reactions at equilibrium),
$$\begin{aligned} \min \{ c_{\mathrm {min},j} , \partial _t c_{\mathrm {min},j} \!-\! A_j(c_{\mathrm {min},j})\rho _{\mathrm {min},j}(\varvec{c}_{\mathrm {aq}}) \} \!=\! 0\,. \end{aligned}$$
(21)
And another formulation can be found in [3]. An investigation in [10] showed that all these formulations are equivalent in some weak sense.
For the model with a constant surface, (14), i.e., (7)–(11), (14), (16)–(18), under the simplification of a constant porosity instead of (6), existence of a global solution in a certain function space was proven in [9, 10], provided that some mild assumption on the stoichiometry holds, uniqueness was proven in [10]. For a constant surface model restricted to one mineral reaction and without aqueous reactions, analysis (existence, uniqueness, convergence) can be found in [14, 15, 29], and such a model coupled to porosity and permeability changes is considered in [1]. For the model, we are mainly interested in, the model with the variable surface (15) in the specific form (7)–(11), (15)–(18); however, we could not find any mathematical analysis in the literature.
Let us discuss how a discretized version of the model could be solved numerically. While the Heaviside formulation (8)–(9) is well suited for analysis [1, 9, 10, 15, 29], we prefer the minimum formulation (21) for numerical solution. A discretization of (21) with the implicit Euler method reads
$$\begin{aligned} \begin{array}{lcl} f_j(\varvec{c}_{\mathrm {aq}},\varvec{c}_{\mathrm {min}}) &{} := &{} \min \{c_{\mathrm {min},j} \,,\, c_{\mathrm {min},j}\!-\!c_{\mathrm {min},\mathrm {old},j}\!-\!\Delta t\,A_j(c_{\mathrm {min},j})\rho _{\mathrm {min},j}(\varvec{c}_{\mathrm {aq}})\} \\ &{} = &{} c_{\mathrm {min},j} \!+\! \min \{0,-c_{\mathrm {min},\mathrm {old},j}\!-\!\Delta t\,A_j(c_{\mathrm {min},j})\rho _{\mathrm {min},j}(\varvec{c}_{\mathrm {aq}})\} \,=\, 0, \end{array} \end{aligned}$$
(22)
where the subscript “\(\mathrm {old}\)” for \(c_{\mathrm {min},\mathrm {old},j}\ge 0\) denotes values from the previous time step. While \(f_j\) is not very smooth (for the surface model (14), it has a kink where \(-c_{\mathrm {min},\mathrm {old},j}-\Delta t\,A_{0,j}\rho _{\mathrm {min},j}(\varvec{c}_{\mathrm {aq}})=0\)), it is well known that such equations can be solved with the so-called semismooth Newton method [4, 12]. From a practical viewpoint, the semismooth Newton method is in fact the same as the classical Newton method but applied to a “semismooth” function.Footnote 1 As for the classical Newton iteration, the semismooth Newton method is locally quadratic convergent for strongly semismooth functions—definitions [27] and proofs can be found in [6, Chapter 7].
Let us mention that other authors use the Heaviside formulation for discretization and apply a regularization to the discontinuous term [15] or event-driven algorithms detecting the moment when a trajectory meets a discontinuity [1]. We prefer to use the minimum formulation for discretization (21), (22) since it does not contain discontinuities.
In order to make (22) meaningful also for negative arguments \(c_{\mathrm {min},j}\) for exponents \(\alpha _j\!<\!1\) (this might be reasonable in view of Newton’s method, where iterates might be negative), we should discuss how to interpret a power with negative argument and fractional exponent. Let us define for the whole paper that
$$\begin{aligned} x^\alpha :=0\quad \text{ for } x\!<\!0 \text{ and } \alpha \!>\!0\,. \end{aligned}$$
(23)
This specific setting has another benefit. We have already pointed out that in general the Heaviside term, or, equivalently, the first of the two branches in (21) and in (22) is essential to avoid negative physically meaningless solutions. However, if we focus on the surface law (15) in combination with the setting (23), an adaptation of the nonnegativity proof in [10] shows that (8)–(9) might be simplified by setting \(w_j\equiv 1\) in our model, i.e., we may replace (8)–(9) byFootnote 2
$$\begin{aligned} \partial _t \varvec{c}_{\mathrm {min}} = \varvec{A}_0\, \varvec{c}_{\mathrm {min}}^{\,\varvec{\alpha }}\,\varvec{\rho }_{\mathrm {min}}(\varvec{c}_{\mathrm {aq}}) \end{aligned}$$
(24)
– but only for the variable surface model (15), and not for the constant surface model (14). Analogously, for the surface law (15) and with the setting (23) and using \(c_{\mathrm {min},\mathrm {old},j}\ge 0\), one can easily check that the first branch in (22) is dispensable and (22) may be replaced by
$$\begin{aligned} c_{\mathrm {min},j}\!-\!c_{\mathrm {min},\mathrm {old},j}\!-\!\Delta t\,A_{0,j}c_{\mathrm {min},j}^{\alpha _j}\rho _{\mathrm {min},j}(\varvec{c}_{\mathrm {aq}}) = 0\,. \end{aligned}$$