TC Bogus
Last modified: 2015/03/13
参考URL:
http://www2.mmm.ucar.edu/wrf/users/docs/user_guide_V3.5/users_guide_chap10.htm#tc_bogus
http://www2.mmm.ucar.edu/wrf/users/tutorial/hurricanes/AHW_initialization.pdf
http://www2.mmm.ucar.edu/wrf/users/tutorial/hurricanes/AHW_setup_run.pdf
概要:
基本的には、tc.exe を用いる。
(dmpar でコンパイルしたものは正常動作しないため,serial でコンパイルしたものを別途用意する必要がある.詳細は,このページの末尾にある情報を参照)
tc.exe が namelist.input 内で使用するセクション名は、&tc である。
サンプル
&tc
insert_bogus_storm = .true.,
remove_storm = .false.,
num_storm = 1
latc_loc = 25.0
lonc_loc = -75.0
vmax_meters_per_second = 61.7
rmax = 90000.0
vmax_ratio = 0.75
rankine_lid = 50.
/
上記の設定は、台風中心が北緯25度、西経75度にあり、持続した最大風速が120 kts (~ 61.7 m/s)、台風の半径を90 km と仮定してランキン渦を埋め込むものである。
vmax_ratio の決め方は、水平格子間隔が 45 km の場合 0.75、15 km の場合 0.9 にするとよい。
rankine_lid はデフォルトで 40 mb(hPa) になっている模様。
出力名は、常に auxinput1_d0X_YYYY-MM-DD_HH:00:00.nc となる。
方針:
metgrid の実行までを通常通り行う。
元の台風の位置、半径、最大接線風速を把握し、remove_storm = .true., として台風を取り除く。
上記で出力されたauxinput1_d0X_YYYY-MM-DD_HH:00:00.nc を
同時刻の met_em.d0X.YYYY-MM-DD_HH:00:00.nc に書き換えか、
シンボリックリンクを作成する。
実際の台風の位置、半径、最大接線風速に合わせてパラメータを編集し、
insert_bogus_storm = .true., として
ランキン渦を仮定した台風を挿入。
出力されたauxinput1_d0X_YYYY-MM-DD_HH:00:00.nc を
同時刻の met_em.d0X.YYYY-MM-DD_HH:00:00.nc に書き換えるか、
シンボリックリンクを作成する。
real.exe, wrf.exe をそれぞれ通常通り実行する。
結果例
図の説明:
上段左図は元データ、
上段中央図は元データから台風を取り除いた場合、
上段右図は元データから2°西に台風ボーガスを施した場合、
下段左図は元データから1°西に台風ボーガスを施した場合、
下段中央図は元データと同じ位置に台風ボーガスを施した場合、
下段右図は元データから1°東に台風ボーガスを施した場合の海面更正気圧[Pa]の水平分布。
疑問:
台風のランキン渦による仮定はどのように行われるべきか?
→露木・川畑, 2007: 気象学におけるデータ同化, 気象研究ノート, 120--127. あたりが参考になる。
情報提供して頂いたitokoskさん、ありがとうございます!
現実の風速場と同じ・強めにする?
→最大風速の1.2倍程度。
台風半径は?
→現実の台風がどのような速度場や構造をもっているか知っておく必要がある?
→暴風半径を参考にする。
台風を取り除かず、そのままランキン渦を埋め込むだけではダメ?
→同じ位置ならばOK。位置をずらすならば一度台風を取り除いた場に再度埋め込む必要がある。
注意:
dmparでコンパイルしたtc.exeは正常動作しない(おそらくMPI計算をサポートしていない)
→tc.exe のみserial or smpar で再コンパイルする必要がある
ver. 3.4.1, コンパイルオプションは serial にしておくと確実に上手くいく。
土壌水分量等の地面系データが無い場合、tc.exe が失敗する
→NCEP FNL のデータを使用する
(無い場合は、Fake data を作っておく?)
→serial でコンパイルしたものだと上手くいく。
どうやら、地面系データが入力される met_em.d0X* データ内に無い場合は強制的にフラグを書き直している模様
そのため tc.exe or real.exe 実行時に境界値の num_soil_rayers に不整合が生じるようだ
→そこで、tc_em.F を改変する
書き換えてみたが、だめだった
→serial でコンパイルしたものだと上手くいく。
-----
# ver. 3.5.1では intel compiler 使用, serial, smpar 選択時に, real.exe のみ以下のエラーを吐いて失敗する。
# dmpar ではコンパイルは通るものの、実行不可。
# おそらく、module_initialize_real.F のエラーだと思われるが、コンパイル時にエラーは無かった。
# PGI compiler の場合でも失敗した。こちらは、module_initialize_real.F のコンパイル時にエラーが出ていた (未解決)。
real_em.f90(16): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [MODULE_INITIALIZE_REAL]
USE module_initialize_real, ONLY : wrfu_initialize, find_my_parent, find_my_parent2
-------^
real_em.f90(100): error #6406: Conflicting attributes or multiple declaration of name. [WRFU_INITIALIZE]
CALL WRFU_Initialize( defaultCalKind=WRFU_CAL_GREGORIAN, rc=rc )
--------^
real_em.f90(181): error #6406: Conflicting attributes or multiple declaration of name. [FIND_MY_PARENT2]
CALL find_my_parent2( grid_ptr2 , grid_ptr , parent_id , found_the_id )
-----------------^
real_em.f90(16): error #6580: Name in only-list does not exist. [WRFU_INITIALIZE]
USE module_initialize_real, ONLY : wrfu_initialize, find_my_parent, find_my_parent2
--------------------------------------^
real_em.f90(16): error #6580: Name in only-list does not exist. [FIND_MY_PARENT]
USE module_initialize_real, ONLY : wrfu_initialize, find_my_parent, find_my_parent2
-------------------------------------------------------^
real_em.f90(16): error #6580: Name in only-list does not exist. [FIND_MY_PARENT2]
USE module_initialize_real, ONLY : wrfu_initialize, find_my_parent, find_my_parent2
-----------------------------------------------------------------------^
real_em.f90(277): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [MODULE_INITIALIZE_REAL]
USE module_initialize_real
-------^
real_em.f90(359): error #6404: This name does not have a type, and must have an explicit type. [INTERNAL_TIME_LOOP]
internal_time_loop = loop
------^
compilation aborted for real_em.f90 (code 1)
make[1]: [real_em.o] Error 1 (ignored)
---