ARWpost のインストール

WRF の計算で得られる出力ファイル(wrfout_…)をGrADSで読める形式に変換するツール ARWpost のインストール手順のメモ.

wrfout_d01_… のような WRF の出力ファイルを読み込んで可視化したい. netcdf 形式なので, それに合わせた .ctl ファイルを作成して GrADS で直接読み込もうとしてみたが上手くいかなかった. そこで, GrADS で読めるデータフォーマットへの変換機能がある公式ツール ARWpost を使用することにした.

1. ダウンロード・展開

公式ページから ARWpost の Version 3.1 をダウンロードして展開する

wget https://www2.mmm.ucar.edu/wrf/src/ARWpost_V3.tar.gz
tar zxvf ARWpost_V3.tar.gz

詳細は ARWpost ディレクトリ内の README ファイルを参照されたい.


2. コンパイル

./configure

以下のようなプロンプトが表示される:

Will use NETCDF in dir: /mnt/hail6/ohara/wrf_471/libs/netcdf
------------------------------------------------------------------------
Please select from among the following supported platforms.

   1.  PC Linux i486 i586 i686 x86_64, PGI compiler	
   2.  PC Linux i486 i586 i686 x86_64, Intel compiler	
   3.  PC Linux i486 i586 i686 x86_64, gfortran compiler 

Enter selection [1-3] : 

自分のマシン環境に合わせて数字を選択する.

./configure を実行した際に, 以下のような警告が出る場合がある:

** WARNING: No path to NETCDF and environment variable NETCDF not set.
** would you like me to try to fix? [y]

この場合は, 一度中断する(Ctrl + C). NETCDF の環境変数を設定する必要がある. 例えば, /mnt/wrf/libs/netcdf にNETCDF のライブラリが入っている場合, 以下のように設定する:

export NETCDF="/mnt/wrf/libs/netcdf"
export PATH="$NETCDF/bin:$PATH"
export LD_LIBRARY_PATH="$NETCDF/lib:$LD_LIBRARY_PATH"

ls $NETCDF/lib で libnetcdf.a や libnetcdff.a が見えていればOK. 再度, ./configure を実行すればよい.

./configure を実行すると, configure.arwp というファイルが生成される. マシン環境に合わせてコンパイラのオプション等を設定する. 私の場合, -O3 オプションを付け加える以外の変更は行わずにコンパイルできた. 以下は, 実際に使用した設定である:

FC              =       ifort
FFLAGS          =       -O3 -FR -convert big_endian
F77FLAGS        =       -O3 -convert big_endian
FNGFLAGS        =       $(FFLAGS)
LDFLAGS         =       
CC              =        gcc -DFSEEKO64_OK
CFLAGS          =       
CPP             =       /lib/cpp -traditional
CPPFLAGS        =       -DIO_NETCDF -DIO_GRIB1 -DIO_BINARY -Dbytesw 

configure.arwp の設定が完了したらコンパイルを実行する:

./compile

ARWpost.exe が生成されていれば完了である.

私の場合は, 以下のようなエラーが出たため, 追加の作業が必要であった:

......
module_interp.f:(.text+0xb9cc): undefined reference to `ncvgt_'
module_interp.o: In function `module_interp_mp_get_keep_array_':
module_interp.f:(.text+0xd073): undefined reference to `nf_inq_varid_'
module_interp.f:(.text+0xd1a9): undefined reference to `nf_inq_varid_'
module_interp.f:(.text+0xd23a): undefined reference to `nf_inq_var_'
module_interp.f:(.text+0xd68c): undefined reference to `ncvgt_'
module_interp.f:(.text+0xda6a): undefined reference to `ncvgt_'
module_interp.f:(.text+0xdca1): undefined reference to `ncvgt_'
make: [ARWpost.exe] Error 1 (ignored)

NETCDF-Fortran のライブラリが適切にリンクされていないために生じたエラーであった. src ディレクトリ内の Makefile における設定を以下のように変更することで解決した:

# 変更前(19行目)
-L$(NETCDF)/lin -I$(NETCDF)/include -lnetcdf

# 変更後(19行目): -lnetcdff を追加
-L$(NETCDF)/lin -I$(NETCDF)/include -lnetcdff -lnetcdf

上記変更後, 一度 ./clean を実行し, 再度 ./compile を実行すると, コンパイルが成功した.


3. GrADS 形式への変換

2020/01/01 00Z から 2020/01/02 00Z までの24時間について WRF シミュレーションを実行し, 1時間ごとの出力ファイル25個が以下のように得られている場合を考える:

/mnt/wrf/run/wrfout_d01_2020-01-01_00:00:00
/mnt/wrf/run/wrfout_d01_2020-01-01_01:00:00
...
...
/mnt/wrf/run/wrfout_d01_2020-01-02_00:00:00

namelist.ARWpost を編集する(一部のみ記載). 開始・終了日時と時間間隔(秒単位)を指定する:

&datetime
 start_date = '2020-01-01_00:00:00',
 end_date   = '2020-01-02_00:00:00',
 interval_seconds = 3600,
 /

入出力ファイルのパス等を設定:

&io
 input_root_name = '/mnt/wrf/run/wrfout_d01_2020-01-',
 output_root_name = './wrfout_grads',
 plot = 'all',
 mercator_defs = .trure.,
 /

input_root_name には, 25個のファイルの共通の接頭辞を書く. こうすることで, /mnt/wrf/run/wrfout_d01_2020-01- で始まるすべてのファイルを自動的に参照してくれる. output_root_name には好きな名前を付けるとよい. plot で ‘all’ を選択すると, 利用可能なすべての変数について GrADS 形式のファイルに書き出される. ‘basic’ や ‘list’ などほかの選択肢については, README の説明を参照されたい.

鉛直層への内挿に関する設定:

&interp
 interp_method = 1,
 interp_levels = 1000.,950.,900.,850.,800.,750.,700.,650.,600.,500.,400.,300.,200.,100.,
 /

interp_method で1を選択すると, ユーザーが指定した気圧面/高度面について計算される. interp_levels で気圧面または高度面の値を列挙する. 単位は hPa または km であり, 下層➡上層の順に記載する. interp_method = 0 とすると, モデル面すべてについて計算される.

namelist.ARWpost の設定が完了したら, ARWpost.exe を実行する:

./ARWpost.exe

“Successful completion of ARWpost” のメッセージが表示され, wrfout_grads.dat, wrfout_grads.ctl ファイルができていれば完了である. 後は, GrADS からいつものように .ctl ファイルを開いて描画すればよい.