WRF - Running WRF with PBS Pro

Editing namelist for running wrf.exe

請參考 README.namelist 中的說明設定

[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, # 第一層domain的時間步長time_step,改動此項會連動改變所有內層domain的時間步長。除了跟計算穩定度有關以外,也跟邊界條件的製作有關,所以修改時間步長,需要重新做一次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                  =    000, # 實際數值請自行查閱met_em的擋頭

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

 dx                                  =  45000,

 dy                                  =  45000,

 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,  # 控制不同domain的時間步長time_step

 feedback                            =      1,

 smooth_option                       =      0,

 /


&physics

mp_physics                          = 00,    00,    00,

cu_physics                          = 00,    00,    00,

ra_lw_physics                       = 00,    00,    00,

ra_sw_physics                       = 00,    00,    00,

bl_pbl_physics                      = 00,    00,    00,

sf_sfclay_physics                   = 00,    00,    00,

sf_surface_physics                  = 00,    00,    00,

## 給予上方所列之"適當的"參數化設置或作業題目所指定的設置,使用者可以選擇直接將"physics_suite"移除後,改用自己需要的參數化設定.

radt                                = 30,    30,    30,

bldt                                =  0,     0,     0,

cudt                                =  5,     5,     5,

icloud                              =  1,

num_soil_layers                     = 00, # give the right number from met_em file, the number varies due to the user provided datasets.

num_land_cat                        = 00, # give the right number from met_em file, the number varies due to the namelist setup in WPS.

sf_urban_physics                    =  0,     0,     0,

do_radar_ref                        =  1, # 助教建議,只要設定許可,最好加上這一行

/


# 以下請自由發揮,請參考 README.namelist 作業只要求能模擬出個大概就可以了。


&fdda

/


&dynamics

w_damping                           = 0, # 經驗上除非不得已(real-time; 即時預報),不然不建議開啟這個選項,。

diff_opt                            = 1,      1,      1,

km_opt                              = 4,      4,      4,

diff_6th_opt                        = 0,      0,      0,

diff_6th_factor                     = 0.12,   0.12,   0.12,

base_temp                           = 290.

damp_opt                            = 0,

zdamp                               = 5000., 5000., 5000.,

dampcoef                            = 0.2,    0.2,    0.2,

khdif                               = 0,      0,      0,

kvdif                               = 0,      0,      0,

non_hydrostatic                     = .true., .true., .true.,

moist_adv_opt                       = 1,      1,      1,

scalar_adv_opt                      = 1,      1,      1,

gwd_opt                             = 1,

/


&bdy_control

spec_bdy_width                      = 5,

spec_zone                           = 1,

relax_zone                          = 4,

specified                           = .true., .false.,.false.,

nested                              = .false., .true., .true.,

/


&grib2


&namelist_quilt

nio_tasks_per_group = 0,

nio_groups = 1,

/

Executing WRF

設定完 namelist.input 存檔後,執行 wrf.exe 。非常重要:以下只是示範,千萬不要直接在指令列執行!

千萬不要直接在指令列執行!!!

千萬不要直接在指令列執行!!!!!!

千萬不要直接在指令列執行!!!!!!!!!

千萬不要直接在指令列執行!!!!!!!!!!!!

帳號是會被 banned 的喔 ,尤其使用臺灣杉系列主機。

[USER@VAPOR ***]$ ## To run wrf.exe with serial processor as a bad user.[USER@VAPOR ***]$ ./wrf.exe # and your account might be banned by root.[USER@VAPOR ***]$ ## To run real.exe with 4 processors if this code were built in dmpar as a worst user. [USER@VAPOR ***]$ mpiexec -np 4 ./wrf.exe # Executing this command with PBS Pro in shell script, rather than executing in command line foreground or background. so DON'T DO THIS either.

PBS Pro Script

請使用該設備上的電腦/伺服器的排程系統,目前主流的排程系統有 SLURM Work Manager 以及 PBS Pro 。在臺灣杉一號及實驗室主機 [VAPOR] 上是以 PBS Pro 來遞送工作進入排程。臺灣杉二號至四號使用SLURM。兩者語法類似,最好都要學會囉。

查詢排程狀態 (請善用 --help 選項以切換其他不同選項及用法說明)

[USER@VAPOR ***]$ qstat --help

查詢節點狀態 (請善用 --help 選項以切換其他不同選項及用法說明)

[USER@VAPOR ***]$ pbsnodes --help

建立遞送工作進入排程的腳本

[USER@VAPOR ***]$ cd ${WRF_DIR}/run[USER@VAPOR ***]$ vi ${nameThisShellScript}.sh#!/bin/bash # 不要省略這一行#PBS -P ACD11***8 # 臺灣杉使用者請加上你要使用的計畫名稱,是拿來跟使用者收費用的參數,#PBS開頭是設定PBS參數,他不是註解,他不是註解,他不是註解,他不是註解,他不是註解#PBS -N WRF_TY # 替工作命名(自由發揮)#PBS -l select=2:ncpus=40:mpiprocs=40 # 重要!本行說明你要使用的計算資源,請依照當前的設備做調整,建議使用pbsnodes -a檢查目前的資源狀態。目前的範例是使用兩個計算節點(要使用兩台電腦主機),每台主機使用40顆CPU核心(cores),每台主機執行40道mpi程序。所以這樣的設定會使用到80個cores。請不要在實驗室主機跑出這個設定,一開始就說明過 [VAPOR] 只有自己本人一台主機。#PBS -q ct160 # 排隊群組名稱。請使用qstat 附加其他選項查詢。#PBS -M user@ntu.edu.tw # 排程通知寄信給誰,不要寄給助教,會扣分,不要寫就不會寄。#PBS -m abe # 什麼時候要寄信,a=abort b=begin e=end。

教送工作前,先要教如何拿下工作,在臺灣杉上面,qstat查詢到使用者工作且狀態(S)為進行中(R),即開始收費,曾經有學生丟出一個3000元以上且設定錯誤的job,請留意,有錯誤請即早下架自己的工作。

[USER@VAPOR ***]$ qstat Job id              Name        User              Time Use S Queue------------------  ----------- ----------------  -------- - -----109507.vapor-cplab  bio-fluidDy B00000000             5:01 R workq109502.vapor-cplab  wrf         R00000000                0 Q workq# 假如要求的計算資源充足,會直接開始執行,狀態(S)欄位下,不會進入排隊狀態(Q),而是執行狀態(R)。[USER@VAPOR ***]$ qdel ${JOB_ID} # 要砍哪一個工作,就輸入那個工作ID,自己砍自己的,無法砍別人(除了root)。

遞交出工作

[USER@VAPOR ***]$ qsub ${PBS_script_name}.sh # 下指令後,請立刻用qstat查詢工作狀態,或是去收信(?)如果你有設定好寄信工作的話,重申不要把PBS工作信寄給助教,一封信就扣1分。