WRF関連,  投稿記事

WRFのダウンロードから実行まで

WRF : WEATHER RESEARCH AND FORECASTING MODELの略
領域気候モデル(Regional Climate Model)の一種で,米国NCARにより開発された気象モデル
以前は一つ前の世代のMM5が使用されてきたが,近年ではWRFが主流となっている.

①WRFのダウンロードの前に・・・
 自分のPCの環境を整えておく必要がある.
 今回の環境はUbuntu18.04LTSのPCで行う.
 ・gfrortran
 ・m4
 ・mpich(並列計算は行わないがインストールした)
 ・libpng-dev
 ・libjasper-dev(libpngと合わせて一つ前の記事に詳細を記述)
 ・ncl-ncarg
 ・libnetcdff-dev
 ・netcdf-bin
 ・ncview(地形データの確認にあると便利)
  等を準備した.勿論,netcdfの環境も実装済み(重要!)

*PCのNETCDFのPAThの関係上,事前にnetcdf-fortran内に/usr/local/libと/usr/local/includeのシンボリックリンクを貼りつけた.libnetcdfやnetcdf.incの場所がWRFコンパイルの際に必要となるため.

②WRFのソースをダウンロードする.
 https://www2.mmm.ucar.edu/wrf/users/
 ページ内のdownloadタブをクリックすると,”New Users” “Returning Users”があるため,
 該当する方を選択.登録をしていない場合は,メールアドレスを登録すれば今後は
 returning userとして入ることができる.

 今回は,以下のファイル達をダウンロードした.
 WRF-4.1.tar.gz
 WPS-4.1.tar.gz
 geog_high_res_mandatory.tar.gz

 それぞれ解凍すると
 WRF-4.1
 WPS-4.1
 WPS_GEOG
 ができる.

③WRF本体のコンパイル
 最初にWRF本体のコンパイルからスタートする.
 これが最初にして最大の難関

cd WRF-4.1
./configure

 と打つと,数字と文字によりconfigureの際の設定に関する選択肢が表示される.
 どのコンパイラを使うか,どのような条件でWRFを回すかなど
 今回は,32(gfortran, serial)を選択し,nestingの有無については1 (basic)を選択

 無事にconfigureが成功すると,configure.wrfができる.
 ここで,220行目あたりのLIB_EXTERNALの行にnetcdfのPATH/libの後ろに”-lnetcdff”
 が記述されてない場合は記述する.
 また,私の場合は,180行目あたりのRRMTG~の行も削除した. 

./compile em_real

 無事にコンパイルができるまでコーヒーでも飲みながら待機(結構時間がかかる)
 できていればsuccessfulの表示が出る

④WPSのコンパイル
 続いてWPSのコンパイルを行う.
 前回の記事でも書いた通り,ungrib.exeのためにlibjasperとlibpngが必要となる

cd WPS-4.1
./configure

 自身の設定に合わせて数字を選択.今回はgfortran, serialなので1を選択
 成功すればconfigure.wpsができる.
 configure.wps内の48行目あたりの-L$(NETCDF)/lib -lnetcdf の後に-lnetcdff
 がなければ書き足す.

./compile

成功すれば,
ungrib.exe
geogrid.exe
metgrid.exeができる.

ungrib.exe : gribデータの処理に必要(NCEPのデータ等)
geogrid.exe : 地形データの作成に必要(WPS_GEOGのデータを使用して地形を作成する)
metgrid.exe : 3つの中で最後に行う.(入力する気象データを整理を行う)

⑤実際にWRFによる計算を行う準備
 ここでの処理はすべてWPS-4.1内で行う
 test計算のために,2020/06/10 18:00UTC~2020/0616 18:00UTCの期間の
 NCEP FNLデータをダウンロードした.
 これをfnlディレクトリにまとめてWPS-4.1内に置く(WPS-4.1/fnl/*.grib2)
 今回はこのデータを使って近畿地方における計算を行う.

 計算に関する設定はnamelist.wpsで行う.
 いくつか重要な行について説明する

max_dom = 最大ドメイン数(今回の2)
start_date = ドメイン1の計算開始時刻,ドメイン2の計算開始時刻
end_date = ドメイン1の計算終了時刻,ドメイン2の計算終了時刻

**ドメインが3つある場合は,3列目にも記述**

interval_seconds = 計算に利用するデータに合わせる(NCEP FNLなら6h = 21600s)

&geogrid
parent_id = 1, 1,   親ドメインの番号
parent_grid_ratio = 1, 3, 親ドメインと子ドメインの比率.ここでは1:1/3
i_parent_start = 1, 33, 
j_parent_end = 1, 33, 子ドメインの左下点(i,j)を親ドメインのどこに置くかの設定
e_we = 100, 100, ドメイン1とドメイン2の格子数(東西方向)
e_sn = 100, 100, ドメイン1とドメイン2の格子数(南北方向)

dx = ドメイン1のx方向の格子間隔(単位はm)
dy = ドメイン1のy方向の格子間隔(単位はm)

ref_lat = 地形の中心となる緯度
ref_lon = 地形の中心となる経度

namelistの記述が整い次第,

./geogrid.exe

 を入力し,地形データ(geo_em.d01.nc, geo_em.d02.nc)を作成する.
 ここでncviewなどで地形データを確認して,不満があればnamelistを編集する

 地形データの次は,ungribに移行する
 ungribでは先ほどダウンロードしたfnlデータを指定する

./link_grib.csh gribデータのPATH
ln -s ungrib/Variable_Tables/Vtable.GFS Vtable
./ungrib.exe

 これによりFILE:YYYY-MM-DD_HHが生成
 この作業では全球のデータから必要な領域のみを抽出している

 最後に

./metgrid.exe

 により,met_em.d01.YYYY-MM-DD_HH:00:00:00.ncが生成される

⑥実際にWRFの計算を行う
 作業ディレクトリをWRF-4.1/run/に移動
 WPSでのnamelistと同じになるようにnamelist.inputを編集
 いくつか重要な項目のみを抜粋して説明する

history_interval = 60, 10, 
frames_per_outfile = 1, 1,
ドメイン1は60分に1つ,ドメイン2は10分に1つファイルをoutput

&domainds
time_step = 15, 計算のタイムステップ
p_top_requested = 5000, (単位はPa)

num_metgrid_levels = 34,
num_metgrid_soil_levels = 4, 
この2つは入力するファイル(ここではFNL)によって決定

dx = 4500, 1500, 
dy = 4500, 1500, 
ドメイン1とドメイン2の格子サイズ
4500/3 = 1500の関係

parent_id = 0, 1, 2,
親ドメインのid
最も外側のドメインのidは0

&physics
各種物理過程のオプション
詳細はWRFのUSERS GUIDEを参照

&fdda
ナッジングのオプション
詳細はWRFのUSERS GUIDEを参照

namelistの編集後

ln -s ../../WPS-4.1/met_em.* .
./real.exe

これにより側面境界(wrfinput_d01, wrfbdy_d01)を作成

無事に境界条件が作成された後

./wrf.exe

wrfout_d01_YYYY-MM-DD_HH:00:00:00が生成される

これによりWRFが計算できる.

参考にしたサイト
https://sites.google.com/site/afcwrf/home/install
http://www.lowtem.hokudai.ac.jp/multi-sphere/cloud/kawasima/WRF/wrf.html
https://qiita.com/H1r0ak1Y0sh10ka/items/a1d60768d15663e16e25
http://adachi-ucm.sakura.ne.jp/tips/WRF.html
https://www.mmm.ucar.edu/wrf-user-support-contributor-information

WRFのダウンロードから実行まで はコメントを受け付けていません