格子上の気象

予報とは、時計によって進められる格子上の場です。この二つを競合させてしまうと、物理的には完全に正しいモデルであっても、実際の空ではあり得ないような数値を弾き出してしまいます。

インタラクティブシミュレーションを読み込んでいます...

レッスン

理論 — 格子上の気象

予報モデルは、大気を格子上の数値として保持し、それを時間ステップごとに進めていきます。モデルが行う最も単純な処理は移流です。これは風がパターンを運ぶ現象であり、 ∂u/∂t + c ∂u/∂x = 0 で表されます。このページでは、円周 160 km のリング上でこれを解きますが、この設定には重要な意味があります。移流には厳密解が存在するからです。時間 t 後の場は、初期の場を c·t だけシフトさせたものにほかなりません。したがって、ここで報告されるすべての誤差は、より細かい計算結果に対してではなく、真理に対して測定されています。クーラン数 ν = c·Δt/Δx は、風が1ステップでいくつの格子をまたぐかを示しています。そして CFL条件 ν ≤ 1 は、ここにある陽解法スキームが従うか、あるいは破綻するかの法則です。クーラン、フリードリヒス、そしてレーヴィがこれを発表したのは 1928 年のことであり、誰かが数値予報を実行する 18 年も前のことでした。

各記号の意味

c
風速 (m/s)。ここでは定数ですが、実際のモデルでは設定値ではなく解の一部となります
Δx
格子間隔。 160 km を格子数で割った値です
Δt
時間ステップ (秒)
ν
クーラン数、 c·Δt/Δx 。このページのすべては、この値が 1 より大きいか小さいかにかかっています
N
リング上の格子数。 10 から 400 まで
前提
一つの方程式、一次元、単一の風速、そして境界のないリング。厳密解がわかっているため、報告される誤差はスキームそのものに起因する純粋なものです。またここでは、各々の新しい値が古い値のみから構築される陽的なスキームを前提としています。これこそがCFL条件が真に対象とする前提であり、実際のモデルが部分的に回避しているものでもあります。
成り立たない場合
予報センターが扱うほとんどの場面において、この前提は成り立ちません。実際のモデルは複数の波の速度を同時に扱い、その中で最も速いのは約 340 m/s の音速です。誰も予報しようとしていない音波のためにCFL条件に従おうとすれば、気象現象が必要とするよりも 30倍 も小さな時間ステップを強いられます。運用モデルが半陰的解法を組み合わせてこれらの波を別個に扱うのはこのためです。風も一定ではないため、 ν は平均的な風ではなく、格子上のどこ吹く最も速い風に対しても条件を満たす必要があります。また、領域限定モデルには境界が存在し、そこでどう振る舞うべきか自体が独立した研究テーマとなっています。陰的スキームであれば、配列を走査する代わりに毎ステップ連立方程式を解くという代償を払うことで、CFL限界を完全に回避することができます。

時計を設定するのは方程式ではなく、格子である 🖖

ちょうど境界上を押し、続いて細かい格子、同じ時計を押してください。風も、時間刻みも、方程式も同じです。セルの幅が 1 km から 667 m に変わるだけで、他は一切変わりません。最初の実行結果は厳密です。ところが二番目の実行では ステップ 44 で初期ピークの十倍を超え、ついに 1.8 × 10³⁰ へと達します。その理由は表の三行目にあります。風は 100 s の一つのステップで 1.000 km を移動します。セルの幅がそれ以上ある間、そこに到達する空気はそのセルと風上の隣接セルとの間のどこかから来たことになります。したがって新しい値はこれら二つの値の混合となり、風上差分法が行うのは常にこれだけなのです。セルをそれよりも狭くすると、到達する空気は、スキームが参照する隣接セルよりもさらに後方から来たことになります。セル自身の値にかかる重み 1 − ν は負になります。負の重みは平均化するのではなく、増幅を引き起こしてしまうのです。ν = c·Δt/Δx ≤ 1 とは、まさにこの事実を数式で記したものです。格子を細かくすることは物理的な表現を改善する反面、算術的な危険性を伴います。しかし方程式自体は、その危険について何も語ってくれません。

一線を越えても予報はすぐには破綻しない。破綻が運命づけられるだけである 🖖

2番目のパネルはクーラン数を走査し、場が 10 倍に増幅するまでのステップ数を数えます。 1.05 の場合、それには 330 ステップかかります。 1.2 では 93 ステップ、 2.0 では 19 ステップです。限界をわずかに超えた 1.01 では 1,588 ステップを要しますが、これは最初の三つのプリセットを合わせたよりも多い実行ステップ数です。初期のステップでは何もおかしいようには見えません。なぜならその成長は指数関数的であり、指数関数的な成長というものは、手に負えなくなる直前まで目に見えないからです。出力結果を読んでいる予報官は、すでに計算資源を費やしてしまっています。クーラン数は計算を始める前に三つの数値から読み取ることができ、それこそが運用センターが事前に行っていることなのです。

