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