GRIB_APIの整備

GRIB_APIコンパイルとインストール

✳︎ECMWFでは後継ソフトウェアであるecCodesをリリースしており、徐々に移行を促しています。 現在のOpenIFSではGRIB_APIを推奨としていますがecCodesも使えます。次回リリースからはecCodesに完全移行すると考えられるため、これからセットアップする場合はecCodesを導入することをお勧めします。

作業はOpenIFSのドキュメントに従って行います。
https://confluence.ecmwf.int/display/OIFS/5.3+Install+GRIB+library+for+OpenIFS

ソースコードのダウンロードと展開

ソースコードはECMWFのサイトからダウンロードできます。
https://confluence.ecmwf.int/display/GRIB/Releases

tarを展開しビルド用のディレクトリを作成します。

wget https://confluence.ecmwf.int/download/attachments/3473437/grib_api-1.27.0-Source.tar.gz
tar xvzf grib_api-1.27.0-Source.tar.gz

mkdir bld
cd bld
cmakeによるビルド設定とコンパイル

ECMWFのソフトウェアではcmakeというビルド支援ソフトウェアを使用してインストール作業を行います。 ビルド時の詳細なオプションを最初に設定し、その設定ファイルをもとにコンパイルとインストールを半自動で行ってくれるソフトウェアです。

参考にうちのサーバーでインストールする際のオプションを掲載しておきます。
コンパイラintelコンパイラです。

cmake ../grib_api-1.27.0-Source -LH  \
      -DCMAKE_C_COMPILER=icc      \
      -DCMAKE_Fortran_COMPILER=ifort \
      -DCMAKE_C_FLAGS="-g -O1 -fp-model precise"   \
      -DCMAKE_Fortran_FLAGS="-g -O1 -xHost -fp-model precise -assume byterecl -convert big_endian -traceback" \
      -DCMAKE_INSTALL_PREFIX="/usr/local/grib_api"   \
      -DENABLE_NETCDF=OFF             \
      -DENABLE_JPG=OFF                \
      -DENABLE_PNG=OFF                \
      -DENABLE_PYTHON=ON              \
      -DENABLE_FORTRAN=ON             \
      -DENABLE_GRIB_OMP_THREADS=ON    \
      -DBUILD_SHARED_LIBS=ON          \
      -DNETCDF_IS_PARALLEL=FALSE
      

※OpenIFSで使うぶんにはNETCDFやJPG,PNG圧縮の対応は不要です。とりあえずインストールするだけならOFFでいいでしょう。 ※CMAKE_INSTALL_PREFIX はコンパイル後のGRIB_APIシステムをインストールするディレクトリです。ここでは管理権限が必要な/usr/local下を指定していますが、実際には管理者権限を持っていることはそうないためユーザーディレクトリにインストールしてPATHを通して使用します。OpenIFSでもその運用を前提としたPATHの指定オプションがあります。 ※intelコンパイラでは最適化をO1までにしておかないと正しく動作しないことがあるとドキュメントに記されているため、明示的にO1の最適化をかけています。

ライブラリの依存関係が解決し、cmakeが正常に終了したらmake & install します。

make
ctest
make install

``


#### テスト

PATHを通してgrib_infoコマンドが動作すればインストール完了です。

$ export PATH=/usr/local/grib_api/bin:$PATH

$ grib_info

grib_api Version 1.26.1

Default definition files path is used: /usr/local/grib_api/share/grib_api/definitions Definition files path can be changed setting GRIB_DEFINITION_PATH environment variable

Default SAMPLES path is used: /usr/local/grib_api/share/grib_api/samples SAMPLES path can be changed setting GRIB_SAMPLES_PATH environment variable

現業IFSのバージョン

現業IFSのバージョン歴

OpenIFSの特徴としてほぼ現業モデルそのままであることが挙げられる。 よって、現業予報を再現したり、感度実験で精度を検証したりするという独自の実験テーマが設定できる。
その場合はTIGGEなどの現業予報データとの比較が検証過程で生じるが、当時の現業バージョンとOpenIFSのバージョンが異なることに留意する必要がある。

私が行なったいくつかの実験では、モデルバージョンと解像度が当時の現業モデルと一致するときに高い精度で現業予報を再現する傾向が感じられた。(個人の感想です)

ECMWFにおける現業IFSのバージョン変更履歴はこちらで確認できる。

Changes in ECMWF model | ECMWF