最も正確な設定とは、破綻の瀬戸際にある 🖖

ν = 1 ちょうどのとき、風上差分法は単に精度が良いだけにとどまりません。厳密なのです。真の解に対する誤差は 5.4 × 10⁻²² となり、波形は元の高さの 100.0% を維持します。クーラン数が 1 であれば各ステップは一つのセル分のきれいな平行移動になり、平行移動こそが移流の本来の姿だからです。これより少しでも値が小さいと、風がまだ到達していない隣のセルへと波形が滲んでしまいます。同じ 1 km の格子上で同じく 11.11 時間のシミュレーションを行った場合、保持される高さは ν = 0.99 で 94.3%、ν = 0.90 で 66.7%、ν = 0.50 で 37.1%、ν = 0.25 では 31.0% にとどまります。安全を見込んで限界値から下げることは、気象の波形を失う最も手っ取り早い方法なのです。しかも、分かりやすい解決策はかえって状況を悪化させます。より良いスキームを押して、打切り誤差が風上差分法より一桁小さい手法が、クーラン数の限界の半分の値から出発し、ステップ 39 で発散してしまう様子を観察してみてください。

全プロセスの詳細解説

  1. 4 km のモデルには 40 分かかる。では 500 m にはどれだけかかるか? 7 ステップ

    ある 4 km 予報モデルは計算機の 40 分間で対象領域をカバーします。では、同じ予報を 500 m で行うとどれだけのコストがかかるでしょうか。 先を読み進める前に計算し、三つの要因のうちどれが想定外であったかに注目してください。安定限界のぎりぎりを押して、ツールの表を 1 km の行に合わせておきましょう。

    この問題をツールで開く

    1. まず格子数から始めます。間隔を半分にすると各辺の数は 2倍 になります。予報領域には2つの水平次元があるため、1回の半減で格子数は 4倍 になります。 4 km で 40 × 40 なら、 2 km では 80 × 80 です。

    2. しかし、時間ステップは自由に保てるものではありません。これが多くの人の陥る罠です。CFL条件がそれを格子間隔に結びつけているため、 Δx を半分にすれば許容される最大の Δt も半分になります。風速 10 m/s 、 ν = 0.9 のとき、 4 km の格子では 360 s が許されますが、 2 km の格子では 180 s になります。シミュレーション1日あたりのステップ数は 240 から 480 に増加します。

    3. これらを掛け合わせます。格子数が 4倍 でステップ数が 2倍 なので、1回半減させるごとの計算量は 8倍 となります。 4 km での1日あたり 384,000 回の格子更新に対し、 2 km では 3,072,000 回です。表の最後の列にはどの行にも 8.00 と記載されていますが、これは見積もりではなく実際の倍率です。

    4. 4 km から 500 m へは3回の半減となるため、倍率は 8³ = 512 になります。表は端から端までこれと一致しています。 4 km での1日あたり 384,000 回の更新が、 500 m では 196,608,000 回になります。

    5. 40 分は 40 × 512 = 20,480 分になります。つまり、たった1日分の気象に対して2週間かかるということです。これこそが、予報格子が誰もが望むほど細かくはならず現在のサイズにとどまっている理由であり、解像度を 2倍 にしようとするセンターが 8倍 の性能の計算機を買わなければならない理由に対する答えなのです。

    6. この見積もりはその単純な構造に対して正直です。格子更新1回あたりの計算量が変わらないことを前提としており、これは一つの移流項についてはほぼ正当ですが、物理モデルが複雑になるにつれて過小評価になりがちです。また、 ν が 0.9 にとどまることを仮定していますが、実際のモデルでそれを約束することはできません。 ν は格子上で最も速い風に対して条件を満たさなければならず、ジェット気流がモデル開発者に都合よく配慮してくれることなどないからです。

    7. このページが触れない点について補足します。この算術的現実に直面したセンターは、ただ大人しくコストを払うわけではありません。増大する係数の一部は、毎ステップ連立方程式を解くコストと引き換えに速い波のCFL条件を回避する半陰的スキームによって取り戻されます。また、ネスティングや可変解像度格子を用いて、必要な場所にだけ解像度を費やすことでも相殺されます。どちらも実在する手法ですが、どちらも無料(タダ)ではなく、このページではそのどちらも計算に入れていません。

    解答

    計算量は 512 倍。したがって、たった1日の予報におよそ2週間かかります。 1回の半減につき格子数が 4倍、ステップ数が 2倍。これが3回繰り返されるため 8³ = 512 となります。誰も予想しないのが第三の要因です。すなわち、クーラン条件があなたに代わって時間ステップを消費してしまうのです。

学習の道すじ

天気予報の仕組み

参考文献 (4)