風上差分スキーム

カテゴリ: CFDのソルバー手法 | 2026-10-01 改稿
CAE visualization for upwind schemes theory - technical simulation diagram
風上差分スキーム

理論:面の値をどう作るか

概要

🙋

CFDの設定で対流項のスキームを『1次風上』『2次風上』『QUICK』から選べます。どれを選べばいいですか?

🎓

有限体積法では、セルの面を通る流束を計算するのに、面での値が必要になる。それを上流側(風上)のセルの値から作るのが風上差分だ。1次風上は上流のセルの値をそのまま使うから安定で振動しないけれど、山がどんどん平らになる。2次風上やQUICKは上流の2つ以上のセルから直線や曲線で延ばすので精度は高いけれど、急な変化の所ではみ出す。どれを選ぶかは、何を大事にするか次第だ。実際に同じ山を運ばせて比べてみよう。

面の値の作り方

$$ \phi_{i+1/2}^{UDS} = \phi_i,\quad \phi_{i+1/2}^{LUD} = \tfrac{3}{2}\phi_i - \tfrac{1}{2}\phi_{i-1},\quad \phi_{i+1/2}^{QUICK} = \tfrac{3}{8}\phi_{i+1} + \tfrac{3}{4}\phi_i - \tfrac{1}{8}\phi_{i-1} $$

流れが左から右($i$ 側が上流)の場合。1次風上(UDS)、2次風上(LUD)、QUICKの順に使う点が増え、精度が上がる。

制限関数つきのTVDスキーム

$$ \phi_{i+1/2} = \phi_i + \tfrac{1}{2}\psi(r)\,(\phi_{i+1} - \phi_i),\quad r = \frac{\phi_i - \phi_{i-1}}{\phi_{i+1} - \phi_i},\quad \psi_{minmod} = \max(0, \min(1, r)),\ \ \psi_{vL} = \frac{r + |r|}{1 + |r|} $$

$r$ は隣り合う勾配の比で、滑らかな所では1に近く、急な変化や極値の近くでは0や負になる。制限関数 $\psi$ はそこで2次の補正を弱め、はみ出しを防ぐ。

Coffee Break よもやま話

ゴドゥノフの定理

1959年、ソ連のゴドゥノフは、振動を出さない線形のスキームは1次精度までしかない、という定理を示した。つまり、係数が固定された普通のスキームでは、高い精度と振動しないことを両立できない。この壁を越えるために1970〜80年代に考え出されたのが、解の形に応じて係数を変える『非線形』のスキームで、ヴァン・リアのMUSCLやハーテンのTVDがその代表だ。制限関数は、滑らかな所では2次精度、急な所では1次に切り替えることで、ゴドゥノフの定理をうまくかわしている。

計算例:山と四角い波を1周運ぶ

周期的な区間を100セルに分け、CFL 0.4・2段のルンゲ–クッタ法で、四角い波(高さ1)とガウス分布の山(高さ1)を1周運んだ。本来は形が変わらず元に戻るはず。

スキーム四角い波の最大四角い波の最小山の高さ山の誤差(L1)
1次風上0.6830.0000.3330.086
2次風上1.190−0.2150.7460.064
QUICK1.100−0.1010.9260.009
TVD(minmod)0.9640.0000.6130.037
TVD(van Leer)0.9990.0000.7500.021
🙋

QUICKは山をいちばんよく残すのに、四角い波では10%もはみ出すんですね。

🎓

そう、滑らかな所は精度が高いけれど、急な段差では振動が出る。濃度や温度で0より小さい値や上限を超える値が出ると、物性の計算が破綻したり、負の濃度で反応が進んだりする。2次風上は四角い波で19%もはみ出した。TVDは段差でも0〜1の範囲を守り、van Leerなら山も75%残る。1次風上は安全だけど、山が3分の1になるほど平らになってしまう。滑らかな流れの精度を重視するならQUICKや2次風上、段差や境界の鋭い量を扱うならTVD、というのが基本の使い分けだ。

選び方の目安

  1. 計算を安定させるための最初の数百回の反復は1次風上で始め、落ち着いたら高次に切り替える。
  2. 最終的な結果は2次以上(2次風上・QUICK・TVD)で出す。1次風上のままにしない。
  3. 濃度・体積率・乱流量など、範囲の決まった量にはTVDを使う。
  4. 格子を細かくして結果が変わらないことを、使うスキームで確かめる。
  5. 流れに沿った格子(ずれの少ない格子)ほど数値拡散は小さい。
Coffee Break よもやま話

「混ざりすぎる煙」

トンネルの換気のCFDで、煙の濃度が実験よりずっと早く薄まって広がった——という例がある。安定して計算を終わらせるために、最後まで1次風上差分のままにしていた。1次風上の数値拡散が、実際の乱流の拡散に上乗せされていたのだ。2次風上に制限関数をかけたTVDに切り替えると、煙の層がはっきり残り、実験の濃度に近づいた。安定させるための設定を、結果を出すときまで使い続けないことが大事だ。

よくある間違い

間違いと対策

間違い起きること対策
最後まで1次風上混合・拡散の過大評価2次以上に切り替え
範囲のある量にQUICK負の濃度・体積率TVDを使う
振動を物理と誤解誤った結論スキームを変えて確認
制限関数を強すぎに山が削られるvan Leerなど中庸なもの
格子の向きを無視斜めの流れで拡散流れに沿った格子
🙋

関連する内容も知りたいです。

関連シミュレーター

この分野のインタラクティブシミュレーターで理論を体感しよう

シミュレーター一覧

関連する分野

熱解析V&V・品質保証構造解析
この記事の評価
ご回答ありがとうございます!
参考に
なった
もっと
詳しく
誤りを
報告
参考になった
0
もっと詳しく
0
誤りを報告
0