日本周辺を対象に高解像度のシミュレーションを行う場合, 初期・境界値に解像度の高いデータを使用したい. もちろん, 全球データから数段階のネスティングをするという手もあるが手間がかかる. 本稿では, MSM の格子点データ(GPV)を初期・境界値に使用したシミュレーションを行うための手順をまとめる.
筆者が使用したWRFのバージョンは4.7.1である.
WRFのシミュレーションの大まかな流れは次の通りである:
- 地形ファイルの作成 (geogrid.exe)
- 初期・境界値に使うデータの前処理 (ungrib.exe, metgrid.exe)
- 初期・境界値の作成 (real.exe)
- 時間積分の実行 (wrf.exe)
MSM GPV を使用するためには, 前処理の工程のみ変更すればよく, 他の作業は従来通りである.
1. MSM GPV のダウンロードと解析値の切り出し
京都大学生存圏研究所の生存圏データベースからダウンロードする. リンク先に書かれているように, 「教育研究機関向け」に提供されているデータであることに注意が必要であり, ルールを守ること.
MSM GPV は, 気圧面データと地表面データのファイルに分かれているので両方ダウンロードする:
date=20260301
url=http://database3.rish.kyoto-u.ac.jp/arch/jmadata/data/gpv/original
dir=${date:0:4}/${date:4:2}/${date:6:2}
gpv_sfc=Z__C_RJTD_${date}0000_MSM_GPV_Rjp_Lsurf_FH00-15_grib2.bin
gpv_prs=Z__C_RJTD_${date}0000_MSM_GPV_Rjp_L-pall_FH00-15_grib2.bin
wget -c ${url}/${dir}/${gpv_sfc}
wget -c ${url}/${dir}/${gpv_prs}ダウンロードしたデータには, 初期値以外の予報値も含まれているので, 初期値(解析値)のみを切り出す:
gpv_sfc=Z__C_RJTD_${date}0000_MSM_GPV_Rjp_Lsurf_FH00-15_grib2.bin
gpv_prs=Z__C_RJTD_${date}0000_MSM_GPV_Rjp_L-pall_FH00-15_grib2.bin
wgrib2 ${gpv_sfc} | grep anl | wgrib2 -i ${gpv_sfc} -grib msm_sfc_${date}.grib2
wgrib2 ${gpv_prs} | grep anl | wgrib2 -i ${gpv_prs} -grib msm_prs_${date}.grib2上では, sfc, prs それぞれのデータから解析値のみを取り出し, msm_sfc_${date}.grib2, msm_prs_${date}.grib2 に書き出しているが, 書き出し先のファイル名は自由に決めればよい.
上記の手順で, シミュレーションに必要な期間の MSM GPV の解析値データを準備する.
2. ungrib.exe の実行
MSM GPV データに対して ungrib.exe を使用するためには, MSM 用の Vtable を作成しておく必要がある.
WPS/ungrib/Variable_Tables/ の中に, Vtable.JMAMSM というファイルを作成し, 以下の内容を書きこむ:
GRIB1| Level| From | To | metgrid | metgrid | metgrid |GRIB2|GRIB2|GRIB2|GRIB2|
Param| Type |Level1|Level2| Name | Units | Description |Discp|Catgy|Param|Level|
-----+------+------+------+----------+---------+-----------------------------------------+-----------------------+
11 | 100 | * | | TT | K | Temperature | 0 | 0 | 0 | 100 |
33 | 100 | * | | UU | m s-1 | U | 0 | 2 | 2 | 100 |
34 | 100 | * | | VV | m s-1 | V | 0 | 2 | 3 | 100 |
52 | 100 | * | | RH | % | Relative Humidity | 0 | 1 | 1 | 100 |
7 | 100 | * | | HGT | m | Height | 0 | 3 | 5 | 100 |
11 | 105 | 1.5 | | TT | K | Temperature at 1.5 m | 0 | 0 | 0 | 103 |
52 | 105 | 1.5 | | RH | % | Relative Humidity at 1.5 m | 0 | 1 | 1 | 103 |
33 | 105 | 10 | | UU | m s-1 | U at 10 m | 0 | 2 | 2 | 103 |
34 | 105 | 10 | | VV | m s-1 | V at 10 m | 0 | 2 | 3 | 103 |
1 | 1 | 0 | | PSFC | Pa | Surface Pressure | 0 | 3 | 0 | 1 |
2 | 102 | 0 | | PMSL | Pa | Sea-level Pressure | 0 | 3 | 1 | 101 |
-----+------+------+------+----------+---------+-----------------------------------------+-----------------------+このまま, ungrib を行っても動作するが, 地表面の気温・湿度が読み込まれない. これは, MSM の地上気温は1.5 mのものであり, WPSのデフォルトでは1.5 mという高さに対応していないためである. 田中氏のページに書かれている方法でこの問題を回避できる.
WPS/ungrib/src/rd_grib2.F を開く. hgt_msm を計算し, hgt_msm = 1.5 (m) の場合も level=200100 とする条件を追加する (バージョン4.7.1では, 775~785行目付近):
hgt_msm=gfld%ipdtmpl(12) * (10. ** (-1. * gfld%ipdtmpl(11))) ! <--- 高度(1.5 m)を計算
if (gfld%ipdtmpl(12) .eq. 2. .or.
& hgt_msm .eq. 1.5 .or. ! <--- 追加する条件
& gfld%ipdtmpl(12) .eq. 1000. .or.
& gfld%ipdtmpl(12) .eq. 10. ) then
level=200100.
else以上の作業は一度行えばそれ以降は変更しなくてもよい.
これ以降は, 毎回必要な作業である:
- MSM の grib ファイルのリンクを作成 (link_grib.csh)
- namelist.wps の編集
- ungrib.exe の実行
2026/03/01 00UTC ~ 2026/03/02 00UTC の24時間シミュレーションを行う場合を例に説明する.
手順1で作成した MSM のgrib ファイルが /mnt/MSM/grib/ 以下に保存されているとする:
ls /mnt/MSM/grib/
msm_sfc_2026030100.grib2 msm_prs_2026030100.grib2
msm_sfc_2026030103.grib2 msm_prs_2026030103.grib2
msm_sfc_2026030106.grib2 msm_prs_2026030106.grib2
msm_sfc_2026030109.grib2 msm_prs_2026030109.grib2
msm_sfc_2026030112.grib2 msm_prs_2026030112.grib2
msm_sfc_2026030115.grib2 msm_prs_2026030115.grib2
msm_sfc_2026030118.grib2 msm_prs_2026030118.grib2
msm_sfc_2026030121.grib2 msm_prs_2026030121.grib2
msm_sfc_2026030200.grib2 msm_prs_2026030200.grib2これらの grib ファイルのリンクを作成する:
# WPS ディレクトリ内で作業
./link_grib.csh /mnt/MSM/grib/msm_* # これですべてのファイルについてリンクができる次に, nanelist.wps を編集する. prefix と fg_name に ‘MSM’ を指定する. 違う名前でもよいが, metgrid.exeで参照するMSMのファイルの接頭辞(fg_name)と, ungrib.exe で生成されるファイルの接頭辞(prefix)は一致させなければならない. MSMとほかのデータも使う場合には, 対応するファイルの接頭辞を fg_name に列挙すること. その他のパラメータの設定の説明は割愛する.
&share
wrf_core = 'ARW',
max_dom = 1,
start_date = '2026-03-01_00:00:00',
end_date = '2026-03-02_00:00:00',
interval_seconds = 10800,
/
&geogrid
parent_id = 1,
parent_grid_ratio = 1,
i_parent_start = 1,
j_parent_start = 1,
e_we = 301,
e_sn = 301,
geog_data_res = 'topo_gmted2010_30s+default',
dx = 1000,
dy = 1000,
map_proj = 'lambert',
ref_lat = 35.50,
ref_lon = 140.00,
truelat1 = 30.0,
truelat2 = 40.0,
stand_lon = 140.0,
geog_data_path = '/mnt/wrf_471/GEOG/WPS_GEOG',
/
&ungrib
out_format = 'WPS',
prefix = 'MSM',
/
&metgrid
fg_name = 'MSM',
io_form_metgrid = 2,
/以上で準備が整った. Vtable.JMAMSM をリンクしてから ungrib.exe を実行する:
# 引き続き, WPS ディレクトリ内で作業する
ln -sf ./ungrib/Variable_Tables/Vtable.JMAMSM ./Vtable
./ungrib.exe計算が正常に進めば, MSM:2026-03-01_00, MSM:2026-03-01_03, …, MSM:2026-03-02_00 が生成される.
metgrid.exe, real.exe の実行で初期・境界値 (wrfinput_d01, wrfbdy_d01)が生成される. 後はいつも通り namelist.input を編集し, wrf.exe を実行すれば時間積分が開始される.
注意
MSM GPV データには, SSTや地表面温度, 土壌温度などが含まれていない. そのため, 上記の方法では, SSTや地表面温度が勝手に補完され, 現実的でない値になってしまう可能性がある. 実際にシミュレーションを行う場合には, SST や 地表温度データの準備も必要である. MGDSST や ERA5-Land hourly data を初期・境界値に使用する方法が考えられる.