## 3 The Procedure of the Numerical Solution
### The Applied 18 Numerical Algorithms  
All the 18 numerical algorithms are already known. However, all of them (except perhaps the RK4) are generalized to the case of a space- and time-dependent diffusion coefficient for the first time here. Let us present immediately the formulas which are applied for Equation (8) or (9), as well as the references where the readers can find more details about them. We note that 14 of the used formulas are collected and applied in our previous paper [35] for the case when \(D\) depends only on space but not on time. The following two quantities will be extensively used:  
\[r_{i}^{n}=\frac{h}{C_{i}}\left(\frac{1}{R_{i,\;i-1}^{n}}+\frac{1}{R_{i,\;i+1}^{n }}\right)\;\text{and}\;\;A_{i}^{n}=\frac{h}{C_{i}}\left(\frac{u_{i-1}^{n}}{R_{i,\;i-1}^{n}}+\frac{u_{i+1}^{n}}{R_{i,\;i+1}^{n}}\right)\;,\;i=1,\ldots,N,\;n=0,\ldots,T\]  
The quantity \(r_{i}^{n}\) is similar to the mesh ratio \(r=\frac{Dh}{\Delta x^{2}}\), which is usually used in the case of Equation (1). The quantity \(A_{i}^{n}\) will convey information to the cell \(i\) from its neighbors. We will frequently employ the modified theta-formula:  
\[u_{i}^{n+1}=\frac{(1-r_{i}\;\theta)u_{i}^{n}+A_{i}}{1+r_{i}\;(1-\theta)}\;,\; \theta\in[0,\;\;1] \tag{10}\]  
which is thoroughly introduced and described in [38]. 1. The so-called unconditionally positive finite difference (UPFD) method is developed by [PERSON] and [PERSON] [39] for the linear diffusion-advection-reaction equation. In our case, the new values of the cell variables can be obtained from Equation (10) by the \(\theta=0\) substitution:  
\[u_{i}^{n+1}=\frac{u_{i}^{n}+A_{i}^{n}}{1+r_{i}^{n}} \tag{11}\]  
2. The simplest among our methods is the constant neighbor (CNe) algorithm [32]. The following formula is used:  
\[u_{i}^{n+1}=u_{i}^{n}e^{-\;r_{i}^{n}}+\frac{A_{i}^{n}}{r_{i}^{n}}\Big{(}1-e^{ -\;r_{i}^{n}}\Big{)} \tag{12}\]  
3. The two-stage CpC method [40] uses the CNe formula twice. The first stage is a fractional time step with length \(h/2\), where the new predictor values of \(u\) are calculated as follows:  
\[u_{i}^{\text{pred}}=u_{i}^{n}e^{-\;r_{i}^{n}/2}+\frac{A_{i}^{n}}{r_{i}^{n}} \Big{(}1-e^{-\;r_{i}^{n}/2}\Big{)}\]  
Note that in the second term on the r. h. s., the factor \(\frac{1}{2}\) cancels out from the fraction. The new values of the \(A\) quantities are calculated using these predictor values  
\[A_{i}^{\text{new}}=\frac{h}{C_{i}}\left(\frac{u_{i-1}^{\text{pred}}}{R_{i,\;i- 1}^{n}}+\frac{u_{i+1}^{\text{pred}}}{R_{i,\;i+1}^{n}}\right) \tag{13}\]  
and then, at the second stage, these are used in the full-length corrector step. The function values at the end of the time step are  
\[u_{i}^{n+1}=u_{i}^{n}e^{-\;r_{i}^{n}}+\frac{A_{i}^{\text{new}}}{r_{i}^{n}} \Big{(}1-e^{-\;r_{i}^{n}}\Big{)}\]  
Note that the resistances are taken into account only at the beginning of the time step, and they are updated only when a new time step begins. This tactic will be used in the case of the next methods, which are based on the so-called linear-neighbor approximation. 4. The linear-neighbor (LNe or LNe2) algorithm [32] consists of two stages. The first stage is actually a full predictor time step with the CNe scheme to calculate the \(u_{i}^{\text{pred}}\) values. Using them, we can calculate new \(A_{i}^{\text{new}}\) values:  
\[A_{i}^{\text{new}}=\frac{h}{C_{i}}\left(\frac{u_{i-1}^{\text{pred}}}{R_{i,\;i- 1}^{n}}+\frac{u_{i+1}^{\text{pred}}}{R_{i,\;i+1}^{n}}\right) \tag{14}\]Now, the corrector step uses the following formula:  
\[u_{i}^{n+1}=u_{i}^{n}e^{-\ r_{i}^{n}}+\bigg{(}A_{i}^{n}-\frac{A_{i}^{\text{new}}-A _{i}^{n}}{r_{i}^{n}}\bigg{)}\frac{1-e^{-\ r_{i}^{n}}}{r_{i}^{n}}+\frac{A_{i}^{ \text{new}}-A_{i}^{n}}{r_{i}^{n}} \tag{15}\]  
5-6. Based on the corrector values in Equation (15), one can first recalculate \(A_{i}^{\text{new}}\) again, and then repeat (15) to obtain new corrector values. This three-stage scheme is called the LNe3 method [32], which is still second order, but it is usually more accurate than the LNe2.