意識する期間は以下の通り。

  • -2012-06-18
    OpenIFSに対応するバージョンよりも古いバージョンが現業だった期間

  • 2012-06-19 -
    現業HRES予報(Deterministic,決定論的予報)が cy38r1の鉛直91層だった期間

  • 2013-06-26 -
    cy38だが鉛直総数が L91 -> L137 に増やされた期間

  • 2013-11-19 -
    cy40r1の期間

  • 2015-05-12 -
    cy41の期間。 cy40と解像度や結合モデルに大きな変更はないため比較的に通った結果が出ると考えられるが未検証。

  • 2016-11-22 -
    cy42r1以降の期間。この日から現業の海洋結合にOcean modelが加わっており、Ocean model 結合を搭載していないOpenIFSとはとても似ている違うモデルともいえる。

OpenIFSについて

日本におけるOpenIFS

OpenIFSに関する日本語の情報は無い。限りなく0に近いのではなく、無い。 そもそもOpenとは銘打つものの研究計画を申請して通れば使えるというクローズドに近いプロダクトであり、使うのも気象関係の人だけである。世界中でも現役ユーザーは100人いるか分からない。日本では知っている限り5人しかいない。

しかし私はこのシンプルで使い易い全球予報モデルが好きだ。なので、日本の後輩や同業者がいつかこのモデルに取り組むときの助けになる日が来ると信じてここにメモを綴ることにする。

OpenIFSの概要

OpenIFSの前にIFSの説明が必要になる。 IFS(Integrated Forecasting System)とはECMWF(ヨーロッパ中期予報センター) が運用している統合的全球予報システムである。全球予報をしている気象センターは世界中にあるが、ECMWFの予報はその中でも明らかに予報精度が高い。その予報の中核をなしているのがIFSによる数値予報である。

OpenIFSはIFSの予報モデル部分を研究・教育用途で使えるように整備し公開した簡易版モデルであり、またそのプロジェクト名でもある。 主にヨーロッパ圏の大学で使われており、研究結果やバグリポートなどのフィードバックは次のIFS開発に活かされる。日本では京都大学防災研究所が運用している。

OpenIFSは簡易版であるため、データ同化・海洋モデルなどIFSの一部機能が取り除かれており完全に同じものではない。しかし、大気状態の予報に関しては全く同じコアが用いられている。 振られているバージョン番号はIFSと同一で、IFSから数年遅れでOpenIFSに導入される。2018年9月現在は 40r1 (cycle 40 release 1) が最新版であり、来年をめどに次のメジャーリリースが出る予定である。

IFSとの違いについてはこちらを参照のこと。

https://confluence.ecmwf.int/display/OIFS/2.1+OpenIFS+compared+to+IFS

モデルのインストール

OpenIFSはECMWFのソフトウェアである GRIB_API を必要とする。次回リリースからは後継のecCodesに対応する。 \ そのため GRIB_API → OpenIFS の順でインストールする。依存するLAPACKも含めて全て同一のコンパイラコンパイルする必要がある。 コンパイル・インストール手順については以下に公式ドキュメントがある。日本語でも別の記事で解説する。

https://confluence.ecmwf.int/display/OIFS/5.+OpenIFS+Installation

モデルの情報

OpenIFSは全球スペクトル静力学モデルである。 グリッドは40r1までは 適合ガウス格子 (Reduced Gaussian Grid)が、41r1以降では八面体逓減ガウス格子 (Octahedral Reduced Gaussian Grid) が使用される。 このグリッドは緯度が高くなるほど東西方向の格子点数が少なくなるためCFL条件が緩くなる利点がある。

入出力のファイル形式は共にGRIB形式で、出力する変数はnamelistを設定することで操作できる。出力の操作はこちらに詳しい。

https://confluence.ecmwf.int/display/OIFS/How+to+control+OpenIFS+output

入力ファイルは「大気力学過程の初期値」「大気の物理過程の初期値」「地表面の初期値」「予報期間中の気候値」の4種で構成されている。 \ 基本的にはOpenIFS support teamに連絡して用意してもらうのだが、ERA再解析値から作成することもできる。初期値の作成法に関しては別の記事で述べる。

謝辞

最後に、大小さまざまな問題のサポートに尽力してくれる OpenIFS support team の Glenn Carver と Gabriella Szepszo に感謝致します。

I would like to thank Glenn Carver and Gabriella Szepszo for their kind supports.

このブログについて

・筆者はどんな人?

大学院の修士課程でモンテカルロ式確率予報と4次元データ同化の研究をしている学生です。学部時代は大気のエネルギー理論を研究していました。

 

・これはどんなブログにする予定ですか。

いままで研究室内部向けとして色々な資料を書いてきました。非常に局所的な情報ではありますが、どこかで役立ててもらえればと思いここにも公開していきます。気象予報モデルの運用やデータ解析ソフトウェアのTips等が主な内容になると思います。

GithubやQiitaなどと併せてご覧になってください。