【WRF】環境構築/外部ライブラリのインストール

気象

使用環境・バージョン

Linux環境でWRF/WPSを構築します。

  • RedHat Enterprise Linux(RHEL) 9.2

Debian系のUbuntuでもほぼ同様の手順で構築ができることを確認(2026-02-22)。

事前準備

Unixコマンド

WRFのコンパイルには以下のUnixコマンドが使える必要があります。

arheadsed
awkhostnamesleep
catlnsort
cdlstar
cpmaketouch
cutmkdirtr
exprmvuname
filenmwc
grepprintfwhich
gziprmm4

参考:

コンパイラの選択

本記事はGCCを例に説明します。

WRFDA, WRF-Chemをコンパイルする場合(2026/02/20)

WRF Version 4.5.2以降のコアはifx/icxによるコンパイルに対応しているが、WRFDA, WRF-Chemは未だ対応していません(WRF リリースノート)。

これらをコンパイルする場合は、外部ライブラリのコンパイルにもifx/icxを使わないようにします。

ディレクトリの設定

本記事で構築する外部ライブラリは、ホームディレクトリ直下のlibディレクトリに置きます。

export WRFLIB="${HOME}/lib"

外部ライブラリのインストール

WRFのフォーラムに投稿された次の記事を参考にしています。

コンパイラフラグの設定

外部ライブラリの構築にあたり、以下のフラグを設定します。

注意! いずれも、WRFのコンパイル前に削除する必要があります。

export CC=gcc
export CXX=g++
export FC=gfortran
export FCFLAGS="-m64 -fallow-argument-mismatch"
export F77=gfortran
export FFLAGS="-m64 -fallow-argument-mismatch"

上記を~/.bashrcに記述し、シェルに反映させます.

. ~/.bashrc

ZLIB

zlibはデータ圧縮・解凍を行うライブラリです(公式サイト)。

最新版をwgetでダウンロードします。

$ wget https://zlib.net/current/zlib.tar.gz
$ tar xzvf zlib.tar.gz
$ cd zlib-1.3.2/
$ ./configure --prefix=$WRFLIB/zlib
$ make
$ make install

ビルドが完了したら、以下の環境変数・フラグを.bashrcに追記します。

export LD_LIBRARY_PATH="${WRFLIB}/zlib/lib":$LD_LIBRARY_PATH
export LDFLAGS="-L${WRFLIB}/zlib/lib"
export CPPFLAGS="-I${WRFLIB}/zlib/include -fcommon"

忘れずにソースします。

. ~/.bashrc

HDF5

HDF(Hierarchical Data Format)とは、大量のデータを構造化するために使われるファイル形式です(HDF5ホームページ)。

Automakeでビルド

$ wget https://github.com/HDFGroup/hdf5/releases/download/hdf5_1.14.6/hdf5-1.14.6.tar.gz
$ ./configure --prefix=$WRFLIB/hdf5 --with-zlib=$WRFLIB/zlib --enable-fortran --enable-shared
$ make
$ make install

.bashrcにHDF5へのパスを通し、フラグ等を書き換え、ソースします。

export PATH="${WRFLIB}/hdf5/bin":$PATH
export LD_LIBRARY_PATH="${WRFLIB}/zlib/lib":"${WRFLIB}/hdf5/lib":$LD_LIBRARY_PATH
export LDFLAGS="-L${WRFLIB}/zlib/lib -L${WRFLIB}/hdf5/lib"
export CPPFLAGS="-I${WRFLIB}/zlib/include -I ${WRFLIB}/hdf5/include -fcommon"

CMakeでビルド (ver 2.0.0以降)

2025年11月にリリースされたVer.2.0.0以降は、CMakeによるビルドのみに対応するようです(hdf5 2.0.0 release docs)。

注意! HDF5 2.0.0でnetcdf-cのビルドに失敗する報告が見られます。(netcdf-fのIssues)

cmakeのオプションは、buildディレクトリ内で

cmake -LAH ..

で確認できるほか、GitHubリポジトリのドキュメントで解説されています。

