工学系大学院生のブログ

2人の大学院生による雑記ブログ

第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)

このエントリーをはてなブックマークに追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

トラックバックURL: https://teru-hide.com/cfd-flux-for-coding-fvm/trackback/
にほんブログ村 英語ブログへ
にほんブログ村