mirror of
https://git.gfz-potsdam.de/naaice/tug.git
synced 2025-12-15 18:38:23 +01:00
699 lines
33 KiB
ReStructuredText
699 lines
33 KiB
ReStructuredText
.. Converted content of report from Hannes Signer and Philipp Ungrund
|
||
(https://www.cs.uni-potsdam.de/bs/teaching/docs/lectures/2023/tug-project.pdf)
|
||
|
||
Theoretical Foundations
|
||
=======================
|
||
|
||
This section describes the theoretical foundation underlying this research
|
||
project by answering questions about the background with the mathematical and
|
||
scientific equations, the goal of numerically solving these, and their use
|
||
cases. It also discusses discretization approaches to the equations that are
|
||
needed to calculate results digitally. [BAEHR19]_
|
||
|
||
Diffusion Equation
|
||
------------------
|
||
|
||
The diffusion equation builds the theoretical bedrock to this research project.
|
||
It is a parabolic partial differential equation that is applied in various
|
||
scientific fields. It can describe high-level movement of particles suspended in
|
||
a liquid or gaseous medium over time and space based on Brownian molecular
|
||
motion.
|
||
|
||
The derivation of the equation simply follows the conservation of mass theorem.
|
||
In the following, the derivation always refers to the one-dimensional case
|
||
first, but an extension to further dimensions is straightforward. First, let’s
|
||
imagine a long tube filled with a liquid or gaseous medium into which we add a
|
||
marker substance within a small volume element at the location x.
|
||
|
||
.. figure:: images/conservation_law.svg
|
||
|
||
Visualization of the law of mass conservation
|
||
|
||
The boundaries of the volume element are still permeable, so that mass transport
|
||
is possible. We refer to the difference of the substance entering and leaving
|
||
the volume element as the flux :math:`\Phi` and the concentration of the marker
|
||
substance at location :math:`x` at time :math:`t` as :math:`C`. According to the
|
||
conservation of mass, it is not possible for this to be created or destroyed.
|
||
Therefore, a change in concentration over time must be due to a change in flux
|
||
over the volume element. [LOGAN15]_ [SALSA22]_ Formally this leads to
|
||
|
||
.. _`mass conservation`:
|
||
|
||
.. math::
|
||
|
||
\frac{\partial C}{\partial t} + \frac{\partial \Phi}{\partial x} = 0.
|
||
|
||
Diffusion relies on random particle collisions based on thermal energy.
|
||
The higher the concentration of a substance, the higher the probability
|
||
of a particle collision. Fick’s first law describes this relationship as
|
||
follows
|
||
|
||
.. _`ficks law`:
|
||
|
||
.. math::
|
||
|
||
\Phi = -\alpha \cdot \frac{\partial C}{\partial x}.
|
||
|
||
The law states that the flux moves in the direction of decreasing concentration
|
||
[1]_, proportional to the gradient of the concentration in the spatial direction
|
||
and a diffusion coefficient :math:`\alpha`. In this context, the diffusion
|
||
coefficient represents a measure of the mobility of particles and is given in
|
||
the SI unit :math:`\frac{m^2}{s}`. Substituting `ficks law`_ into `mass
|
||
conservation`_ now yields the diffusion equation for the one-dimensional case,
|
||
which gives the temporal change of the concentration as a function of the
|
||
spatial concentration gradient
|
||
|
||
.. _`one dimensional PDE`:
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\frac{\partial C}{\partial t} - \frac{\partial}{\partial x}\left(\alpha \cdot \frac{\partial C}{\partial x}\right) = 0 \\
|
||
\frac{\partial C}{\partial t} = \alpha \cdot \frac{\partial^2 C}{\partial x^2}.
|
||
\label{eq:}
|
||
\end{aligned}
|
||
|
||
An extension to two dimensions is easily possible and gives
|
||
|
||
.. _`two dimensional PDE`:
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\frac{\partial C}{\partial t} = \alpha_x \cdot \frac{\partial^2 C}{\partial x^2} + \alpha_y \cdot \frac{\partial^2 C}{\partial y^2}.
|
||
\label{eq:pde_two_dimensional}
|
||
\end{aligned}
|
||
|
||
Since this equation now contains both a first order temporal and a
|
||
second order spatial derivative, it belongs to the group of partial
|
||
differential equations (PDE). In particular, the diffusion problem
|
||
belongs to the group of parabolic PDEs. With these, we describe the
|
||
evolution of the problem via a first-order time derivative.
|
||
[CHAPRA15]_ Furthermore, it describes diffusion under
|
||
the assumption of a constant diffusion coefficient in each direction.
|
||
Therefore, we distinguish once into the case of homogeneous but
|
||
anisotropic diffusion, where the diffusion coefficients are constant in
|
||
one spatial direction but may vary between them, and the case of
|
||
heterogeneous diffusion. In this case, the diffusion can also change
|
||
within one spatial direction. This distinction is important, because the
|
||
subsequent discretization of the problem for numerical solution differs
|
||
with respect to these two variants.
|
||
|
||
|
||
Numeric and Discretization
|
||
--------------------------
|
||
|
||
The solution of the diffusion equation described above can be solved
|
||
analytically for simple cases. For more complicated geometries or
|
||
heterogeneous diffusion behavior, this is no longer feasible. In order
|
||
to obtain sufficiently accurate solutions, various numerical methods are
|
||
available. Basically, we can distinguish between methods of finite
|
||
differences and finite elements. The former are mathematically easier to
|
||
handle, but limited to a simpler geometry, whereas the latter are more
|
||
difficult to implement, but can simulate arbitrarily complicated shapes.
|
||
[BAEHR19]_
|
||
|
||
Since this work is limited to the simulation of two-dimensional grids
|
||
with heterogeneous diffusion as the most complicated form, we restrict
|
||
ourselves to the application of finite differences and focus on a
|
||
performant computation.
|
||
|
||
There are in principle two methods for solving finite differences with
|
||
opposite approaches, as well as one method that uses both methods
|
||
equally – the so-called Crank-Nicolson (CRNI) method.
|
||
|
||
.. figure:: images/numeric_overview.svg
|
||
|
||
Methods of finite differences
|
||
|
||
The idea of finite differences is to replace the partial derivatives of
|
||
the PDE to be solved by the corresponding difference quotients for a
|
||
sufficiently finely discretized problem. Taylor’s theorem forms the
|
||
basis for this possibility. In essence, Taylor states that for a smooth
|
||
function [2]_ :math:`f: \mathbb{R} \rightarrow \mathbb{R}`, it is
|
||
possible to predict the function value :math:`f(x)` at one point using
|
||
the function value and its derivative at another point
|
||
:math:`a \in \mathbb{R}`. Formally we can write this as
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
f(x) =& f(a) + f'(a) (x-a) + \frac{f''(a)}{2!}(x-a)^2 + ... + \frac{f^{(n)}(a)}{n!}(x-a)^n + R_n\\
|
||
R_n =& \int_{a}^x \frac{(x-t)^n}{n!} f^{(n+1)}(t) dt.
|
||
\end{aligned}
|
||
|
||
:math:`R_n` denotes the residual term, which also indicates the error in
|
||
the case of premature termination of the series. An approximation of the
|
||
first derivative is now done simply by truncating the Taylor series
|
||
after the first derivative and transforming accordingly
|
||
[CHAPRA15]_. This leads to
|
||
|
||
.. _`first order approximation`:
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
f(x_{i+1}) =& f(x_i) + f'(x_i) (x_{i+1}-x_i) + R_1 \\
|
||
f'(x_{i}) =& \underbrace{\frac{f(x_{i+1}) - f(x_i)}{x_{i+1} - x_i}}_{\text{first order approximation}} - \underbrace{\frac{R_1}{x_{i+1} - x_i}}_{\text{truncation error}}.
|
||
\end{aligned}
|
||
|
||
The `first order approximation`_ shows a so-called forward finite difference
|
||
approximation in space, since we use the points at :math:`i` and :math:`i+1` for
|
||
the approximation of :math:`f'(x_i)`. Correspondingly, a backward and centered
|
||
finite difference approximation is possible applying the appropriate values.
|
||
|
||
For the approximation of higher derivatives, the combination of several
|
||
Taylor series expansions is possible. For example, we set up the
|
||
following two Taylor series to derive the centered approximation of the
|
||
second derivative
|
||
|
||
.. _`second order approximations`:
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
f(x_{i+1}) =& f(x_i) + f'(x_i) \underbrace{(x_{i+1} - x_i)}_{h} + \frac{f^{''}(x_i)}{2} \underbrace{(x_{i+1} - x_{i})^2}_{h^2} + R_2 \\
|
||
f(x_{i-1}) =& f(x_i) - f'(x_i) \underbrace{(x_{i-1} - x_i)}_{h} + \frac{f^{''}(x_i)}{2} \underbrace{(x_{i-1} - x_{i})^2}_{h^2} +R_2.
|
||
\end{aligned}
|
||
|
||
Adding [3]_ both `second order approximations`_ and rearranging them according to
|
||
the second derivative yields the corresponding approximation
|
||
|
||
|
||
.. _`second order approximation`:
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
f^{''}(x_i) = \frac{f(x_{i+1}) - 2\cdot f(x_i) + f(x_{i-1})}{h^2}.
|
||
\end{aligned}
|
||
|
||
Another possibility of the derivation for the second order approximation results
|
||
from the following consideration. The second derivation is just another
|
||
derivation of the first one. In this respect we can represent the second
|
||
derivative also as the difference of the approximation of the first derivative
|
||
[CHAPRA15]_. This results in the following representation, which after
|
||
simplification agrees with equation `second order approximation`_
|
||
|
||
.. _`first order derivative`:
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
f^{''}(x_i) = \frac{\frac{f(x_{i+1}) - f(x_i)}{h} - \frac{f(x_i) - f(x_{i-1})}{h}}{h}.
|
||
\label{eq:first_order_derivative}
|
||
\end{aligned}
|
||
|
||
The above equations are all related to a step size :math:`h`. Let us imagine a
|
||
bar, which we want to discretize by dividing it into individual cells.
|
||
|
||
.. figure:: images/discretization_1D.svg
|
||
|
||
Discretization of a one-dimensional surface
|
||
|
||
|
||
In the discretization, the step size :math:`h` would correspond to the distance
|
||
between the cell centers :math:`\Delta x`. Now, the question arises how to deal
|
||
with the boundaries? This question is a topic of its own, whereby numerous
|
||
boundary conditions exist. At this point, only the cases relevant to this work
|
||
will be presented. First, let us look at the problem intuitively and consider
|
||
what possible boundary conditions can occur. A common case is an environment
|
||
that is isolated from the outside world. That is, the change in concentration at
|
||
the boundary over time has to be zero. We can generalize this condition to the
|
||
*Neumann boundary condition*, where the derivative at the boundary is given. The
|
||
case of a closed system then arises with a derivative of zero, so that there can
|
||
be no flow across the boundary of the system. Thus, the Neumann boundary
|
||
condition for the left side yields the following formulation
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\text{Neumann condition for the left boundary:~} \frac{\partial C(x_{0-\frac{\Delta x}{2}}, t)}{\partial t} = g(t) \text{,~} t > 0.
|
||
\end{aligned}
|
||
|
||
The second common case is a constant boundary. Again, the case can be
|
||
generalized, this time to the so-called *Dirichlet boundary condition*. Here,
|
||
the function value of the boundary is given instead of its derivative. For the
|
||
example we can write this boundary condition as
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\text{Dirichlet condition for the left boundary:~} C(x_{0 - \frac{\Delta x}{2}}, t) = h(t) \text{, ~} t > 0.
|
||
\end{aligned}
|
||
|
||
In practise, constants are often used instead of time-dependent
|
||
functions. [LOGAN15]_ [CHAPRA15]_ [SALSA22]_
|
||
|
||
|
||
With this knowledge, we can now turn to the concrete implementation of
|
||
finite differences for the explicit and implicit scheme. Centered
|
||
differences are always used for the spatial component. Only in the time
|
||
domain we distinguish into forward (FTCS method) and backward (BTCS
|
||
method) methods, which influence the corresponding solution
|
||
possibilities and stability properties.
|
||
|
||
Explicit Scheme (FTCS)
|
||
~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
FTCS stands for *Forward Time, Centered Space* and is an explicit
|
||
procedure that can be solved iteratively. Explicit methods are generally
|
||
more accurate, but are limited in their time step, so that incorrectly
|
||
chosen time steps lead to instability of the method. Hoewever, there are
|
||
estimates, such as the Courant-Friedrich-Lewy stability conditions,
|
||
which gives the corresponding maximum possible time steps.
|
||
[CHAPRA15]_
|
||
|
||
The goal now is to approximate both sides of the `one dimensional PDE`_. As the
|
||
name of the method FTCS indicates, we use a forward approximation for the left
|
||
temporal component. For the right-hand side, we use a central approximation
|
||
using the `first order derivative`_. This results in the following approximation
|
||
for the inner cells (in the example the cells :math:`x_1`, :math:`x_2` and
|
||
:math:`x_3`) and a constant diffusion coefficient :math:`\alpha`
|
||
|
||
.. _`approximate first order diffusion`:
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\frac{C_i^{t+1}-C_i^t}{\Delta t}=\alpha \frac{\frac{C_{i+1}^t-C_i^t}{\Delta x}-\frac{C_i^t-C_{i-1}^t}{\Delta x}}{\Delta x}.
|
||
\label{eq:approx_first_order_diffusion}
|
||
\end{aligned}
|
||
|
||
By rearranging this equation according to the concentration value for the next
|
||
time step :math:``C_i^{t+1}`, we get
|
||
|
||
.. _`explicit scheme`:
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
C_i^{t+1} = C_i^t + \frac{\alpha \cdot \Delta t}{\Delta x^2} \left[C_{i+1}^t - 2C_i^t + C_{i-1}^t \right].
|
||
\label{eq:explicit_scheme}
|
||
\end{aligned}
|
||
|
||
At this point, it should be clear why this method is an explicit procedure. On
|
||
the right side of the `explicit scheme`_, there are only known quantities, so
|
||
that an explicit calculation rule is given. The basic procedure is shown in
|
||
Figure 4. In the case of an explicit procedure, we use the values of the
|
||
neighboring cells of the current time step to approximate the value of a cell
|
||
for the next time step.
|
||
|
||
.. figure:: images/explicit_scheme.svg
|
||
|
||
Illustration for using the existing values in the time domain (green) for approximation of the next time step (red)
|
||
|
||
|
||
As described above, the `explicit scheme`_ applies only to the inner cells. For
|
||
the edges we now have to differentiate between the already presented boundary
|
||
conditions of Dirichlet and Neumann. To do this, we look again at the
|
||
`approximate first order diffusion`_ and consider what would have to be changed
|
||
in the case of constant boundary conditions (Dirichlet). It quickly becomes
|
||
apparent that in the case of the left cell the value :math:`C_{i-1}` corresponds
|
||
to the constant value of the left boundary :math:`l` and in the case of the
|
||
right cell :math:`C_{i+1}` to the value of the right boundary :math:`r`. In
|
||
addition, the length difference between the cells is now no longer :math:`\Delta
|
||
x`, but only :math:`\frac{\Delta x}{2}`, as we go from the center of the cell to
|
||
the edge. For a given flux, the first derivative has to take this value. In our
|
||
case, this is approximated with the help of the difference quotient, so that
|
||
this is omitted in the case of a closed boundary (the flux is equal to zero) or
|
||
accordingly assumes a constant value. For the left-hand boundary, this results
|
||
in the following modifications, whereas the values for the right-hand boundary
|
||
can be derived equivalently
|
||
|
||
.. _`boundary conditions`:
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\text{Dirichlet for the left boundary:~}& \frac{C_0^{t+1}-C_0^t}{\Delta t}=\alpha \frac{\frac{C_{1}^t-C_0^t}{\Delta x}-\frac{C_0^t-l}{{\frac{\Delta x}{2}}}}{\Delta x}\\
|
||
&C_{0}^{t+1} = C_{0}^t + \frac{\alpha \Delta t}{\Delta x^2} \left [C_{1}^t - 3 C_0^t + 2l \right]\\
|
||
\text{Closed Neumann for the left boundary:~}& \frac{C_0^{t+1}-C_0^t}{\Delta t}=\alpha \frac{\frac{C_{1}^t-C_0^t}{\Delta x}-\cancelto{0}{l}}{\Delta x}\\
|
||
&C_{0}^{t+1} = C_{0}^t + \frac{\alpha \Delta t}{\Delta x^2} \left [C_1^t - C_0^t \right].
|
||
\label{eq:boundary_conditions}
|
||
\end{aligned}
|
||
|
||
Again, it is straightforward to extend the `explicit scheme`_ to the second
|
||
dimension, so that the following formula is simply obtained for the inner cells
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
C_{i,j}^{t+1} = C_{i,j}^t +& \frac{\alpha_x \cdot \Delta t}{\Delta x^2} \left[C_{i, j+1}^t - 2C_{i,j}^t + C_{i, j-1} \right] \\
|
||
+& \frac{\alpha_y \cdot \Delta t}{\Delta y^2} \left[C_{i+1, j}^t - 2C_{i,j}^t + C_{i-1, j} \right].
|
||
\end{aligned}
|
||
|
||
Here, it is important to note that the indices :math:`i` and :math:`j`
|
||
for the two-dimensional cases are now used as usual in the matrix
|
||
notation. That means :math:`i` marks the elements in x-direction and
|
||
:math:`j` in y-direction.
|
||
|
||
The previous equations referred to homogeneous diffusion coefficients, i.e. the
|
||
diffusion properties along a spatial direction are identical. However, we are
|
||
often interested in applications where different diffusion coefficients act in
|
||
each discretized cell. This extension of the problem also leads to a slightly
|
||
modified variant of our `one dimensional PDE`_, where the diffusion coefficient
|
||
now is also a function of the spatial component
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\frac{\partial C}{\partial t} = \frac{\partial}{\partial x}\left[\alpha(x) \frac{\partial C}{\partial x} \right].
|
||
\end{aligned}
|
||
|
||
For this case, the literature recommends discretizing the problem
|
||
directly at the boundaries of the grid cells, i.e. halfway between the
|
||
grid points [FROLKOVIC1990]_. If we
|
||
follow this scheme and approximate the first derivative for C at the
|
||
appropriate cell boundaries, we obtain the following expressions
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\begin{cases}
|
||
\alpha(x_{i+\frac{1}{2}}) \frac{\partial C}{\partial x}(x_{i+\frac{1}{2}}) = \alpha_{i+\frac{1}{2}} \left(\frac{C_{i+1} - C_i}{\Delta x}\right)\\
|
||
\alpha(x_{i-\frac{1}{2}}) \frac{\partial C}{\partial x}(x_{i-\frac{1}{2}}) = \alpha_{i-\frac{1}{2}} \left(\frac{C_{i} - C_{i-1}}{\Delta x}\right).
|
||
\end{cases}
|
||
\end{aligned}
|
||
|
||
With a further derivation we now obtain a spatially centered
|
||
approximation with
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\frac{\partial }{\partial x}\left(\alpha(x) \frac{\partial C}{\partial x} \right) \simeq& \frac{1}{\Delta x}\left[\alpha_{i+\frac{1}{2}}\left(\frac{C^t_{i+1}-C^t_i}{\Delta x}\right)-\alpha_{i-\frac{1}{2}}\left(\frac{C^t_i-C^t_{i-1}}{\Delta x}\right)\right] \\
|
||
\frac{C^{t+1}_{i}-C^t_i}{\Delta t}=& \frac{1}{\Delta x^2}\left[\alpha_{i+\frac{1}{2}} C^t_{i+1}-\left(\alpha_{i+\frac{1}{2}}+\alpha_{i-\frac{1}{2}}\right) C^t_i+\alpha_{i-\frac{1}{2}} C^t_{i-1}\right]\\
|
||
C^{t+1}_{i} =& C^t_i + \frac{\Delta t}{\Delta x^2} \left[\alpha_{i+\frac{1}{2}} C^t_{i+1}-\left(\alpha_{i+\frac{1}{2}}+\alpha_{i-\frac{1}{2}}\right) C^t_i+\alpha_{i-\frac{1}{2}} C^t_{i-1} \right].
|
||
\end{aligned}
|
||
|
||
The value for the inter-cell diffusion coefficients can be determined by
|
||
either the arithmetic or harmonic mean of both cells, with the harmonic
|
||
mean being preferred for the default case. Again, we can extend this
|
||
equation to two dimensions, resulting in the following iteration rule
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
C_{i, j}^{t+1}= & C_{i, j}^t+ \frac{\Delta t}{\Delta x^2}\left[\alpha_{i, j+\frac{1}{2}}^x C_{i, j+1}^t-\left(\alpha_{i, j+\frac{1}{2}}^x+\alpha_{i, j-\frac{1}{2}}^x\right) C_{i, j}^t+\alpha_{i, j-\frac{1}{2}}^x C_{i, j-1}^t \right]+ \\ & \frac{\Delta t}{\Delta y^2}\left[\alpha_{i+\frac{1}{2}, j}^y C_{i+1, j}^t-\left(\alpha_{i+\frac{1}{2}, j}^y+\alpha_{i-\frac{1}{2}, j}^y\right) C_{i, j}^t+\alpha_{i-\frac{1}{2}, j}^y C_{i-1, j}^t \right].
|
||
\end{aligned}
|
||
|
||
The corresponding equations for the boundary conditions can be derived
|
||
analogously to the homogeneous case (cf. `boundary conditions`_) by adjusting
|
||
the relevant difference quotients to the respective boundary condition. As
|
||
described initially, the FTCS procedure is accurate but not stable for each time
|
||
step. The Courant-Friedrichs-Lewy stability condition states that the time step
|
||
must always be less than or equal the following value
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\Delta t \leq \frac{\min (\Delta x^2, \Delta y^2)}{4 \cdot \max (\alpha^x, \alpha^y)}.
|
||
\end{aligned}
|
||
|
||
That is, the maximum time step is quadratically related to the
|
||
discretization and linearly to the maximum diffusion coefficient.
|
||
Especially for very fine-resolution grids, this condition has a
|
||
particularly strong effect on that required computing time. This is in
|
||
contrast to the implicit methods, which we will now look at in more
|
||
detail. Unlike the explicit methods, the implicit methods are
|
||
unconditionally stable.
|
||
|
||
Implicit Scheme (BTCS)
|
||
~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
The main difference to the explicit method is that the discretization is not
|
||
done at the time step :math:`t` as in the `approximate first order diffusion`_,
|
||
but now at the time step :math:`t+1`. Hence, the neighboring cells in the next
|
||
time step are used for the approximation of the middle cell.
|
||
|
||
.. figure:: images/implicit_scheme.svg
|
||
|
||
Illustration of the implicit method, where the values of the neighboring cells in the next time step are used for the approximation
|
||
|
||
|
||
The `approximate first order diffusion`_ thus changes to
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\frac{C_i^{t+1}-C_i^t}{\Delta t} & =\alpha \frac{\frac{C_{i+1}^{t+1}-C_i^{t+1}}{\Delta x}-\frac{C_i^{t+1}-C_{i-1}^{t+1}}{\Delta x}}{\Delta x} \\
|
||
& =\alpha \frac{C_{i-1}^{t+1}-2 C_i^{t+1}+C_{i+1}^{t+1}}{\Delta x^2}
|
||
\end{aligned}
|
||
|
||
Now there is no possibility to change the equation to :math:`C^{t+1}_i`
|
||
so that all values are given. That means :math:`C^{t+1}_i` is only
|
||
implicitly indicated. If we know put all known and unkown values on one
|
||
side each and define :math:`s_x = \frac{\alpha \Delta t}{\Delta x^2}`
|
||
for simplicity, we get the following expression
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
s_x \cdot C_{i+1}^{t+1} + (-1-s_x) \cdot C_i^{t+1} + s_x \cdot C_{i-1}^{t+1} &= -C_i^t.
|
||
\label{eq:implicit_inner_grid}
|
||
\end{aligned}
|
||
|
||
This applies only to the inner grid without boundaries. To derive the equations
|
||
for the boundaries, the reader can equivalently use the procedure from the FTCS
|
||
method with given `boundary conditions`_. Thus, for constant boundaries with the
|
||
values :math:`l` and :math:`r` for the left and right boundaries, respectively,
|
||
the following two equations are obtained
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\left(-1-3 s_x\right) \cdot C_0^{t+1}+s_x \cdot C_1^{t+1} &= -C_0^t - 2s_x \cdot l \\
|
||
s_x \cdot C_{n-1}^{t+1}+\left(-1-3 s_x\right) \cdot C_n^{t+1} &= -C_n^t - 2s_x \cdot r.
|
||
\end{aligned}
|
||
|
||
The question now arises how values from the next time step can be used for the
|
||
approximation. Here, the answer lies in the simultaneous solution of the
|
||
equations. Let’s look again at the example in Figure for conservation law and
|
||
establish the implicit equations for the same. We obtain the following system of
|
||
five equations and five unknowns
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\begin{cases}
|
||
\left(-1-3 s_x\right) \cdot C_0^{t+1}+s_x \cdot C_1^{t+1} &= -C_0^t - 2s_x \cdot l \\
|
||
s_x \cdot C_{2}^{t+1} + (-1-s_x) \cdot C_1^{t+1} + s_x \cdot C_{0}^{t+1} &= -C_1^t \\
|
||
s_x \cdot C_{3}^{t+1} + (-1-s_x) \cdot C_2^{t+1} + s_x \cdot C_{1}^{t+1} &= -C_2^t \\
|
||
s_x \cdot C_{4}^{t+1} + (-1-s_x) \cdot C_3^{t+1} + s_x \cdot C_{2}^{t+1} &= -C_3^t \\
|
||
s_x \cdot C_{3}^{t+1}+\left(-1-3 s_x\right) \cdot C_4^{t+1} &= -C_4^t - 2s_x \cdot r.
|
||
\end{cases}
|
||
\end{aligned}
|
||
|
||
If we transfer this system of equations to a matrix-vector system, we
|
||
get
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\begin{bmatrix}
|
||
-1-3s_x & s_x & 0 & 0 & 0 \\
|
||
s_x & -1-3s_x & s_x & 0 & 0 \\
|
||
0 & s_x & -1-3s_x & s_x & 0 \\
|
||
0 & 0 & s_x & -1-3s_x & s_x \\
|
||
0 & 0 & 0 & s_x & -1-3s_x
|
||
\end{bmatrix}
|
||
\cdot
|
||
\begin{bmatrix}
|
||
-C_0^{t+1}\\
|
||
-C_1^{t+1}\\
|
||
-C_2^{t+1}\\
|
||
-C_3^{t+1}\\
|
||
-C_4^{t+1}
|
||
\end{bmatrix}
|
||
=
|
||
\begin{bmatrix}
|
||
-C_0^t - 2s_x \cdot l \\
|
||
-C_1^t \\
|
||
-C_2^t \\
|
||
-C_3^t \\
|
||
-C_4^t - 2s_x \cdot r
|
||
\end{bmatrix}.
|
||
\end{aligned}
|
||
|
||
This system can now be solved very efficiently, since it is a so-called
|
||
tridiagonal system. Very fast solution algorithms exist for this, such
|
||
as the Thomas algorithm.
|
||
|
||
In principle, this procedure can be extended again to the
|
||
two-dimensional case, but here no tridiagonal system arises any more, so
|
||
that the efficient solution algorithms are no longer applicable.
|
||
Therefore, one uses a trick and solves the equations in two half time
|
||
steps. In the first time step from :math:`t\rightarrow t+\frac{1}{2}`
|
||
one space direction is calculated implicitly and the other one
|
||
explicitly, whereas in the second time step from
|
||
:math:`t+\frac{1}{2} \rightarrow t+1` the whole process is reversed and
|
||
the other space direction is solved by the implicit method. This
|
||
approach is called the alternative-direction implicit method, which we
|
||
will now examine in more detail.
|
||
|
||
First, we consider the `two dimensional PDE`_ again, which represents the PDE
|
||
for diffusion in the two-dimensional case with homogeneous and anisotropic
|
||
diffusion coefficients. As explained in the upper sections, we can approximate
|
||
the second derivative for each spatial direction as follows
|
||
|
||
.. _`Taylor series`:
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\frac{\partial^2 C^t_{i, j}}{\partial x^2} =& \frac{C^t_{i, j-1} - 2C^t_{i,j} + C^t_{i, j+1}}{\Delta x^2} \label{eq:taylor_2_x}\\
|
||
\frac{\partial^2 C^t_{i, j}}{\partial y^2} =& \frac{C^t_{i-1, j} - 2C^t_{i,j} + C^t_{i+1, j}}{\Delta y^2}. \label{eq:taylor_2_y}
|
||
\end{aligned}
|
||
|
||
Explicit solution methods, as can be used in the one-dimensional case,
|
||
require smaller time steps to remain stable when applied to solve
|
||
two-dimensional problems. This leads to a significant increase in the
|
||
computational effort. Implicit techniques also require more
|
||
computational capacity, since the matrices can no longer be represented
|
||
tridiagonally in the two- or three-dimensional case and thus cannot be
|
||
solved efficiently. A solution to this problem is provided by the ADI
|
||
(alternating-direction implicit) scheme, which transforms
|
||
two-dimensional problems back into tridiagonal matrices. Here, each time
|
||
step is performed in two half-steps, each time solving implicitly in one
|
||
axis direction. [CHAPRA15]_ For the above equations,
|
||
the ADI scheme is defined as follows
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\begin{cases}
|
||
\frac{C_{i,j}^{t+\frac{1}{2}}-C_{i,j}^t}{\frac{\Delta t}{2}} = \alpha_x \cdot \frac{\partial^2 C_{i,j}^{t+\frac{1}{2}}}{\partial x^2} + \alpha_y \frac{\partial^2 C_{i,j}^t}{\partial y^2} \\
|
||
\frac{C_{i,j}^{t+1}-C_{i,j}^{t+\frac{1}{2}}}{\frac{\Delta t}{2}} = \alpha_x \cdot \frac{\partial^2 C_{i,j}^{t+\frac{1}{2}}}{\partial x^2} + \alpha_y \frac{\partial^2 C_{i,j}^{t+1}}{\partial y^2}
|
||
\end{cases}.
|
||
\label{eq:adi_scheme}
|
||
\end{aligned}
|
||
|
||
Now the `Taylor series`_ can be substituted into the equation and the term
|
||
:math:`\frac{\Delta t}{2}` can be placed on the right side of the equation. The
|
||
following expression is generated when introducing :math:`s_x = \frac{\alpha_x
|
||
\cdot \Delta t}{2 \cdot \Delta x^2}` and :math:`s_y = \frac{\alpha_y \cdot
|
||
\Delta t}{2 \cdot \Delta y^2}` as new variables
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
C_{i,j}^{t+\frac{1}{2}} - C_{i,j}^t &= s_x \cdot \left[~C_{i, j-1}^{t+\frac{1}{2}}-2 C_{i,j}^{t+\frac{1}{2}}+C_{i, j+1}^{t+\frac{1}{2}}\right] + s_y~ \cdot \left[~ C_{i-1, j}^t - 2\cdot C_{i,j}^t + C_{i+1,j}^t\right] \\
|
||
C_{i,j}^{t+1} - C_{i,j}^{t+\frac{1}{2}} &= s_x \cdot \left[C_{i, j-1}^{t+\frac{1}{2}}-2 C_{i,j}^{t+\frac{1}{2}}+C_{i, j+1}^{t+\frac{1}{2}}\right] + s_y \cdot ~\left[ C_{i-1, j}^{t+1} - 2\cdot C_{i,j}^{t+1} + C_{i+1,j}^{t+1}\right].
|
||
\end{aligned}
|
||
|
||
As it can be obtained by the following Figure the above equations are only valid
|
||
for the inner grid.
|
||
|
||
.. figure:: images/grid_with_boundaries_example.png
|
||
|
||
Example grid with boundary conditions
|
||
|
||
At the edge of
|
||
the grid, starting from the cell center, it is not possible to take a
|
||
full step :math:`dx`, but only a half step :math:`\frac{dx}{2}`.
|
||
Therefore, the approximation for the inner cells (shown as an example
|
||
for the x-direction)
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\frac{C_{i,j}^{t+1} - C_{i,j}^t}{\Delta t} = \frac{\frac{C_{i, j+1}^{t+1} - C_{i,j}^{t+1}}{\Delta x} - \frac{C_{i, j}^{t+1} - C_{i, j-1}^{t+1}}{\Delta x}}{\Delta x} = \frac{C_{i, j+1}^{t+1} - 2 \cdot C_{i, j}^{t+1} + C_{i, j-1}^{t+1}}{\Delta x^2}
|
||
\end{aligned}
|
||
|
||
is no longer valid and we have to perform the same changes to the
|
||
boundary conditions as for the other methods by replacing the
|
||
corresponding concentration values or difference quotiens with the
|
||
respective boundary concentrations or fluxes depending on the boundary
|
||
condition (Neumann or Dirichlet).
|
||
|
||
We can now quickly introduce the ADI scheme for heterogeneous diffusion
|
||
by using the same discretization logic as for the FTCS procedure and
|
||
discretizing the points between cells.
|
||
|
||
This results in the following ADI scheme
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\begin{cases}
|
||
\frac{C_{i, j}^{t+\frac{1}{2}}-C_{i, j}^t}{\Delta \frac{t}{2}}= & \frac{1}{\Delta x^2}\left[\alpha_{i, j+ \frac{1}{2}} C_{i, j+1}^{t+ \frac{1}{2}}-\left(\alpha_{i, j+ \frac{1}{2}}+\alpha_{i, j- \frac{1}{2}}\right) C_{i, j}^{t+ \frac{1}{2}}+\alpha_{i, j-\frac{1}{2}} C_{i, j-1}^{t+\frac{1}{2}}\right]+ \\ & \frac{1}{\Delta y^2}\left[\alpha_{i+\frac{1}{2}, j} C_{i+1, j}^t-\left(\alpha_{i+\frac{1}{2}, j}+\alpha_{i-\frac{1}{2}, j}\right) C_{i, j}^t+\alpha_{i-\frac{1}{2}, j} C_{i-1, j}^t\right] \\
|
||
\frac{C_{i, j}^{t+1}-C_{i, j}^{t+\frac{1}{2}}}{\Delta \frac{t}{2}}= & \frac{1}{\Delta x^2}\left[\alpha_{i, j+\frac{1}{2}} C_{i, j+1}^{t+\frac{1}{2}}-\left(\alpha_{i, j+\frac{1}{2}}+\alpha_{i, j-\frac{1}{2}}\right) C_{i, j}^{t+\frac{1}{2}}+\alpha_{i, j-\frac{1}{2}} C_{i, j-1}^{t+\frac{1}{2}}\right]+ \\ & \frac{1}{\Delta y^2}\left[\alpha_{i+\frac{1}{2}, j} C_{i+1, j}^{t+1}-\left(\alpha_{i+\frac{1}{2}, j}+\alpha_{i-\frac{1}{2}, j}\right) C_{i, j}^{t+1}+\alpha_{i-\frac{1}{2}, j} C_{i-1, j}^{t+1}\right].
|
||
\end{cases}
|
||
\end{aligned}
|
||
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\begin{cases}
|
||
-s_x \alpha_{i, j+\frac{1}{2}}^x C_{i, j+1}^{t+\frac{1}{2}}+\left(1+s_x\left(\alpha_{i, j+\frac{1}{2}}^x+\alpha_{i, j-\frac{1}{2}}^x\right)\right) C_{i, j}^{t+\frac{1}{2}}-s_x \alpha_{i, j-\frac{1}{2}}^x C_{i, j-1}^{t+\frac{1}{2}}= \\ s_y \alpha_{i+\frac{1}{2}, j}^y C_{i+1, j}^t+\left(1-s_y\left(\alpha_{i+\frac{1}{2}, j}^y+\alpha_{i-\frac{1}{2}, j}^y\right)\right) C_{i, j}^t+s_y \alpha_{i-\frac{1}{2}, j}^y C_{i-1, j}^t\\
|
||
-s_y \alpha_{i+\frac{1}{2}, j}^y C_{i+1, j}^{t+1}+\left(1+s_y\left(\alpha_{i+\frac{1}{2}, j}^y+\alpha_{i-\frac{1}{2}, j}^y\right)\right) C_{i, j}^{t+1}-s_y \alpha_{i-\frac{1}{2}, j}^y C_{i-1, j}^{t+1}= \\ s_x \alpha_{i, j+\frac{1}{2}}^x C_{i, j+1}^{t+\frac{1}{2}}+\left(1-s_x\left(\alpha_{i, j+\frac{1}{2}}^x+\alpha_{i, j-\frac{1}{2}}^x\right)\right) C_{i, j}^{t+\frac{1}{2}}+s_x \alpha_{i, j-\frac{1}{2}}^x C_{i, j-1}^{t+\frac{1}{2}}.
|
||
\end{cases}
|
||
\end{aligned}
|
||
|
||
|
||
Rearranging the terms according to known and unknown quantities gives us again
|
||
the scheme as in the one-dimensional case and allows us to set up a tridiagonal
|
||
system for each row of the grid. We also have to take into account that the ADI
|
||
method always requires two calculation steps for each complete time step.
|
||
However, since the implicit method is unconditionally stable, it shows its
|
||
adavantage especially with larger time steps. The basic procedure of the ADI
|
||
scheme with the two time steps is shown here:
|
||
|
||
.. figure:: images/adi_scheme.svg
|
||
|
||
Illustration of the iterative procedure in the ADI process
|
||
|
||
Crank-Nicolson method
|
||
---------------------
|
||
|
||
Another implicit method is the Crank-Nicolson (CRNI) method, which uses both
|
||
forward and backward approximations. As this method does not represent a main
|
||
goal of this work, it is only briefly mentioned here. Essentially, the
|
||
Crank-Nicolson method averages the two finite differences variants at the
|
||
corresponding point. For the one-dimensional case this results in
|
||
|
||
.. math::
|
||
|
||
\begin{aligned}
|
||
\frac{C^{t+1}_i - C_i^{t}}{\Delta t} = \frac{1}{2} \cdot \left[\frac{C^{t}_{i+1} - 2C^t_i + C_{i+1}^t}{\Delta x^2} + \frac{C^{t+1}_{i+1} - 2C_i^{t+1} + C_i^{t+1}}{\Delta x^2} \right].
|
||
\end{aligned}
|
||
|
||
By transforming the terms accordingly, it is also possible to generate a
|
||
tridiagonal matrix, as in the BTCS method, which can be solved very
|
||
efficiently with the Thomas algorithm. [CHAPRA15]_
|
||
Like the BTCS method, CRNI is unconditionally stable, but becomes
|
||
inaccurate if the time steps are too large. Compared to the FTCS and
|
||
BTCS methods, which have a temporal truncation error of
|
||
:math:`\mathcal{O}(\Delta t)`, the CRNI method with an error of
|
||
:math:`\mathcal{O}(\Delta t^2)` has an advantage and should be preferred
|
||
for time-accurate solutions.
|
||
|
||
.. [LOGAN15] Logan, J. David. Applied Partial Differential Equations.
|
||
Undergraduate Texts in Mathematics. Cham: Springer International
|
||
Publishing, 2015. https://doi.org/10.1007/978-3-319-12493-3.
|
||
|
||
.. [SALSA22] Salsa, Sandro, and Gianmaria Verzini. Partial Differential
|
||
Equations in Action. Vol. 147. UNITEXT. Cham: Springer
|
||
International Publishing, 2022.
|
||
https://doi.org/10.1007/978-3-031-21853-8.
|
||
|
||
.. [CHAPRA15] Chapra, Steven C., and Raymond P. Canale. Numerical Methods for
|
||
Engineers, 2015.
|
||
|
||
|
||
.. [BAEHR19] Baehr, Hans Dieter, and Karl Stephan. Wärme- Und Stoffübertragung.
|
||
Berlin, Heidelberg: Springer Berlin Heidelberg, 2019.
|
||
https://doi.org/10.1007/978-3-662-58441-5.
|
||
|
||
.. [FROLKOVIC1990] Frolkovič, Peter. “Numerical Recipes: The Art of Scientific
|
||
Computing.” Acta Applicandae Mathematicae 19, no. 3 (June
|
||
1990): 297–99. https://doi.org/10.1007/BF01321860.
|
||
|
||
.. [1]
|
||
The minus sign ensures that the direction of the flux follows the
|
||
decrease in concentration.
|
||
|
||
.. [2]
|
||
A function is called smooth if it is arbitrarily often
|
||
differentiable.
|
||
|
||
.. [3]
|
||
The remainder term is not considered further at this point, but is
|
||
:math:`\mathcal{O}(h^2)` in the centered variant. Thus, the centered
|
||
variant is more accurate than the forward or backward oriented
|
||
method, whose errors can be estimated with :math:`\mathcal{O}(h)`.
|
||
[CHAPRA15]_
|