モデリングと数値計算(主に化学工学向け)

化学反応、移動現象のモデリングと数値計算の話

管内流れの1次元移流拡散方程式

はじめに

管内の移流・拡散を対象として次の移流拡散方程式を導出し、数値計算する。


\displaystyle{
\frac{\partial c}{\partial t} = -u \frac{\partial c}{\partial x} + D \frac{\partial^2 c}{\partial x^2}
}

導出

以前の記事で導いた移流方程式および拡散方程式を組み合わせればよい。

移流方程式:


\displaystyle{
\frac{\partial c}{\partial t} = - u \frac{\partial c}{\partial x}
}

拡散方程式:


\displaystyle{
\frac{\partial c}{\partial t} = D \frac{\partial^2 c}{\partial x^2}
}

移流拡散方程式:


\displaystyle{
\frac{\partial c}{\partial t} = - u \frac{\partial c}{\partial x} + D \frac{\partial^2 c}{\partial x^2}
}

差分近似による数値解法

まず微小距離を \Delta x、微小時間を \Delta t とし、位置 xと時刻 t を次の形で表すこととする。


x_i = i \times \Delta x, \quad t_j = j \times \Delta t

ここで ij は整数とする。濃度 c は位置 xと時刻 t の関数であるが、c_{i, j} は次を意味するものとする。


c_{i, j} = f(x_i, t_j) = f(i\Delta x, j\Delta t)

このとき偏微分の差分法による近似式は次の形で表される。


\begin{aligned}
\frac{\partial c}{\partial t} &\fallingdotseq \frac{c_{i, j+1} - c_{i, j}}{\Delta t} \\
\frac{\partial c}{\partial x} &\fallingdotseq \frac{c_{i+1, j} - c_{i, j}}{\Delta x} \\
\frac{\partial^2 c}{\partial x^2} &\fallingdotseq \frac{c_{i+1, j} -2c_{i, j} + c_{i-1, j}}{(\Delta x)^2}
\end{aligned}

これら近似式を1次元移流拡散方程式に代入して整理すると次の形となる。この式および初期・境界条件からcの値を順次算出していくことができる。


\displaystyle{
c_{i, j+1} = c_{i, j} - \frac{(\Delta t) u}{\Delta x} (c_{i+1,j} - c_{i,j}) + \frac{(\Delta t) D}{(\Delta x)^2} (c_{i+1, j} - 2 c_{i, j} + c_{i-1, j})
}

計算例

管長さを0.1 m、空塔速度  u 4\times 10^{-5} m/s、拡散係数  D 1\times 10^{-7} m2/sとし、初期・境界条件を以下とする。

初期条件:


\displaystyle{
c = 0 \quad at \quad x \lt 0.02,\ 0.025 \lt x \\
c = 1 \quad at \quad 0.02 \leqq x \leqq 0.025
}

境界条件:


\displaystyle{
c = 0 \quad at \quad x = 0,\ x = 0.1
}

Pythonを用いて計算した (ソースコード)。結果は下記グラフとなる (時間の単位は秒)。濃度分布が左右に広がりながら、かつ分布の中心が右に動いていく様子が見て取れる。

f:id:schemer1341:20210123230140p:plain:w450