mirror of
https://git.gfz-potsdam.de/naaice/tug.git
synced 2025-12-14 09:58:22 +01:00
104 lines
2.6 KiB
Org Mode
104 lines
2.6 KiB
Org Mode
#+TITLE: Adi Scheme
|
|
|
|
* Input
|
|
|
|
- =c= $\rightarrow c$
|
|
- containing current concentrations at each grid cell for species
|
|
- size: $N \times M$
|
|
- row-major
|
|
- =alpha= $\rightarrow \alpha$
|
|
- diffusion coefficient for both directions (x and y)
|
|
- size: $N \times M$
|
|
- row-major
|
|
- =boundary_condition= $\rightarrow bc$
|
|
- Defines closed or constant boundary condition for each grid cell
|
|
- size: $N \times M$
|
|
- row-major
|
|
|
|
* Internals
|
|
|
|
- =A_matrix= $\rightarrow A$
|
|
- coefficient matrix for linear equation system implemented as sparse matrix
|
|
- size: $((N+2)\cdot M) \times ((N+2)\cdot M)$ (including ghost zones in x direction)
|
|
- column-major (not relevant)
|
|
|
|
- =b_vector= $\rightarrow b$
|
|
- right hand side of the linear equation system
|
|
- size: $(N+2) \cdot M$
|
|
- column-major (not relevant)
|
|
- =x_vector= $\rightarrow x$
|
|
- solutions of the linear equation system
|
|
- size: $(N+2) \cdot M$
|
|
- column-major (not relevant)
|
|
|
|
* Calculation for $\frac{1}{2}$ timestep
|
|
|
|
** Symbolic addressing of grid cells
|
|
[[./grid.png]]
|
|
|
|
** Filling of matrix $A$
|
|
|
|
- row-wise iterating with $i$ over =c= and =\alpha= matrix respectively
|
|
- addressing each element of a row with $j$
|
|
- matrix $A$ also containing $+2$ ghost nodes for each row of input matrix $\alpha$
|
|
- $\rightarrow offset = N+2$
|
|
- addressing each object $(i,j)$ in matrix $A$ with $(offset \cdot i + j, offset \cdot i + j)$
|
|
|
|
*** Rules
|
|
|
|
$s_x(i,j) = \frac{\alpha(i,j)*\frac{t}{2}}{\Delta x^2}$ where $x$ defining the domain size in x direction.
|
|
|
|
For the sake of simplicity we assume that each row of the $A$ matrix is addressed correctly with the given offset.
|
|
|
|
**** Ghost nodes
|
|
|
|
$A(i,-1) = 1$
|
|
|
|
$A(i,N) = 1$
|
|
|
|
**** Inlet
|
|
|
|
$A(i,j) = \begin{cases}
|
|
1 & \text{if } bc(i,j) = \text{constant} \\
|
|
-1-2*s_x(i,j) & \text{else}
|
|
\end{cases}$
|
|
|
|
$A(i,j\pm 1) = \begin{cases}
|
|
0 & \text{if } bc(i,j) = \text{constant} \\
|
|
s_x(i,j) & \text{else}
|
|
\end{cases}$
|
|
|
|
** Filling of vector $b$
|
|
|
|
- each elements assign a concrete value to the according value of the row of matrix $A$
|
|
- Adressing would look like this: $(i,j) = b(i \cdot (N+2) + j)$
|
|
- $\rightarrow$ for simplicity we will write $b(i,j)$
|
|
|
|
|
|
|
|
|
|
*** Rules
|
|
|
|
**** Ghost nodes
|
|
|
|
$b(i,-1) = \begin{cases}
|
|
0 & \text{if } bc(i,0) = \text{constant} \\
|
|
c(i,0) & \text{else}
|
|
\end{cases}$
|
|
|
|
$b(i,N) = \begin{cases}
|
|
0 & \text{if } bc(i,N-1) = \text{constant} \\
|
|
c(i,N-1) & \text{else}
|
|
\end{cases}$
|
|
|
|
*** Inlet
|
|
|
|
$p(i,j) = \frac{\Delta t}{2}\alpha(i,j)\frac{c(i-1,j) - 2\cdot c(i,j) + c(i+1,j)}{\Delta x^2}$[fn:1]
|
|
|
|
$b(i,j) = \begin{cases}
|
|
bc(i,j).\text{value} & \text{if } bc(i,N-1) = \text{constant} \\
|
|
-c(i,j)-p(i,j) & \text{else}
|
|
\end{cases}$
|
|
|
|
[fn:1] $p$ is called =t0_c= inside code
|