CUDAの練習問題として、キャビティ問題を流れ関数−渦度法で解いてみた。が、ちょっと困った事態に。
時間発展させると解が収束せず、発散してしまう。オイラー法で積分するのが悪いのかと思い、予測子−修正子法とかも使ってみたが事態は改善せず。
理由は境界条件にありそうだ。渦度\(\omega_q\)は境界で
\[
\omega_q=-\frac{2\psi_p}{{\Delta x}^2}
\]
となるが、流入があると境界のすぐ隣のセルの流れ関数の値 \(\psi_p\) が1程度の大きさになり、これが発展方程式を通して成長してしまう。最初はじわじわと大きくなるがあるところで急激に値が大きくなるような挙動を示す。
また、\(\Delta x\)が小さいほど発散しやすい。
桁落ちも発生している模様なので、単精度計算が悪い可能性もある。
MAC法と比較してもう少し原因を調べるつもり。
2013年11月10日
この記事へのコメント
境界条件式が間違っていたのを修正しました。結論は変わらず。
Posted by みのしす at 2013年11月10日 22:29
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/80327756
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/80327756
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック