圧力と速度の連成ソルバー
理論:圧力と速度を一緒に解く
概要
CFDソフトに『SIMPLE』と『Coupled』の選択肢があります。何が違って、どちらを選べばいいですか?
非圧縮の流れでは、圧力を直接決める式がなく、『速度が連続の式を満たすように圧力が決まる』という関係になっている。SIMPLE法は、運動量の式で速度を仮に求め、連続の式を満たすように圧力を補正して、を交互に繰り返す。1回は軽いけれど、圧力と速度の結びつきを少しずつしか取り込めないから、反復が多くなりがちだ。連成ソルバーは両方の式を1つの大きな連立方程式にまとめて同時に解く。1回は重いが、反復はずっと少なくて済むんだ。
連成した連立方程式
$A_u$・$A_v$ は運動量の式(対流と拡散)、$G$ は圧力の勾配、$D$ は発散(連続の式)。非線形の対流項は前の反復の速度で固定し(ピカール法)、この連立方程式を毎回解いて外側の反復を繰り返す。
SIMPLE法の補正
SIMPLE法は運動量の対角成分 $a_P$ だけで圧力補正を近似するため、緩和係数 $\alpha_u$・$\alpha_p$ で更新を抑えないと発散しやすい。この近似が、反復回数が多くなる原因だ。
圧力をどう解くかという長い問題
SIMPLE法は1972年にパタンカーとスポルディングが発表し、少ないメモリで非圧縮流れを解ける方法として、その後の汎用CFDソフトの標準になった。当時のコンピュータでは、全ての未知数を1つの連立方程式として解くのはメモリ的に不可能だったからだ。連成ソルバーは、2000年代に代数的マルチグリッド法などの大きな連立方程式を効率よく解く技術と、メモリの増加がそろって、商用ソフトで実用的になった。解法の選択は、計算機の進歩とともに変わってきた。
計算例:キャビティ流れで比べる
上の壁が動く正方形のキャビティ流れを、スタガード格子・1次風上差分の同じ離散化で、連成ソルバーとSIMPLE法で解いた。残差が10⁻⁶になるまでの外側の反復回数を比べる(計算時間は実装で大きく変わるので、ここでは反復回数で比べる)。
| 条件 | 連成ソルバー | SIMPLE(0.7/0.3) | SIMPLE(0.5/0.2) | 中心線の最小速度 |
|---|---|---|---|---|
| 16分割・Re 100 | 9 | 110 | 240 | −0.170 |
| 32分割・Re 100 | 9 | 355 | 810 | −0.189 |
| 64分割・Re 100 | 8 | 1,215 | 2,825 | −0.201 |
| 32分割・Re 400 | 13 | 335 | 760 | −0.200 |
格子を細かくすると、SIMPLE法だけ反復がどんどん増えるんですね。
そう。SIMPLE法は圧力の情報を隣のセルに少しずつしか伝えられないから、セルが増えるほど全体に行きわたるのに時間がかかる。連成ソルバーは毎回全体の連立方程式を解くので、格子の数にほとんど左右されない。どちらも最後は同じ解(差は10⁻⁵程度)になるから、選択は精度ではなく速さとメモリの問題だ。中心線の最小速度は格子を細かくすると−0.201まで近づくが、文献値の−0.211には届かない。これは1次風上差分の数値拡散のためで、解法の違いとは別の話だよ。
選び方と設定
- メモリに余裕があり、格子が大きい定常計算なら、連成ソルバーを試す。
- SIMPLE法を使うなら、緩和係数は下げすぎない(下げると反復が2倍以上に増える)。
- 連成ソルバーはクーラン数(擬似時間刻み)で安定性を調整する。発散するなら下げる。
- 非定常計算では、1ステップ内の反復回数と時間刻みの兼ね合いで選ぶ。
- 残差だけでなく、監視点の値が変わらなくなったことで収束を判断する。
「連成にしたらメモリ不足」
SIMPLE法で2日かかっていたポンプの定常計算を、連成ソルバーに切り替えたら、途中でメモリ不足で止まった——という例がある。連成ソルバーは圧力と速度の全ての未知数を1つの連立方程式として扱うので、同じ格子でもメモリの使用量が数倍になる。計算ノードを増やして並列数を上げたところ、反復回数は約10分の1、計算時間は約4分の1になった。速さはメモリと引き換えだと考えて、計算資源と合わせて選ぶのが大事だ。
よくある間違い
間違いと対策
| 間違い | 起きること | 対策 |
|---|---|---|
| 解法で精度が変わると考える | 格子・差分の問題を見落とす | 精度は離散化で決まる |
| 緩和係数を下げすぎる | 反復が大幅に増える | 既定値から少しずつ |
| メモリを確認せず連成に | メモリ不足で停止 | 並列数・メモリを見積もる |
| クーラン数を大きくしすぎる | 連成ソルバーが発散 | 小さく始めて上げる |
| 残差だけで収束判定 | 監視量が収束していない | 監視点も確認 |
関連する内容も知りたいです。
なった
詳しく
報告