この記事は著者が韓国語で書いた原文の翻訳です。 原文(한국어)を読む
Numerical Dungeon: ゲームで学ぶ数値解析
線形で単調な高次はGodunovに塞がれ、不正解が3回続くとHPが0になりステージが閉じます。
Numerical Dungeon#
本だけで回していると、CFLが1を越えた瞬間が手に残りません。不正解がHPを削る5ステージで、依存域とリミタとRiemann問題とAbgrall条件がどこで割れるかを当てていきます。
ステージ番号を変えると、クイズが問うスキームが変わり、不正解ひとつでHPが1つ減ります。
HPが0になると、その回は終わりです。後ろのステージほど正解のXPが大きいので、序盤にHPをどれだけ残すかがボス戦の余裕になります。
ルール
- HP 3 - 不正解でHPが1減ります。HPが0になるとゲームオーバー!
- XP - 正解ごとにXPを獲得します。後半ほど報酬が大きくなります。
- 難易度 - ステージ1
2は基礎、34は中核理論、5は最終ボスです。
各ステージではまず概念解説を読み、続くクイズに答えます。 間違えても詳しい解説が付きます。その解説が次の回のヒントです。
各ステージが問うもの
Stage 1: CFL 条件#
CFL条件はdomain of dependence(依存域)の概念と直結します。 数値情報の伝播速度が物理情報の伝播速度を上回る必要があります。 陰的(implicit)スキームはCFL制限がありませんが、非線形システムを解く代償があります。
CFLが1を越えると、格子1セルの数値的な依存域は物理的な依存域より狭くなります。そのセルの更新は届きようのない情報を要求し、空きは外挿が埋めます。外挿は振動になって戻ってきます。HPが3つなのは、そのミスを3回だけ許すルールです。陰的スキームはステンシルを領域全体へ広げ、時間刻みの上限を外します。空いた場所に座るのは、毎ステップの反復コストです。
Stage 2: 数値拡散#
数値拡散を減らすには高次スキームが必要ですが、 Godunovの定理により非線形リミタが必要です。 代表的なリミタ: minmod, van Leer, superbee, MC limiter。
1次風上がその拡散をどう引き受けるかは、FTCSと風上のCFLの交換に数字で残っています。高次へ行く前に、同じCFL予算の中で鈍りと振動が入れ替わる側を見ておくと、Stage 2の不正解は減ります。
Stage 3: Godunovの定理#
この定理がTVD(Total Variation Diminishing)、ENO、WENOなど 現代の数値手法の発展を促しました。 Godunovが塞いだ組み合わせは、線形でありながら単調な高次です。非線形が抜けると、安定と精度は一緒に行きません。
TVD、ENO、WENOはその禁止を非線形で迂回します。minmod、van Leer、superbee、MCは隣の勾配を見て、セルごとに勾配を選び直します。どれも線形係数を固定しません。固定するとStage 3の正解がひっくり返ります。
Stage 4: Riemann 問題#
Sod、Lax、Shu-Osherなど標準テスト問題でRiemann solverを検証できます。 不連続ひとつから衝撃波と接触と膨張が同時に割れるかを見る問題です。その三つを1セルの中で合わせ損ねると、圧力振動が次のステージと同じ症状で戻ってきます。
Stage 5: 多相流圧力振動#
Abgrallの条件は多相流数値解析の出発点です。 体積分率は動いてよいのに圧力は一様であるべき状態で、その対が壊れると圧力だけが揺れます。密度誤差とは別の症状です。
リミタを外すとボス戦の前にHPが尽きます#
高次スキームを線形係数のまま固定すると、Godunovがすでに塞いだ組み合わせに戻ります。単調で2次以上の線形スキームはありません。リミタを外すとStage 3が先に外れ、HP3つは振動数回で消えます。序盤のCFLで残したHPが、ここまで残っている必要があります。
Stage 5の圧力振動は、体積分率と圧力が別々に動くときに出ます。Abgrall条件は、その対を揃えろという要求です。衝撃波を1セルの中で解く手順はGodunovの衝撃管と同じ計算です。そのセルの波動分解が外れると、圧力振動はダンジョンの外でも同じ形で戻ってきます。
関連記事
役に立ったらシェアしてください。