二次元 cavity 問題のMAC法による数値解法(2)

前回、「スタガード格子」をさらっと通り過ぎましたが、具体的には、以下のような格子をとります。

通常はある点で物理量が定義されますが、スタガード格子では各点で異なる物理量が定義されます。

例えば v(i, j) における u(i, j) の値は定義されていないため、平均をとって物理量を近似します。

ui,j=ui+1,j+1+ui+1,j+ui,j+1+ui,j4, vi,j=vi+1,j+1+vi+1,j+vi,j+1+vi,j4

このことに注意して前回の方程式を中心差分で二次元に書き下すと、連続の式の微分は無視して、

Di,j=ui+1,jui,jd+vi,j+1vi,jd

pi,j=14[(pi+1,j+pi1,j+pi,j+1pi,j1)d2ΔtDi,j+(ui+1,jui,j)2+(vi,j+1vi,j)2+2(ui,jui,j1)(vi,jvi1,j)]

ui,jn+1=ui,jΔt[ui,j(ui+1,jui1,j2d)+vi,j(vi,j+1vi,j12d)+pi+1,jpi,jd1Red2(ui+1,j+ui1,j+ui,j+1+ui,j14ui,j)]

vi,jn+1=vi,jΔt[vi,j(vi,j+1vi,j12d)+ui,j(ui+1,jui1,j2d)+pi,j+1pi,jd1Red2(vi+1,j+vi1,j+vi,j+1+vi,j14vi,j)]

格子は正方格子とし、間隔を d と置きました。次回は前回の境界条件を考慮しつつ、上記の差分方程式を python + numpy で解くところまで行きたいと思います。

ここまでで2時間かかってしまった。

投稿者について
みのしす

小さいときは科学者になろうとしたのに、その時にたまたま身に着けたプログラミングで未だに飯を食っているしがないおじさんです。(年齢的にはもうすぐおじいさん)

コメントを残す

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