見出し画像

MetPyでSSIを計算する

以前のnoteで紹介したが、MSMを使ってエマグラムを予想図として描いていた。

その後さらにMetPyが提供しているいくつかのAPIを使ってSSIを計算し、エマグラム上に表示させていた。

MetPyのReference GuideのcalcのAPIを見ていたら、直接SSIの計算ができるAPI(showalter_index)を発見。リリースノートを確認すると、Ver.1.1でリリースされたようだ。

Anacondaの環境にインストールしているMetPyのバージョンが1.0.1だったので、1.1へバージョンアップして、このAPIを使ってSSIを計算するコードに変更してみた。

Reference Guideを見ただけでは使い方がよく分からなかったのだが、GitHubにあるMetPyのソースコードを見ていたら、テストコードがあったのでこれを参考にした。

(GitHubのMetPyのテストコードより抜粋)

def test_showalter_index():
   """Test the Showalter index calculation."""
   pressure = units.Quantity(np.array([931.0, 925.0, 911.0, 891.0, 886.9, 855.0, 850.0, 825.6,
                                       796.3, 783.0, 768.0, 759.0, 745.0, 740.4, 733.0, 715.0,
                                       700.0, 695.0, 687.2, 684.0, 681.0, 677.0, 674.0, 661.9,
                                       657.0, 639.0, 637.6, 614.0, 592.0, 568.9, 547.4, 526.8,
                                       500.0, 487.5, 485.0]), 'hPa')
   temps = units.Quantity(np.array([18.4, 19.8, 20.0, 19.6, 19.3, 16.8, 16.4, 15.1, 13.4,
                                    12.6, 11.2, 10.4, 8.6, 8.3, 7.8, 5.8, 4.6, 4.2, 3.4, 3.0,
                                    3.0, 4.4, 5.0, 5.1, 5.2, 3.4, 3.3, 2.4, 1.4, -0.4, -2.2,
                                    -3.9, -6.3, -7.6, -7.9]), 'degC')
   dewp = units.Quantity(np.array([9.4, 8.8, 6.0, 8.6, 8.4, 6.8, 6.4, 4.0, 1.0, -0.4, -1.1,
                                   -1.6, 1.6, -0.2, -3.2, -3.2, -4.4, -2.8, -3.6, -4.0, -6.0,
                                   -17.6, -25.0, -31.2, -33.8, -29.6, -30.1, -39.0, -47.6,
                                   -48.9, -50.2, -51.5, -53.3, -55.5, -55.9]), 'degC')
   result = showalter_index(pressure, temps, dewp)

気圧、温度、露点温度(温度と湿度から計算)の各データを下層から順にndarray配列して引数として渡せば計算できる。実際には850hPaと500hPaの温度、露点温度があれば計算できるのではないだろうか。

画像1

SSIのAPIを使わずに計算していた以前の値と比較しても齟齬はなかった。

SSIの天気図が描ければ興味深いのだが、天気図にすると実行時間が結構かかりそうな気がする。

MetPyには多くのAPIが提供されているので今後もいろいろと試してみたい。

天気図の作図にあたっては、京都大学生存圏研究所の生存圏データベースのGPVデータを使用させて頂いています。

よろしければ、サポートをお願いします。 より多くの方に役立つnoteを書けるよう頑張ります!!