WRF - Initialization

Linking the metgrid outputs

上一個步驟(metgrid)中已製作完成包含氣象資訊和地理(下墊面)資訊的合併檔(met_em),接著會使用real.exe 這支程式進行模式的初始化 (initialization)。

met_em檔案位於WPS下(請留意 namelist.wps 中可以調整 met_em 產出的路徑位址,請依自身情況調整),需要將檔案移至WRF執行模擬的 run 目錄下,非必要盡量使用軟(象徵性)連結的方式將要使用到的資料在 ${WRF_DIR}/run 建立連結。

[USER@VAPOR ***]$ cd ${WRF_DIR}/run

[USER@VAPOR ***]$ ln -sf ${WPS_DIR}/met_em*nc .

Editing namelist.input

初始化會計算 reference state ,垂直座標內插,擾動場計算,產出邊界條件,地表資料遮罩等等。也就是說,原本 met_em 的變數位於等壓面上,經過 ./real.exe 後,位置會變成 WRF 模式使用的垂直座標系統。這邊要留意的是 WRF version 3 預設的垂直座標是使用地勢追隨座標,而 WRF version 4.0+開始預設使用地勢追隨混和靜壓力座標。如要在WRF version 4.0+ 使用單純的地勢追隨座標,需要在namelist.input 列出以下這些設定: hybrid_opt = 0 以及 force_use_old_data = .true.

執行 real.exe 之前,打開 namelist.input 檔案先來修改模式設定,內容跟 namelist.wps 很類似,建議將這時候以執行 ./real.exe 為目的的前提下作設定,執行 ./wrf.exe 模擬前再調整 namelist.input 檔案中模擬所需要的參數。綜合以上, ./real.exe 這一步驟會使用到時間控制 (&time_control) 和 domain 區段(&domains) 的變數。如果只有一個domain, real.exe wrf.exe 會直接忽略d02/d03....的其他columns 設定,不用特別刪除多餘 domain 的設定。每項參數的說明可以從 README.namelist 中找到,若 README中的參數後方有接著(max_dom),則表示該變數需要針對每個不同 domain 設定,最後提醒,參數設定時,要養成排列整齊的好習慣喔。

垂直座標差異

WRFV4 開始,預設使用 Hybrid 混和地勢追隨與等壓垂直座標。WRFV3 預設使用地勢追隨座標。

[USER@VAPOR ***]$ vi ${WRF_DIR}/run/README.namelist # manual file for setting namelist

[USER@VAPOR ***]$ vi ${WRF_DIR}/run/namelist.input

 &time_control

 run_days                            =      0,

 run_hours                           =     72,

 run_minutes                         =      0,

 run_seconds                         =      0,

 start_year                          =   2015, 2015, 2015,

 start_month                         =     08,   08,   08,

 start_day                           =     06,   06,   06,

 start_hour                          =     12,   12,   12,

 end_year                            =   2015, 2015, 2015,

 end_month                           =     08,   08,   08,

 end_day                             =     09,   09,   09,

 end_hour                            =     00,   00,   00,

 interval_seconds                    =  10800, # 分析場時間間隔

 input_from_file                     = .true.,.true.,.true.,

 history_interval                    =     60,   60,   60,

 frames_per_outfile                  =      1,    1,    1,

 restart                             = .false., # true表示這次進行restart run,false表示不是restart,從初始化時間開始執行的模擬

 restart_interval                    =   3600,  # 每間隔多少分鐘生成restart檔

 io_form_history                     =      2

 io_form_restart                     =      2

 io_form_input                       =      2

 io_form_boundary                    =      2

 /


 &domains # 在WPS設定時有出現過的參數,請填寫設定WPS時一樣的值,由其跟網格設定相關的部分

 time_step                           =     90, # 時間步長除了跟計算穩定度有關也跟邊界條件的製作有關,所以修改時間步長,需要重新做一次real.exe

 time_step_fract_num                 =      0,

 time_step_fract_den                 =      1,

 max_dom                             =      3,

 e_we                                =    150,   223,   451,

 e_sn                                =    130,   214,   601,

 e_vert                              =     45,    45,    45,

 dzstretch_s                         =    1.2,

 p_top_requested                     =   5000,

 num_metgrid_levels                  =     34, # 實際數值請自行查閱met_em的擋頭

 num_metgrid_soil_levels             =      4, # 實際數值請自行查閱met_em的擋頭

 dx                                  =  15000,

 dy                                  =  15000,

 grid_id                             =      1,     2,     3, 

 parent_id                           =      0,     1,     2,

 i_parent_start                      =      1,    53,    85,

 j_parent_start                      =      1,    25,    65,

 parent_grid_ratio                   =      1,     3,     5,

 parent_time_step_ratio              =      1,     3,     5,

 feedback                            =      1,

 smooth_option                       =      0,

 /

...(略)...

Executing real

設定完 namelist.input 存檔後,執行 real.exe 。

[USER@VAPOR ***]$ ## To run real.exe with serial processor[USER@VAPOR ***]$ ./real.exe[USER@VAPOR ***]$ ## To run real.exe with 4 processors if this code were built in dmpar. [USER@VAPOR ***]$ mpiexec -np 4 ./real.exe # Executing this command with PBS Pro in shell script, rather than executing in command line foreground or background. 

Checking IC/BC

順利執行完畢的話,n 個 domain 應該要產出 n 個初始場(wrfinput*),一個邊界條件(wrfbdy),如果安裝使用dmpar有用到mpi,應會產生 rsl.error* 以及 rsl.out* 兩類檔案,裡面會有錯誤訊息以及標準輸出等等資訊。