Appendix A Solution Theory
For the biological and physical interpretation of the model, it is important that biomass densities and substrate concentrations remain nonnegative throughout and that the volume fraction of particulate biomass is bounded from above by unity. That the solutions of (1) have these properties, in particular the latter, is not obvious. To elucidate this, solutions of (1) are understood as weak solutions in the sense of distributions. Existence of solutions for boundary data
$$\begin{aligned} \left\{ \begin{array}{l} \partial _nI=\partial _nA=\partial _nB=\partial _nN=\partial _nC= \partial _nS=0,\ \text{ at } \ x=0,L~\text{ and } ~y=0\\ I=A=B=0,\ \text{ at } \ y=H\\ N+\lambda \partial _nN=N_{\infty },~~C+\lambda \partial _nC=C_{\infty },~~S+\lambda \partial _nS=0\ ~ \text{ at }~~~y=H \end{array} \right. \end{aligned}$$
(3)
and initial data
$$\begin{aligned} \left\{ \begin{array}{l} A(0,\cdot ) =A_0, \quad B(0,\cdot ) =B_0, \quad I(0,\cdot ) =I_0, \\ \\ N(0,\cdot ) =N_0, \quad C(0,\cdot ) =C_0, \quad S(0,\cdot ) =S_0 \\ \\ A_0, B_0, I_0, C_0, S_0, N_0 \in L^\infty (\Omega ) \\ \\ \Vert A_0+B_0+I_0 \Vert _{L^\infty (\Omega )} =1 -\delta _0 <1 \\ \\ 0\le C \le C_\infty , \quad 0\le N_0\le N_\infty , \quad 0\le S_0 \end{array}\right. \end{aligned}$$
(4)
where \(0<\delta _0 <1\), can be proven using the same arguments as in Demaret et al. (2008) for a simpler model with antibiotics without QS up-regulation of resistance, and in Khassehkhan et al. (2009a, b) and Muhammad and Eberl (2011) for two multi-species biofilm models. Existence and uniqueness of solutions has been proven for a model of quorum sensing induction in biofilms in Sonner et al. (2011), where the existence part in Sonner et al. (2011) follows the same line of argumentation as Demaret et al. (2008), but the uniqueness result relies on special properties of the reaction terms of the QS model that was studied there. While the QS sub-model of system (1), i.e., the model without antibiotic exposure, has the same properties, the reaction terms of the antibiotic sub-model prevent the application of these ideas. We point out, however, that there is no proof of non-uniqueness either. We have
Theorem A.1
The system (1) with boundary conditions (3) and initial conditions (4) possesses a solution in the sense of distributions in \(L^\infty (\mathbb {R}_+ \times \Omega ) \times L^\infty (\mathbb {R}_+ \times \Omega ) \times L^\infty (\mathbb {R}_+\times \Omega ) \times L^\infty (\mathbb {R}_+ \times \Omega ) \times L^\infty (\mathbb {R}_+ \times \Omega ) \times L^\infty (\mathbb {R}_+ \times \Omega )\). This solution satisfies almost everywhere \(A \ge 0\), \(B\ge 0\), \(I\ge 0\) and \(A+B+I<1\), as well as \(0\le C\le C_\infty \), \(0\le N\le N_\infty \), \(0\le S\).
We refer for the technical details of the procedure to Demaret et al. (2008), Khassehkhan et al. (2009a, b), Muhammad and Eberl (2011), Sonner et al. (2011). The key arguments in the formal proof are a regularization of the biomass diffusion coefficient, i.e., D(M) in (1) is first replaced by
$$\begin{aligned} D_\epsilon (M):=\left\{ \begin{array}{lll} d\epsilon ^a &{} \quad \text{ if } &{} M <0,\\ d\frac{(M+\epsilon )^a}{(1-M)^b} &{} \quad \text{ if } &{} 0 \le M\le 1-\epsilon , \\ d\epsilon ^{-b} &{} \quad \text{ if } &{} M>1-\epsilon , \end{array}\right. \end{aligned}$$
for some \(\epsilon >0\). The resulting regularized system is a non-degenerate quasilinear parabolic system, the existence of solutions of which follows with standard arguments, e.g., those in Ladyženskaja et al. (1968). It can then be shown that the solutions converge as \(\epsilon \rightarrow 0\) and that this limit is indeed a weak solution in the distributional sense of (1). Boundedness of biomass, \(M=A+B+I<1\), is hereby obtained by constructing an upper bound that is a solution to the underlying single-species growth model, for which boundedness by unity has been shown by Efendiev et al. (2009). Positivity of I, A, B is shown with standard comparison theorems. Hence, each individual biomass component is bounded by unity as well. The upper and lower bounds on the dissolved substrates follow from standard comparison theorems.
The boundary conditions (3) differ from (2) for the components I, A, B at the top boundary \(y=H\). Note, however, that where the biofilm/water interface does not reach the boundary, solutions that satisfy the homogeneous Neumann condition also satisfy the homogeneous Dirichlet condition, i.e., the solution of (1) with (2) and the solutions of (1) with (3) are identical until the biofilm reaches the top boundary, where nutrients and antibiotics are added and autoinducers removed. The biofilm reaching the top boundary corresponds to the scenario where the domain is completely clogged up with biomass, at which point additional physical processes come into play that are not accounted for in the model, i.e., the model breaks down. Indeed, for the underlying biofilm growth model, it was shown by Efendiev et al. (2009) that under homogeneous Neumann conditions on the biomass everywhere, as in (2), solutions might only exist for \(0<t<T_\mathrm{end}\) for some finite \(T_\mathrm{end}\), after the interface has reached the boundary everywhere, and \(M(T_\mathrm{end},\cdot )=1\) almost everywhere. On the other hand, if somewhere along the boundary Dirichlet or Robin conditions are posed that keep the biomass density there below unity, then the solutions exist for all \(t>0\). Further to this, the simulation results will be overshadowed by non-physical boundary condition effects before this happens, as discussed in Eberl and Collinson 2009. Therefore, our numerical solutions will always stop long before this occurs, i.e., the existence proof for (1) with (3) covers our simulation periods, as our solutions satisfy both (3) and (2) simultaneously.
Appendix B Numerical Treatment
The two nonlinear diffusion effects (i) and (ii) described in Sect. 2.2 lead to two challenges for the numerical simulation: The biomass gradient blow-up at the biofilm-water interface \(\Gamma (t)\) is prone to introduce interface smearing effects or spurious oscillations, whereas the super-diffusion singularity of the biomass diffusion coefficient forces time-steps to be small in order to not overshoot the singularity, even for implicit methods. The method that we apply in our simulations is an extension to the model at hand of the method presented by Ghasemi and Eberl (2017a) for a similar model of quorum sensing in a biofilm, but without antibiotics, which in turn is an extension of a numerical method for the underlying prototype biofilm growth model that was introduced and analyzed previously (Ghasemi and Eberl 2017b). Spatial discretization is performed by a Finite Volume method on a uniform grid, whereas an error-controlled, time-adaptive Rosenbrock–Wanner method is used for time integration. It has been shown in Ghasemi and Eberl (2017a, b) that this method is able to address the numerical challenges stemming from (i) and (ii) described above and that it overcomes the shortcomings of fixed time-step methods that have been used previously for similar models (Khassehkhan et al. 2009; Muhammad and Eberl 2011).
For the numerical treatment, we non-dimensionalize the model (1) with choices \(\tilde{x}=x/L,~T=t\mu _A\) for the independent variables, here L is a characteristic length scale of the computational domain. Under our boundary conditions, the height of the domain is a measure for diffusion length. \(\frac{1}{\mu _A}\) is the characteristic timescale for growth of biomass species A. The concentration variables N, C and S are non-dimensionalized as \(\tilde{N}=\frac{N}{N_{\infty }},~\tilde{C}=\frac{C}{C_0}\) and \(\tilde{S}=\frac{S}{\tau }\) where \(N_{\infty }\) is the bulk substrate concentration and \(C_0=\frac{\delta _A}{\mu _A}\). Note that the volume fractions I, A and B are already defined as dimensionless variables. With these choices, the new model parameters are defined as:
$$\begin{aligned} \left\{ \begin{array}{lll} \tilde{\beta _A}=\frac{\beta _A}{\mu _A},~\tilde{\beta _B}=\frac{\beta _B}{\mu _A},~ \tilde{\omega }=\frac{\omega }{\mu _A},~\tilde{\psi }=\frac{\psi }{\mu _A},~\tilde{k}_A=\frac{k_A}{\mu _A},~\tilde{k}_B=\frac{k_B}{\mu _A}\\ \tilde{\mu }_B=\frac{\mu _B}{\mu _A},~\tilde{K}_{{N}}=\frac{K_{{N}}}{N_{\infty }},~\tilde{K}_{{C}}=\frac{K_{{C}}}{C_0},~\tilde{\acute{K}}_{{C}}=\frac{\acute{K}_{{C}}}{C_0},~\tilde{\nu }_{A,B}=\frac{\nu _{A,B}}{\mu _A N_{\infty }}\\ \tilde{\delta _A}=\frac{\delta _A}{\mu _A C_{0}},~\tilde{\delta _B}=\frac{\delta _B}{\mu _A C_{0}},~ \tilde{\theta }=\frac{\theta }{\mu _A},~\tilde{\sigma _{0}}=\frac{\sigma _{0}}{\mu _A \tau },~\tilde{\mu _{{S}}}=\frac{\mu _{{S}}}{\mu _A \tau }\\ \tilde{\sigma _{{S}}}=\frac{\sigma _{{S}}}{\mu _A \tau },~\tilde{\gamma }=\frac{\gamma }{\mu _A},~\tilde{D}(M)=\frac{D(M)}{L^2 \mu _A},~\tilde{D}_{{N}}(M)=\frac{D_{{N}}(M)}{L^2 \mu _A}\\ \tilde{D}_{{C}}(M)=\frac{D_{{C}}(M)}{L^2 \mu _A},~\tilde{D}_{{S}}(M)=\frac{D_{{S}}(M)}{L^2 \mu _A} \end{array}\right. \end{aligned}$$
(5)
The non-dimensionalized equations read:
$$\begin{aligned} \left\{ \begin{array}{llll} \dfrac{\partial I}{\partial T}&{}=&{}\tilde{\nabla }(\tilde{D}(M)\tilde{\nabla } I) &{}+\tilde{\beta _A}\dfrac{\tilde{C}^{n_1} A}{\tilde{K}_{{C}}^{n_1}+\tilde{C}^{n_1}}+\tilde{\beta _B}\dfrac{\tilde{C}^{n_1} B}{\tilde{K}_{{C}}^{n_1}+\tilde{C}^{n_1}}\\ \dfrac{\partial A}{\partial T}&{}=&{}\tilde{\nabla }(\tilde{D}(M)\tilde{\nabla } A) &{}+\dfrac{\tilde{N}A}{\tilde{K}_{{N}}+\tilde{N}}-\tilde{\beta _A}\dfrac{\tilde{C}^{n_1} A}{\tilde{K}_{{C}}^{n_1}+\tilde{C}^{n_1}} \\ &{}&{}&{}+\tilde{\psi }\dfrac{B}{1+\tilde{S}^{n_2}}-\tilde{\omega }\dfrac{\tilde{S}^{n_2} A}{1+\tilde{S}^{n_2}}-\tilde{k}_AA\\ \dfrac{\partial B}{\partial T}&{}=&{}\tilde{\nabla }(\tilde{D}(M)\tilde{\nabla } B)&{}+\tilde{\mu }_{B}\dfrac{\tilde{N}B}{\tilde{K}_{{N}}+\tilde{N}}-\tilde{\beta _B}\dfrac{\tilde{C}^{n_1} B}{\tilde{K}_{{C}}^{n_1}+\tilde{C}^{n_1}}\\ &{}&{}&{}-\tilde{\psi }\dfrac{B}{1+\tilde{S}^{n_2}}+\tilde{\omega }\dfrac{\tilde{S}^{n_2} A}{1+\tilde{S}^{n_2}}-\tilde{k}_BB\\ \dfrac{\partial \tilde{N}}{\partial T}&{}=&{}\tilde{\nabla }(\tilde{D}_{{N}}(M)\tilde{\nabla } \tilde{N}) &{}-\tilde{\nu }_{A}\dfrac{\tilde{N}A}{\tilde{K}_{{N}}+\tilde{N}}-\tilde{\nu }_{B}\dfrac{\tilde{N}B}{\tilde{K}_{{N}}+\tilde{N}}\\ \dfrac{\partial \tilde{C}}{\partial T}&{}=&{}\tilde{\nabla }(\tilde{D}_{{C}}(M)\tilde{\nabla } \tilde{C})&{}-\tilde{\delta _A}\dfrac{\tilde{C}^{n_1} A}{\tilde{K}_{{C}}^{n_1}+\tilde{C}^{n_1}}-\tilde{\delta _B}\dfrac{\tilde{C}^{n_1}B}{\tilde{K}_{{C}}^{n_1}+\tilde{C}^{n_1}}-\tilde{\theta } C\\ \dfrac{\partial \tilde{S}}{\partial T}&{}=&{}\tilde{\nabla }(\tilde{D}_{{S}}(M)\tilde{\nabla } \tilde{S}) &{} +(A+B)\left[ \tilde{\sigma }_0+\tilde{\mu }_{{S}}\dfrac{\tilde{C}}{\tilde{\acute{K}}_{{C}}+\tilde{C}}\right] \\ &{}&{}&{}+\tilde{\sigma }_{{S}}\dfrac{\tilde{S}^{n_2}}{1+\tilde{S}^{n_2}}B-\tilde{\gamma } S, \end{array} \right. \end{aligned}$$
(6)
Although we use the non-dimensional formulation for the numerical treatment, we will make our choices of parameters based on the dimensional values, and describe our subsequent simulation experiments in terms of those, for easier biological and physical interpretation. Going forward, we will drop the tilde from our notation in (6).
For spatial discretization, we introduce a uniform grid of size \(N \times M\) for the rectangular domain \([0,1]\times [0,H/L]\) and integrate each equation of system (6) over each grid cell. For instance, integrating the equation for A over grid cell with index (i, j) and using the Divergence Theorem gives
$$\begin{aligned} \frac{d}{dt}\int \limits _{v_{i,j}}A~\mathrm{d}x~\mathrm{d}y=\int \limits _{\partial v_{i,j}}J_nds +\int \limits _{v_{i,j}}R_{1_{A}}(N,C,S)A~\mathrm{d}x~\mathrm{d}y+\int \limits _{v_{i,j}}R_{2_{A}}(S)B~\mathrm{d}x~\mathrm{d}y, \end{aligned}$$
(7)
for \(i=1,\ldots ,N\) and \(j=1,\ldots ,M\), where \(v_{i,j}\) denotes the domain of the grid cell, \(J_n = D(M)\partial _nA\) represents the outward normal flux across the grid cell boundary, and \(R_{1_{A}}(N,C,S)=\frac{N}{K_{N}+N}-\beta _A\frac{C^{n_1}}{K_{{C}}^{n_1}+C^{n_1}}-\omega \frac{S^{n_2} }{1+S^{n_2}}-k_A\) and \(R_{2_{A}}(S)=\psi \frac{1}{1+S^{n_2}}\) stand for the reaction terms.
To evaluate the area integrals in (7), we evaluate the dependent variables at the center of the grid cells,
$$\begin{aligned} A_{i,j}(t):=A(t,x_i,y_j)\approx A\left( t,\left( i-\frac{1}{2}\right) \Delta x,\left( j-\frac{1}{2}\right) \Delta x\right) \end{aligned}$$
(8)
for \(i=1,\ldots ,N\) and \(j=1,\ldots ,M\) with \(\Delta x=1/N=H/LM\); the value of all other dependent variables at the center of the grid cells can be evaluated in a similar way. We approximate the integrals in (7) by the midpoint rule, and similarly the line integral is evaluated by considering every edge of the grid cell separately. To this end, the diffusion coefficient D(M) in the midpoint of the cell edge is approximated by arithmetic averaging from the neighboring grid cell center points, and the derivative of A across the cell edge by a central finite difference. We get then for the biomass fraction A in cell (i, j) the ordinary differential equation
$$\begin{aligned} \frac{d}{dt}A_{i,j}=\frac{1}{\Delta x} \left( J_{i+\frac{1}{2},j}+J_{i-\frac{1}{2},j}+J_{i,j+\frac{1}{2}}+J_{i,j-\frac{1}{2}}\right) + R_{1_{A_{i,j}}}A_{i,j}+R_{2_{A_{i,j}}}B_{i,j}, \end{aligned}$$
(9)
where \(R_{1_{A_{i,j}}}=\frac{N_{i,j}}{K_{N}+N_{i,j}}-\beta _A\frac{C_{i,j}^{n_1}}{K_{{C}}^{n_1}+C_{i,j}^{n_1}}-\omega \frac{S_{i,j}^{n_2} }{1+S_{i,j}^{n_2}}-k_A\) and \(R_{2_{A_{i,j}}}=\psi \frac{1}{1+S_{i,j}^{n_2}}\) and for the fluxes we have, accounting for the boundary conditions,
$$\begin{aligned} J_{i,j+\frac{1}{2}}= & {} \left\{ \begin{array}{ll} \frac{1}{2\Delta x}\big (D(M_{i,j+1})+D(M_{i,j})\big )(A_{i,j+1}-A_{i,j}) &{} \text{ for }\quad j<M, \\ -\frac{2}{\Delta x} D(0) A_{i,M} &{} \text{ for }\quad j=M, \end{array}\right. \end{aligned}$$
(10)
$$\begin{aligned} J_{i,j-\frac{1}{2}}= & {} \left\{ \begin{array}{ll} 0 &{} \text{ for }\quad j=1,\\ \frac{1}{2\Delta x}\big (D(M_{i,j-1})+D(M_{i,j})\big )(A_{i,j-1}-A_{i,j}),&{} \text{ for }\quad j>1. \end{array}\right. \end{aligned}$$
(11)
$$\begin{aligned} J_{i+\frac{1}{2},j}= & {} \left\{ \begin{array}{ll} 0 &{} \text{ for }\quad i=N,\\ \frac{1}{2\Delta x}\big (D(M_{i+1,j})+D(M_{i,j})\big )(A_{i+1,j}-A_{i,j}) &{} \text{ for }\quad i<N, \\ \end{array}\right. \end{aligned}$$
(12)
$$\begin{aligned} J_{i-\frac{1}{2},j}= & {} \left\{ \begin{array}{ll} 0 &{} \text{ for }\quad i=1,\\ \frac{1}{2\Delta x}\big (D(M_{i-1,j})+D(M_{i,j})\big )(A_{i-1,j}-A_{i,j}) &{} \text{ for }\quad i>1, \end{array}\right. \end{aligned}$$
(13)
The spatial discretization of the equations for the other dependent variables B, I, N, C, S follows the same principle. The major difference is for the substrates for which we have a Robin boundary condition at the top of the domain instead of homogeneous Neumann condition. We refer the reader to Ghasemi and Eberl (2017b) for a detailed description of the changes to the discretization that this introduces.
Introducing the lexicographical grid ordering
$$\begin{aligned} \pi :\left\{ 1,\ldots ,N\right\} \times \left\{ 1,\ldots ,M\right\} \rightarrow \left\{ 1,\ldots ,NM\right\} ,~(i,j)\mapsto p=(j-1)N+i \end{aligned}$$
(14)
and the vector notation \(\mathbf I \!=\!(I_1,\ldots ,I_{NM})\), \(\mathbf A =(A_1,\ldots ,A_{NM})\), \(\mathbf B =(B_1,\ldots ,B_{NM})\), \(\mathbf N =(N_1,\ldots ,N_{NM})\), \(\mathbf C =(C_1,\ldots ,C_{NM})\) and \(\mathbf S =(S_1,\ldots ,S_{NM})\) with \((I,A,B,N,C, S)_{p}:=(I,A,B,N,C,S)_{\pi (i,j)}=(I,A,B,N,C,S)_{i,j}\) for \(i=1,\ldots ,N\), \(j=1,\ldots ,M\), yield the coupled system of \(6 \cdot N \cdot M\) ordinary differential equations
$$\begin{aligned} \frac{d}{dT}\left[ \begin{array}{c} \mathbf I \\ \mathbf A \\ \mathbf B \\ \mathbf N \\ \mathbf C \\ \mathbf S \end{array} \right]= & {} \left[ \begin{array}{c| c| c| c| c| c} D _I &{} &{} &{} &{} &{} \\ \hline &{} D _A&{} &{} &{} &{} \\ \hline &{} &{} D _B&{} &{} &{} \\ \hline &{} &{} &{} D _N &{} &{} \\ \hline &{} &{} &{} &{} D _C &{} \\ \hline &{} &{} &{} &{} &{} D _S \end{array} \right] \left[ \begin{array}{c} \mathbf I \\ \mathbf A \\ \mathbf B \\ \mathbf N \\ \mathbf C \\ \mathbf S \end{array} \right] \nonumber \\&+\left[ \begin{array}{c| c| c| c| c| c} \quad &{} R _{1_{I}} &{} R _{2_{I}} &{}\phantom { R _{1_{I}}} &{}\quad &{}\qquad \\ \hline \quad &{} R _{1_{A}}&{} R _{2_{A}} &{} \quad &{} \quad &{} \quad \\ \hline \quad &{} R _{1_{B}} &{} R _{2_{B}}&{} \quad &{}\quad &{} \quad \\ \hline \quad &{} R _{1_{N}} &{} R _{2_{N}} &{} \quad &{} \quad &{} \quad \\ \hline \quad &{} R _{1_{C}}&{} R _{2_{C}} &{} \quad &{} R _{3_{C}} &{} \quad \\ \hline \quad &{} R _{1_{S}} &{} R _{2_{S}} &{} \quad &{} \quad &{} R _{3_{S}}\end{array} \right] \left[ \begin{array}{c} \mathbf I \\ \mathbf A \\ \mathbf B \\ \mathbf N \\ \mathbf C \\ \mathbf S \end{array} \right] + \left[ \begin{array}{c} \mathbf b _I \\ \mathbf b _A \\ \mathbf b _B \\ \mathbf b _N \\ \mathbf b _C \\ \mathbf b _S \end{array} \right] \nonumber \\ \end{aligned}$$
(15)
Remark B.1
In ODE system (15), the matrices \( D _{I,A,B,N,C,S}\) are block matrices of size \(NM \times NM\) that depend on the dependent variables \(\mathbf I,A,B \). They are symmetric, and weakly diagonally dominant with non-positive main diagonals and nonnegative off-diagonals and contain the spatial derivative terms of each equation. They can efficiently be stored in sparse diagonal format with 4 off-diagonals, with offsets \(\pm 1, \pm N\). The matrices \( R _{{1,2}_{(I,A,B,N,C,S)}}\) are diagonal matrices of size \(NM \times NM\) which contain the reaction terms of each equation. The vectors \(\mathbf b _{I,A,B,N,C,S}\) are of size NM and contain contributions from the imposed boundary conditions for each biomass species and dissolved substrates. By the posed boundary conditions for biomass species, the entries of \(\mathbf b _{I,A,B}\) are zero [note that this would be different if Robin conditions were posed instead, as in (3)]. For substrates due to the Robin boundary conditions at the top, the entries \(\mathbf b _{N,C,S}\) are zero for all grid cells (i, j) with \(j<M\), and for \(j=M\) are obtained from the boundary conditions. With these properties, it is easy to show with standard comparison theorems that the solutions of (15) are nonnegative if the initial data are, cf. Ghasemi and Eberl (2017a, b). Boundedness of the biomass densities, \(\mathbf M =\mathbf A +\mathbf B +\mathbf I <1\), can be shown for sufficiently small spatial step-sizes by constructing an upper bound using a discretized version of the underlying growth model, cf. Ghasemi and Eberl (2017a).
For the time integration of the semi-discrete system (15), we use the time-adaptive, error-controlled embedded Rosenbrock–Wanner method ROS3PRL, which was introduced by Rang (2013). It has been shown in Ghasemi and Eberl (2017a) that this method, together with the above Finite Volume discretization is able to proceed with efficient time-steps for models of this type. While intermittently very small time-steps might be required to meet accuracy requirements of the method, previous experience has shown that it will recover quickly, to values much larger than would be required by fixed time-step methods. It also has been demonstrated in Ghasemi and Eberl (2017a) that the spatial resolution that is required for a sufficiently accurate resolution of the interface, without numerical smearing, is acceptable. The spatial resolution chosen in our simulations is based on a grid refinement study (data not shown), and has been determined as an acceptable trade-off between accuracy and computational cost.
The embedded Rosenbrock–Wanner method requires in each time-step the solution of several sparse, large, non-symmetirc linear systems, for which we use the stabilized bi-conjugate gradient method (Saad 1994; Van der Vorst 1992). The numerical method has been implemented in Fortran 95. OpenMP was used for the parallelization of selected computationally expensive tasks, such as the linear solver and the formation of the Jacobian matrix within the Rosenbrock–Wanner method, and for the evaluation of nonlinear reaction terms. All simulations reported here have been carried out on custom built multi-core and multi-processor Linux desktop workstations.