数学とか語学とか楽しいよね

フランス語、ドイツ語、ロシア語、アラビア語、オランダ語、英語、スペイン語、ラテン語とか数学とか数値計算(有限要素法、有限体積法、差分法、格子ボルツマン法、数理最適化、C++コード付き)とか勉強したことをまとめます。右のカテゴリーから興味のある記事を探してください。最近はクラシックの名演も紹介しています。noteにも書いています。https://note.mu/kumag_min

【Navier-Stokes方程式】MAC法によるNavier-Stokes方程式の離散化

今後キャビティー流れの計算をやりたいので、MAC法(Maker And Cell method)によるNavier-Stokes方程式の離散化について説明していきます。流速と圧力を直接未知数として計算する手法で陽解法です。

以下の内容は『流れ解析のための有限要素法』のpp.154-155を参考にしています。

流れ解析のための有限要素法入門

流れ解析のための有限要素法入門


簡単のため二次元直交座標系で考えます。まず保存型のNavier-Stokes方程式

 \displaystyle
\begin{eqnarray} 
\frac{\partial u}{\partial t} + \frac{\partial (u^2)}{\partial x} + \frac{\partial (uv)}{\partial y} &=& -\frac{\partial p}{\partial x} + \frac{1}{Re} \left( \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2}\right) \\
\frac{\partial v}{\partial t} + \frac{\partial (uv)}{\partial x} + \frac{\partial (v)^2}{\partial y} &=& -\frac{\partial p}{\partial y} + \frac{1}{Re} \left( \frac{\partial^2 v}{\partial x^2} + \frac{\partial^2 v}{\partial y^2}\right)
\end{eqnarray}

です。連続式は

 \displaystyle \frac{\partial u}{\partial x} + \frac{\partial v}{\partial y} = 0

です。Navier-Stokes方程式と連続式を以下のように時間に対して離散化します。

 \displaystyle
\begin{eqnarray} 
\frac{u^{n+1}-u^n}{\Delta t} + \frac{\partial (u^n)^2}{\partial x} + \frac{\partial (u^nv^n)}{\partial y} &=& -\frac{\partial p^n}{\partial x} + \frac{1}{Re} \left( \frac{\partial^2 u^n}{\partial x^2} + \frac{\partial^2 u^n}{\partial y^2}\right) \\
\frac{v^{n+1}-v^n}{\Delta t} + \frac{\partial (u^nv^n)}{\partial x} + \frac{\partial (v^n)^2}{\partial y} &=& -\frac{\partial p^n}{\partial y} + \frac{1}{Re} \left( \frac{\partial^2 v^n}{\partial x^2} + \frac{\partial^2 v^n}{\partial y^2}\right) \\
\frac{\partial u^{n+1}}{\partial x} + \frac{\partial v^{n+1}}{\partial y} &=& 0
\end{eqnarray}

次に1番目と2番目の式をn+1ステップでの流速について解いてそれらを3番目の式に代入すると

 \displaystyle
\begin{eqnarray} 
\frac{\partial^2 p^n}{\partial x^2} + \frac{\partial^2 p^n}{\partial y^2} &=& \frac{1}{\Delta t}  \left( \frac{\partial u^n}{\partial x} + \frac{\partial v^n}{\partial y} \right) -\frac{\partial^2 (u^n)^2}{\partial x^2} -2\frac{\partial^2 u^n v^n}{\partial x \partial y} -\frac{\partial^2 (v^n)^2}{\partial y^2} \\
&+& \frac{1}{Re} \left[ \frac{\partial^2}{\partial x^2} \left( \frac{\partial u^n}{\partial x} + \frac{\partial v^n}{\partial y} \right) + \frac{\partial^2}{\partial y^2} \left( \frac{\partial u^n}{\partial x} + \frac{\partial v^n}{\partial y} \right)  \right]
\end{eqnarray}

を得ます。 \frac{\partial u^n}{\partial x} + \frac{\partial v^n}{\partial y} は連続式から0であるはずですが、数値計算上誤差が生じるので残してあります。しかし、 \frac{\partial u^n}{\partial x} + \frac{\partial v^n}{\partial y} はある程度小さいと考えられるのでその二階微分はほぼ0である

 \displaystyle \frac{\partial^2}{\partial x^2} \left( \frac{\partial u^n}{\partial x} + \frac{\partial v^n}{\partial y} \right) + \frac{\partial^2}{\partial y^2} \left( \frac{\partial u^n}{\partial x} + \frac{\partial v^n}{\partial y} \right) = 0

と考えることができます。よって

 \displaystyle
\frac{\partial^2 p^n}{\partial x^2} + \frac{\partial^2 p^n}{\partial y^2} = \frac{1}{\Delta t}  \left( \frac{\partial u^n}{\partial x} + \frac{\partial v^n}{\partial y} \right) -\frac{\partial^2 (u^n)^2}{\partial x^2} -2\frac{\partial^2 u^n v^n}{\partial x \partial y} -\frac{\partial^2 (v^n)^2}{\partial y^2}

を得ます。これが圧力に関するポワソン方程式です。

計算手順は以下のように1と2の繰り返しとなります。

1. nステップでの流速  \boldsymbol{(u^n, v^n)} を用いて圧力のポワソン方程式を解きnステップでの圧力  \boldsymbol{p^{n+1}} を得る
2. nステップでの流速と圧力  \boldsymbol{(u^n, v^n, p^n)} を用いて離散化したNavier-Stokes方程式を解きn+1ステップでの流速  \boldsymbol{(u^{n+1}, v^{n+1})} を得る

空間方向の離散化には、保存型をそのまま用いれば有限体積法を、非保存型を用いれば有限要素法や差分法を用いることができます。

MAC法+中心差分で解きました。

MAC法+風上差分