$  wget https://github.com/HDFGroup/hdf5/releases/download/2.0.0/hdf5-2.0.0.tar.gz
$ tar xzvf hdf5-2.0.0.tar.gz
$ cd hdf5-2.0.0
$ mkdir build
$ cmake .. \
     -DCMAKE_INSTALL_PREFIX=$WRFLIB/hdf5 \
     -DHDF5_BUILD_FORTRAN=ON \
     -DHDF5_ENABLE_ZLIB_SUPPORT=ON
$ cmake --build . 
$ cmake --install .

フラグ等はAutomakeの場合と同様に設定します。

(2026/02/22) make checkで1つfailedになる。zarr関連なので無視しても問題なさそうだが、念のためHDF5をダウングレードする。

NetCDF (C, Fortran)

NetCDFは気象や海洋の分野で用いられるフォーマットです。

NetCDF-C

まずはNetCDF-Cをビルドします。

$ wget https://downloads.unidata.ucar.edu/netcdf-c/4.9.3/netcdf-c-4.9.3.tar.gz
$ tar xzvf netcdf-c-4.9.3.tar.gz
$ cd netcdf-c-4.9.3
$ ./configure --prefix=$WRFLIB/netcdf --disable-dap --enable-netcdf4 --enable-hdf5 --enable-shared
$ make
$ make install

インストール後、”If you have not already run “make check”, then we strongly recommend you do so. It does not take very long.” と表示されるため、make checkを実行します。

$ make check

すべてpassなら問題がないです。

.bashrcに以下を追記します。

export PATH="${WRFLIB}/netcdf/bin":$PATH
export LD_LIBRARY_PATH="${WRFLIB}/netcdf/lib":$LD_LIBRARY_PATH
export LDFLAGS="-L${WRFLIB}/zlib/lib -L${WRFLIB}/hdf5/lib -L${WRFLIB}/netcdf/lib"
export CPPFLAGS="-I${WRFLIB}/zlib/include -I ${WRFLIB}/hdf5/include -I${WRFLIB}/netcdf/include -fcommon"

また、後のWRFのビルドに備えて、$NETCDFを設定しておきます。

export NETCDF="${WRFLIB}/netcdf"

NetCDF-Fortran

次にNetCDF-Fortranをビルドします。

$ wget https://downloads.unidata.ucar.edu/netcdf-fortran/4.6.2/netcdf-fortran-4.6.2.tar.gz
$ tar xzvf netcdf-fortran-4.6.2.tar.gz
$ ./configure --prefix=$WRFLIB/netcdf --disable-hdf5 --enable-shared
$ make
$ make install
$ make check

フラグなどの設定はNetCDF-Cと共通であるため、NetCDFの設定は以上です。

OpenMPI

OpenMPIは分散メモリの並列計算ライブラリです。WRFはOpenMPI・MPICHに対応しています。

今回はOpenMPIをビルドします。

$ wget https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.9.tar.gz
$ tar xzvf openmpi-5.0.9.tar.gz
$ cd openmpi-5.0.9
$ ./configure --prefix=$WRFLIB/openmpi
$ make
$ make install

ビルドが完了したら、パスを通します。

export PATH="${WRFLIB}/openmpi/bin":$PATH
export LD_LIBRARY_PATH="${WRFLIB}/openmpi/lib":$LD_LIBRARY_PATH

環境変数の整理

外部ライブラリのビルドに使用したコンパイルフラグは、WRFのビルド時に衝突を起こすので削除します。

.bashrcの

  • CC
  • CXX
  • FC
  • FCFLAGS
  • F77
  • FFLAGS
  • LDFLAGS
  • CPPFLAGS

を削除します。(シェルの再起動も忘れずに!)

その他の設定

libpng, jasper

WRFのv4.3xまではGRIB2形式のデータを扱うために必要となります(ビルド方法)。

v4.4以降、libpng, jasperはWPSに組み込まれているため(WPS v4.4リリースノート)、別途用意する必要はありません。

ライブラリの確認スクリプトを実行

公式サイトで外部ライブラリの確認用スクリプトが配布されています(リンク)。

おわりに

アルバイトで気象の数値シミュレーションモデルに触れる機会があり、その際に調べた内容を復習がでらまとめました。

以上、読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました