第4-2回 有限体積法の基礎(数値流束)[python]
今回は数値流束について計算のため、述べていきます。
改めして一次元で考えます。すると離散化した式は次のようになります。
$$ \frac{Q_{i}^{n+1}-Q_{i}^n}{\Delta t}+\frac{ ( \tilde{f} _{i+1/2}-
\tilde{f} _{i-1/2}) }{\Delta x}=0$$
今回考えるのは数値流束\(\tilde{f}_{i+1/2}\)についてです。この数値流束は下の図のようにセル間の値になります。

この数値流束の決め方には様々なものが提案されています。
今回は有名な一次精度風上差分を用います。
これは前進差分と後退差分を流れの向きに合わせて、選ぶ方法になります。
流れが上記の図のようにx軸を左から右向きに流れる場合は、風上側の値を流束とします。
$$\tilde{f}_{i+1/2}=f_i, \tilde{f} _{i-1/2}=f_{i-1} $$
逆に右から左に流れる場合は次のようになります。
$$ \tilde{f} _{i+1/2}=f_{i+1}, \tilde{f} _{i-1/2}=f_{i} $$
さて、Burgers方程式に向けて、流束が次の式で書ける場合について掘り下げていきます。
$$ f=\frac{u^2}{2}$$
まず、両隣の速度の平均値を用いて、流れの向きが正か負か判断します。
$$ \tilde{f} _{i+1/2} = \left\{\begin{array}{c} f_{i} \ \ (\frac{u_{i+1}+u_{i}}{2}\geq 0) \\ f_{i+1} \ \ (\frac{u_{i+1}+u_{i}}{2}<0) \end{array}\right.$$
さらに、この場合分けを一つの式にまとめると次のようになります。
$$ \tilde{f} _{i+1/2} = \frac{1}{4} [(u_{i+1}^2+u_{i}^2)-| u_{i+1}+u_{i}|(u_{i+1}-u_{i})]$$
\(\frac{u_{i+1}+u_{i}}{2}\geq 0\)の時にちゃんと計算できているか確認します。
$$ \tilde{f} _{i+1/2} = \frac{1}{4} [(u_{i+1}^2+u_{i}^2)-(u_{i+1}+u_{i})(u_{i+1}-u_{i})]$$
$$ ⇔\tilde{f} _{i+1/2}= \frac{1}{2} u_i^2=f_i$$
しっかり計算できています。
この結果をもとに \(\tilde{f} _{i+1/2}- \tilde{f} _{i-1/2} \) を計算します。
$$ \tilde{f} _{i+1/2}- \tilde{f} _{i-1/2} = \frac{1}{4} [(u_{i+1}^2+u_{i}^2)-| u_{i+1}+u_{i}|(u_{i+1}-u_{i})]\\- \frac{1}{4} [(u_{i}^2+u_{i-1}^2)-| u_{i}+u_{i-1}|(u_{i}-u_{i-1})] $$
$$=\frac{1}{4} [(u_{i+1}^2-u_{i-1}^2)-| u_{i+1}+u_{i}|(u_{i+1}-u_{i})+| u_{i}+u_{i-1}|(u_{i}-u_{i-1})] $$
以上でコードに落とし込める形になりました。
次回は、Burgers方程式について述べたのち,計算を行います。
by hide
参考文献 『流体力学の数値計算法』藤井孝蔵、東京大学出版会(1994)

にほんブログ村