中心差分スキーム
理論:両隣から勾配を求める
概要
CFDで中心差分を使ったら、温度の分布にありえない凸凹が出ました。バグでしょうか?
バグではなく、中心差分の性質だろうね。中心差分は、ある点の勾配を両隣の値の差から求める。2次精度で、人工的な拡散を加えないのが長所だ。でも、流れ(対流)が拡散に比べて強いと、下流側の値が自分に逆向きに効いてしまい、解が点ごとにジグザグに振動する。目安は『セルペクレ数』が2を超えるかどうか。格子を細かくするか、風上系のスキームを混ぜるのが対処法だよ。
離散化した式
1次元の定常な対流拡散の式を、対流項も拡散項も中心差分で離散化した形。右辺の2つ目の係数は、流れが強いと負になる。
セルペクレ数の条件
係数がすべて正(または0)なら、解は隣の値の重み付き平均になり、振動は起きない。その条件がセルペクレ数2以下。右は計算例に使う厳密解で、$Pe = uL/\Gamma$ は全体のペクレ数。
「風上」という発想
中心差分の振動は、1950年代から数値計算の研究者を悩ませてきた。1952年にクーラン、アイザクソン、リースは、情報が流れてくる上流側(風上)の値を使う差分を提案し、振動しない代わりに精度が1次に落ちるという取引が知られるようになった。1980年代にはハーテンが、振動を起こさない条件(TVD)を数学的に整理し、急な変化のあるところだけ風上寄りにする制限関数つきのスキームが広まった。今の汎用CFDソフトの対流項のスキーム選択は、この長い議論の上にある。
計算例:1次元の対流拡散
区間[0, 1]で左端0・右端1、全体のペクレ数50の定常な対流拡散を、中心差分(CDS)と1次風上差分(UDS)で解いた。厳密解は右端の近くで急に立ち上がる。
| 分割数 | セルペクレ数 | 中心差分の最小値 | 中心差分の最大誤差 | 風上差分の最大誤差 |
|---|---|---|---|---|
| 10 | 5.0 | −0.429 | 0.436 | 0.160 |
| 20 | 2.5 | −0.111 | 0.193 | 0.204 |
| 25 | 2.0 | 0.000 | 0.135 | 0.198 |
| 50 | 1.0 | 0.000 | 0.035 | 0.132 |
| 100 | 0.5 | 0.000 | 0.008 | 0.077 |
| 200 | 0.25 | 0.000 | 0.002 | 0.042 |
10分割だと、振動しない風上差分のほうが誤差が小さいんですね。
そう。粗い格子では、中心差分は0から1の間に収まるはずの解を−0.43まで振動させてしまう。温度なら絶対零度より低くなるような、物理的にありえない値だ。でもセルペクレ数が2以下になる25分割からは振動が消え、細かくするほど誤差は格子幅の2乗で減る。100分割では中心差分0.008、風上差分0.077と、10倍違う。風上差分は1次精度だから、細かくしても誤差がなかなか減らない。『安定だが粗い』と『正確だが条件つき』の取引なんだ。
例2:収束の次数
ペクレ数10で格子を細かくすると、中心差分の誤差の減り方は2.00次、風上差分は0.97次に近づいた(200分割で中心差分0.0001、風上差分0.0090)。
スキームの選び方
- 流速・格子幅・拡散係数(粘性係数)からセルペクレ数の分布を見積もる。
- RANSの定常計算では、2次精度の風上系か制限関数つきのスキームを基本にする。
- LESでは数値拡散が乱流の渦を消してしまうので、中心差分系(必要なら少し風上を混ぜる)を使う。
- 急な変化(衝撃波・境界の薄い層)には、振動を抑える制限関数を使う。
- 格子を細かくして結果が変わらないことを確かめる。
「きれいな結果が実は間違い」
配管の中の混合をCFDで調べたら、濃度の分布はきれいで振動もなかったのに、実験より混合がずっと早く進んでいた——という例がある。安定させるために1次風上差分を使っていて、数値拡散が実際の拡散の何倍にもなっていた。2次精度のスキームに変えると、実験に近い混合の遅さが再現された。振動しない結果は安心に見えるが、数値拡散で『混ぜすぎ』ていることがある。粗い風上差分の結果ほど、格子の細かさを変えて確かめる必要がある。
よくある間違い
間違いと対策
| 間違い | 起きること | 対策 |
|---|---|---|
| 粗い格子で中心差分 | 振動・範囲外の値 | セルペクレ数を2以下に |
| 1次風上差分のまま | 数値拡散で混ぜすぎ | 2次精度のスキーム |
| LESで風上差分 | 乱流の渦が消える | 中心差分系 |
| 振動を物理現象と誤解 | 誤った結論 | 格子を変えて確認 |
| 振動がないから正しいと判断 | 数値拡散を見落とす | 格子収束を確認 |
関連する内容も知りたいです。
リチャードソン外挿ツールで収束の次数を試せるよ。スキームの詳しい比較は風上差分スキーム、基礎は有限体積法の基礎、時間方向はCFDの時間積分、高精度の方法はスペクトル法、圧力の解き方は圧力と速度の連成ソルバーが参考になる。
なった
詳しく
報告