wrf-1way-nesting
1way-nesting (最終更新日 : 2010/11/02)
ここでは、以下のサイトを参考にしました。
http://www.mmm.ucar.edu/wrf/OnLineTutorial/CASES/NestRuns/ndown.htm
--- 実行の流れ ---
1. 2way-nestと同じようにWPSでの処理を行う。
2. 親ドメインを計算する。
3. 作成した親ドメインの結果から、子ドメインの初期値を作成する。(ndown)
4. 子ドメインを計算する。
-----------------
ここでは、例として、15km-3kmの1way-nestingを挙げます。
実行の流れのなかで、何度もnamelist.inputを変更するので、
毎度毎度、backupをとっておきながらやると、
失敗が少なくなると思います。
---
1. 2way-nestと同じようにWPSでの処理を行う。
ここは省略します。
---
2. 親ドメインを計算する。
ここでは、作成したnamelist.inputで親ドメインのみを計算します。
その際に書き換える点があります。
max_dom = 1,
にしておくことです。
出力は、wrfout_d01*です。
---
3. 作成した親ドメインの結果から、子ドメインの初期値を作成する。(ndown)
2. でwrfout_*がすべて作成されたら、
もともとのnamelist.inputをコピーしておきます。
$ cp namelist.input namelist.input_d01
そして、namelist.input内の、計算を始める日時と終わる日時を
同じに設定します。具体的には、
start_year = 2010,
start_month = 06,
start_day = 25,
start_hour = 12,
end_year = 2010,
end_month = 06,
end_day = 25,
end_hour = 12,
とします。
さらに、interval_seconds を、親ドメインの出力した間隔に合わせます。
例えば、親ドメインのoutputが1時間置きならば、
interval_seconds = 3600,
とします。
** 注意 **
一番内側のドメインが1kmの場合, 境界値の間隔を3時間(10800)以下にすると,
''Warning ZR + 2m is larger than the 1st WRF level''
という警告が出て, ある程度走ってから計算が止まってしまいます.
一番内側のドメインが1kmのように細かくなる場合は, 境界値として与える間隔は, 最少で3時間(10800)のようです.
もしかしたら, ほかのBugかもしれませんが. (2010/11/02 追記)
そして、
e_we =
e_sn =
dx =
dy =
grid_id =
parent_id =
i_parent_start =
j_parent_start =
parent_grid_ratio =
parent_time_step_ratio =
の設定を全て、子ドメイン用に書き換えます。
(親ドメイン用の設定を消して、左詰めするだけでOK)
そして、
WPSで作成した、met_em.d02*の初期時刻のみのファイルを
met_em.d01* という名前でコピーします。
$ cp met_em.02*** met_em.01***
そして、real.exeを実行。
(wrfinput_d01が出力される。)
その後、作成されたwrfinput_d01を
renameし、
wrfndi_d02 というファイルにします。
$ mv wrfinput_d01 wrfndi_d02
以上で、ndown.exeを行うための、入力ファイルの準備が整いました。
使用する入力ファイルとは、
親ドメインを計算した出力結果 → wrfout_d01* (複数data)
子ドメインの初期値 → wrfndi_d02 (1個だけ)
です。
ここで、ndown.exeを行うまえに、wrfndi_d02を作成したときに使った
namelist.inputをコピーしておきます。
$ cp namelist.input namelist.input_d02
さらに、親ドメインを作成したときに使用した、
namelist.inputを使用します。
$ cp namelist.input_d01 namelist.input
はじめは、親ドメインのみの計算だったので、
max_dom = 2
に書き直しておくことをわすれずに。
そして、ようやく、ndownの準備が整ったので、
ndown.exeを実行します。
うまくいけば、
wrfinput_d02 と wrfbdy_d02
というファイルが作成されているので、
このファイルをそれぞれ
wrfinput_d01 と wrfbdy_d01
にRENAMEします。
---
4. 子ドメインの計算。
入力ファイルは、ndownで作成した、
wrfinput_d01 と wrfbdy_d01
です。
これらは、名前上、はd01になっていますが、
データは、親ドメインの境界値をもらって作成された
子ドメインのデータの初期値になっています。
計算の際には、wrfndi_d02を作成したときに使った
namelist.inputを使用します。
$ cp namelist.input_d02 namelist.input
max_domain = 1
に変更し、
time_step =
等も全て子ドメイン用に書き換えます。
さらに、
&bdy_control のところで、
specified = .true.,
nested = .false.,
/
としておくこと。(2010/09/05 追記)
変更が終わったら、後は、wrf.exeを実行します。
Outputされるファイルは、wrfout_d01_<date>
という名前になっていますが、
中身は、子ドメインの計算結果になっています。
**この後、さらに3-4ドメインと計算していく場合に、
親ドメインのwrfout**のリンクを貼ったまま計算してしまうと、
そのリンク先が、新たに作成されるwrfout*のデータで置き換わってしまう。
そのため、計算を始めるまえに、親ドメインのwrfout**のリンクは消去しておく!
(2010/09/06 追記)