#topicpath
* WRFの物理パラメタ・初期条件・境界条件(実行時のいろいろ) [#x8357a33]
- 目次
++ [[新しいケースの作成>#qe2528b4]]~
++ [[変数やサブルーチンを調べる手掛かり>#x1b3f2ee]]
++ [[WRFの諸条件の設定>#r214bb0e]]~
+++ [[地表面高度>#e2785409]]~
+++ [[地表面状態>#labcd9ea]]~
+++ [[コリオリパラメタ>#k7955d42]]~
+++ [[境界条件>#b15305f8]]~
+++ [[物理モデル>#jf9dd6d4]]~
++ [[変数の出力>#j090917a]]~
~
- その他
-- WRF のインストールについては、[[WRFの導入>../WRFの導入]]へ。
-- WRF 全般については[[領域気象モデル>../]]へ。

** 新しいケースの作成 [#qe2528b4]
*** はじめに [#odb15f69]
-- 新しいケース名を設定する必要性について~
~
WRF で理想化された状況について計算する場合、test ディレクトリ以下にあるようなディレクトリ名に
対応したケースがあらかじめ用意されているので、これを用いて計算することが多い。~
しかし、自分でプロジェクトを管理するためには、独自にケース名を設定したい。以下は、試行錯誤した結果得られた情報。~
~
*** 準備 [#q0185ac6]
-- 設定ファイルを探した結果~
" ./complile ケース名" を実行するので、ケース名がどのファイルに含まれているかが分かればよい。それを検索する。結果は次のとおり。~
~
+++ Makefile
+++ dyn_em/depend.dyn_em~
~
*** 既存のファイルの編集 [#d483196e]
  新規プロジェクトのケース名を "em_&color(red){9bar};" とする。
+ &color(darkred){Makefile};~
~
次のような記述を加える。"em_9bar" 1箇所、"9bar" 1箇所。~
  em_9bar : wrf
  	@ echo '--------------------------------------'
  	( cd main ; $(MAKE) MODULE_DIRS="$(ALL_MODULES)" SOLVER=em IDEAL_CASE=9bar em_ideal )
  	( cd test/$@ ; /bin/rm -f wrf.exe ;         ln -s ../../main/wrf.exe . )
  	( cd test/$@ ; /bin/rm -f ideal.exe ;       ln -s ../../main/ideal.exe . )
  	( cd test/$@ ; /bin/rm -f README.namelist ; ln -s ../../run/README.namelist . )
  	( cd run ; /bin/rm -f ideal.exe ;           ln -s ../main/ideal.exe . )
  	( cd run ; if test -f namelist.input ; then \
  		/bin/cp -f namelist.input namelist.input.backup ;\
  		fi ; \
  		/bin/rm -f namelist.input ;         ln -s ../test/$@/namelist.input . )
  	( cd run ; /bin/rm -f input_sounding ;      ln -s ../test/$@/input_sounding . )
  	@echo "build started:   $(START_OF_COMPILE)"
  	@echo "build completed:" `date`
いくつかのテストケースにあるような
 	( cd test/$@ ; /bin/rm -f gribmap.txt ;     ln -s ../../run/gribmap.txt . )
 	( cd test/$@ ; /bin/rm -f grib2map.tbl ;    ln -s ../../run/grib2map.tbl . )
という記述は、おそらくいらない。~
~
+ &color(darkred){dyn_em/depend.dyn_em};~
~
次のような記述を加える。(多分)すべての理想化実験のケースについて、同じように記述されているので、~
ここで作成する新たなファイルに対しても同様に設定する。
 module_initialize_9bar.o : \
 		../frame/module_domain.o \
 		../frame/module_configure.o  \
 		../frame/module_state_description.o \
 		../frame/module_timing.o \
 		../frame/module_dm.o \
 		../share/module_io_domain.o \
 		../share/module_model_constants.o \
 		../share/module_bc.o \
 		module_init_utilities.o
~
~
*** 新規ディレクトリ・ファイルの作成 [#d483196e]
+ &color(darkred){test/em_9bar};~
新規にディレクトリを作成する。このディレクトリ内に次のファイルを作成する。~
~
++ &color(darkred){test/em_9bar/namelist.input};~
計算上のパラメタなどを記述したファイルを作成する。~
~
++ &color(darkred){test/em_9bar/input_sounding};~
初期の鉛直方向のデータを記述するファイルを作成する。~
~
++ &color(darkred){test/em_9bar/input_soil};~
初期の土壌のデータを(必要に応じて)作成する。~
~
※ その他、"run_me_first" など、雛形になるようなテストケースからコピーしておく。~
~
+ &color(darkred){dyn_em/module_initialize_9bar.F};~
地形・初期擾乱などを与えるためのファイルを作成する。~
~
~
** 変数やサブルーチンを調べる手掛かり [#x1b3f2ee]
- はじめに~
~
WRF は非常に膨大なソースプログラムによって書かれている上に、並列処理のために可読性が下がっている(ように思う)。~
バージョンは違うかもしれないが、変数やサブルーチンを調べるのに使えそうな方法があったので、備忘録としてここに記す。~
具体的には、次のように google で検索する。
 変数名とか関数名  site:www.mmm.ucar.edu/wrf/WG2/wrfbrowser/
-- 使用例~
~
サブルーチン SWRAD は、サブルーチン radiation_driver で、radiation_driver は first_rk_step_part1 などで呼ばれているとわかる。~
これをたどると、短波放射計算のための緯度の情報は、grid%xlat で与えられていることがわかる。放射の緯度による変化を与えるためには、~
grid%xlat を調整すればいいのである。~
~
** WRFの諸条件の設定 [#r214bb0e]
*** はじめに [#sbe44fb7]
-- WRF の初期化~
~
計算を行うには初期化する必要がある。現実のデータを適用するためには、WPS と real.exe を用いる。~
理想化された状況について計算する場合には ideal.exe を用いる。二者択一である。~
~
なお、実行時に real.exe と ideal.exe のどちらを選ぶかという問題ではなく、./compile を実行する時点で選んで置かなければならないことにも注意。~
~
-- 設定用のファイル(em_tropical_cyclone を例に)~
--- test/em_tropical_cyclone/&color(red){nameist.input};~
組み込まれている物理学的オプション、力学的オプションを変更するためのファイル。~
~
--- &color(red){dyn_em/module_initialize_*.F};~
ファイル名のうち、* の部分にはテストケースの名前が入る。~
プログラムで記述しなければならないような、地表面高度などの設定をする。~
~
--- test/em_tropical_cyclone/&color(red){input_sounding};~
初期値の鉛直方向のプロファイル。~
・ 1行め   地表面気圧(hPa), 温位(K), 水蒸気混合比(&color(red){kg/kg};)~
・ 2行め以降 高度(m), 温位(K), 混合比(&color(red){kg/kg};), 風速x成分(m/s), 風速y成分(m/s)~
~
ただし、鉛直1次元計算をする em_scm_xy では、次のようになる。~
・ 1行め   地表面高度(m), 風速x成分(10m, m/s), 風速y成分(10m, m/s), 温位(2m, K), 水蒸気混合比(2m, g/kg), 地表面気圧(hPa)~
・ 2行め以降 高度(m), 風速x成分(m/s), 風速y成分(m/s), 温位(K), 混合比(g/kg)~
~
*** 地形の高度の初期化 [#e2785409]
    &color(red){dyn_em/module_initialize_*.F}; で設定する。
-- 地形データの設定~
地表面の高度を設定するには次の配列
 grid%ht(i,j)
を変更する。関連する配列については、次のようにすると良さそうである。
 grid%phb(i,1,j) = g*grid%ht(i,j)
 grid%php(i,1,j) = 0.
 grid%ph0(i,1,j) = grid%phb(i,1,j)
このようにすると、以下の処理で上空の geopotential height も設定してくれるようである。~
~
-- 地形データの確認
 -> csh run_me_first.csh
 -> ./ideal.exe
を実行した後、wrfinput_d01 (netCDFファイル) を用いて、変数 hgt を表示させれば値がわかる。

*** 地表面状態の設定 [#labcd9ea]
    &color(red){dyn_em/module_initialize_*.F}; で設定する。
-- Land Mask~
陸か海かの区別をするパラメタ。
 xland(i,j)
これが 1 ならば陸、2 ならば海(水の上)を表す。~
~
-- Land Use Categories~
[[ARWの User's Guide>http://www.mmm.ucar.edu/wrf/users/docs/user_guide_V3/ARWUsersGuideV3.pdf]] を参照して設定する。いくつかの対応表があるので注意する。基本的な考え方は次の通り。~
+++ 標準的には、[[USGS-24 カテゴリ>http://www.mmm.ucar.edu/wrf/users/docs/user_guide_V3/users_guide_chap3.htm#_Land_Use_and]]が利用される。~
例えば、海ならば 16 (Water Bodies) を選択すれば良さそうである。
+++ MODIS land-cover classification も利用できる。~
しかし、使うのであれば、WRF の sf_surface_physicsを2に設定し、Land Surface 物理モデルとして、Noah land surface model を使わなければならない。

*** コリオリパラメタ [#k7955d42]
    &color(red){dyn_em/module_initialize_*.F}; で設定する。
-- grid%f(i,j)~
に、適切な値を設定する。~
~
*** 境界条件 [#b15305f8]
    &color(red){nameist.input}; で設定する。
-- 設定例
 periodic_x                          = .true.,
 symmetric_xs                        = .false.,
 symmetric_xe                        = .false.,
 open_xs                             = .false.,
 open_xe                             = .false.,
 periodic_y                          = .false.,
 symmetric_ys                        = .false.,
 symmetric_ye                        = .false.,
 open_ys                             = .true.,
 open_ye                             = .true.,
それぞれ、x,y 方向について、周期境界条件か、対称な境界条件か、オープンな境界条件か。~
~
*** 物理モデル [#jf9dd6d4]
    &color(red){nameist.input}; で設定する。~
++ 微物理過程~
 mp_physics = 1
--- 1 : Kessler : 簡単なモデル
--- 95 : Eta    : NCEP モデルの coarse 用(ただし、使うときには、このオプションだけでは駄目のようだ。 )
++ 非静力学モデルの採否
 non_hydrostatic = .ture.
++ 長波放射
 ra_lw_physics = 1
--- 1 : RRTM scheme~
よくわからないけど、Rapid Radiative Transfer Model
++ 短波放射
 ra_sw_physics = 1
--- 1 : Dudhia scheme~
よくわからないけど、Simple で Efficient なようだ。
++ 地形による日射の効果
 slope_rad                           = 1,
 top_shad                            = 1,
斜面と地形による日射量の変化は考慮しないならば、0 にするのではなく、書かないのが正解のようだ。~
これを書いたために、動かなくなった。なお、これらを有効にする必要があるのは、メッシュの細かいモデルであると
++ 地表付近の物理
--- Land Surface
 sf_surface_physics                  = 1,
※ 5層で温度を計算
--- Surface Layer
 sf_sfclay_physics                   = 5,
※ 5 : MYNN
--- Planetary Boudnary Layer
 bl_pbl_physics                      = 5,
※ 5 : MYNN 2.5
++ 積雲対流スキーム
 cu_physics                          = 14
--- 14 : New Simplified Arakawa-Schubert
++ SST の更新
 sst_skin                            = 1
長期間積分に便利な、SST の更新するためのオプション。~
長期間積分に便利な、SST の更新するためのオプション。cf. [[Zeng and Beljaars(2005)>http://www.atmo.arizona.edu/~brunke/ocean_papers/Zeng_and_Beljaars_tskin_2005.pdf]]
~
ちなみに、似たような名前のsst_update というオプションもある。~
sst_update は、外部から SST を与えるためのオプション。
cf. [[Zeng and Beljaars(2005)>http://www.atmo.arizona.edu/~brunke/ocean_papers/Zeng_and_Beljaars_tskin_2005.pdf]]
こちらの sst_update は、外部から SST を与えるためのオプションであるので混同しないようにする。~

** 変数の出力 [#j090917a]
   内部の変数がすべて出力されているわけではない。これを増やすと、内部での計算がどのような経過で行われているかを調べることができる。~
   ただし、3次元的な放射に関する変数は出力できないようになっているようである。残念。~
   [[この辺>http://wstorm.exblog.jp/8336175]]の記事をありがたく参照する。~

トップ   編集 差分 添付 複製 名前変更 リロード   新規 検索 最終更新   ヘルプ   最終更新のRSS