C++

【オブジェクト指向C++】2次元ナビエストークス方程式(キャビティ流れ)の数値計算

Step4:ナビエストークス方程式を解く

いよいよキャビティ流れについてナビエストークス方程式の数値計算を行います。
まずは初期状態と境界条件を設定します。

【初期状態】
  • \(u, v, p = 0\)
【境界条件】
  • \(u=1\) at \(y=2\)
  • \(u, v=0\) その他
  • \(\frac{\partial p}{\partial y}=0\) at \(y=0\)
  • \(p=0\) at \(y=2\)
  • \(\frac{\partial p}{\partial x}=0\) at \(x=0,2\)

境界条件はFields.hで定義し、Fielsds.cppで処理内容を書きます。

Fields.h(抜粋)

Fielsds.cpp(抜粋)

境界条件を関数でまとめておきました。

Step5:残差の計算

ポアソン方程式を求める際に解の収束として、

\begin{align*}
\left|\frac{P_{n^{\prime}+1}-P_{n^{\prime}}}{P_{n^{\prime}}}\right|\tag{19}
\end{align*}

(19)が収束することを確認して次のタイムステップに進むようにします。
収束判定は(19)が$10^{-3}$より小さくなるか50回ループとしています。

では、main.cppにポアソン方程式の収束させるループを追加します。

ループを抜けたらナビエストークス方程式を解きます。

これで大まかな流れはできましたので、最後に全体のファイルをお見せして終了とします。

1 2 3 4 5 6

COMMENT

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