Running WRF
參考自https://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/v4.1/users_guide_chap5.html#Twoway
<>Table of Contents
• Introduction
• Installing WRF
• Running WRF
a. Idealized Case
b. Real Data Case
c. Restart Run
d. Two-Way Nested Runs
e. One-Way Nested Run Using ndown
f. Moving Nested Run
g. Analysis Nudging Runs
h. Observation Nudging
i. Global Run
j. DFI Run
k. SST Update
l. Using bucket_mm and bucket_J options
m. Adaptive Time Stepping
n. Stochastic Parameterization Schemes
o. Run-Time IO
p. Output Diagnostics
q. WRF-Hydro
r. Using IO Quilting
s. Using Physics Suites
t. Hybrid Vertical Coordinate.
• Examples of namelists for various applications
• Check Output
• Trouble Shooting
• Physics and Dynamics Options
• Summary of PBL Physics Options
• Summary of Microphysics Options
• Summary of Cumulus Parameterization Options
• Summary of Radiation Options
• Description of Namelist Variables
• WRF Output Fields
• Special WRF Output Variables
d. 雙向嵌套運行
雙向嵌套運行是其中同時運行多個不同網格分辨率的網格域並相互通信的運行:較粗糙的網格為嵌套提供邊界值,並且嵌套將其計算反饋給較粗糙的域。該模型可以處理同一嵌套級別(無重疊嵌套, no overlapping nest)和多個嵌套級別(伸縮, telescoping)的多個域。
在准備嵌套運行時,請確保使用基本的basic nest選項(options 1)來編譯。啟動嵌套運行的大多數選項都是通過namelist處理的。namelist.input文件中具有多列條目的,所有變量都需要謹慎編輯。從namelist模板開始。以下是要修改的關鍵名稱列表變量:
start_*, end_*: 嵌套的開始和結束時間
input_from_file: 嵌套是否需要輸入文件(例如wrfinput_d02)。這通常用於real 數據案例,因為嵌套輸入文件包含嵌套地形和土地信息。
fine_input_stream: 嵌套初始化中使用嵌套輸入文件中的哪些字段。要使用的字段在Registry.EM中定義。通常,它們包括靜態場(例如地形和土地使用)和遮蓋的表面場(例如皮膚溫度,土壤濕度和溫度)。對於在比粗域晚的時間開始的嵌套很有用。
max_dom: 要運行的域總數。例如,如果要具有一個粗略域和一個嵌套,請將此變量設置為2。
grid_id: wrfout命名約定中使用的域標識符。最粗糙的網格的grid_id必須為1。
parent_id: 用於指示嵌套的父域。使用grid_id值。
i_parent_start/j_parent_start: 嵌套域在其父域中的左下角起始索引。這些參數應與namelist.wps中的相同。
parent_grid_ratio: 父級與嵌套域之間的整數網格大小比。通常,在實際數據應用中使用奇數比率。
parent_time_step_ratio: 嵌套域的整數時步比。盡管通常將它們設置為相同,但它可能與parent_grid_ratio不同。
feedback: 這是定義雙向嵌套(或單向嵌套)運行的**關鍵設置**。啟用feedback后,在嵌套點的重合點處,變量的值(質點的單元格值的平均值和水平動量點的單元格面值的平均值)會覆蓋粗網格域的值。對於masked的變量場,僅反饋collocating points處的單點值。如果parent_grid_ratio是偶數,則將西南角點值的任意選擇用於反饋。這就是最好在此選項中使用奇數parent_grid_ratio的原因。當關閉feedback后,它等效於單向嵌套運行,因為嵌套結果不會反映在父域中。
smooth_option: 如果啟用了feedback,則這是嵌套區域中父域的平滑選項。共有三個選項:0 =不平滑;1 = 1-2-1平滑;2 =平smoothing-desmoothing。
3-D 理想個例
對於3D理想個例,不需要嵌套輸入文件。此處的關鍵是namelist.input文件的規范。該模型的作用是從粗網格場內插嵌套所需的所有變量。設置
input_from_file = T, F,
真實數據個例
對於真實數據個例,支持三個輸入選項。第一個類似於運行理想個例。那就是從粗網格將所有氣象場內插到細網格(input_from_file = T,F)。此選項的缺點很明顯:一個將不會獲得高分辨率的靜態場的信息(例如地形,土地利用率等)。
第二個選項是,為每個網格設置input_from_file = T,這意味着該子網格網格將讀取一個網格的wrfinput文件。此選項的局限性在於,它需要該子網格與該粗網格同時啟動。
第三個選項是,除了為每個域設置input_from_file = T之外,還為每個域設置fine_input_stream = 2。為什么取值為2?這是基於Registry設置的,該設置指定要從輔助輸入流2讀取的某些場。此選項可以:從粗網格,靜態網格和masked場中內插獲取的的3-D氣象場,以及從子網格的wrfinput中獲取的時間變化地面場;因此,它允許嵌套晚於0時開始。設置fine_input_stream = 0等效於第二個選項。
要運行real.exe進行嵌套運行,必須首先運行WPS並為所有嵌套創建數據。假設WPS運行24小時,從2000年1月24日1200 UTC開始,兩重的嵌套案例。那么,應在WPS目錄中生成以下文件:
met_em.d01.2000-01-24_12:00:00
met_em.d01.2000-01-24_18:00:00
met_em.d01.2000-01-25_00:00:00
met_em.d01.2000-01-25_06:00:00
met_em.d01.2000-01-25_12:00:00
met_em.d02.2000-01-24_12:00:00
通常,僅需要嵌套網格輸入文件的第一個時間段即可創建嵌套wrfinput文件。將所有這些文件鏈接或移動到運行目錄。編輯namelist.input文件,並為所有相關變量設置正確的值(如前頁所述)(特別是,將max_dom設置為要運行的域的總數),以及物理選項。輸入以下內容以運行:
./real.exe >& real.out
或者
mpirun –np 4 ./real.exe
如果成功,會創建所有粗網格以及嵌套網格的input文件。對於2重網格例子,會創建如下:
wrfinput_d01
wrfinput_d02
wrfbdy_d01
運行WRF,輸入
./wrf.exe
或
mpirun –np 4 ./wrf.exe
如果成功,模式會為區域1和區域2創建wrfout文件:
wrfout_d01_2000-01-24_12:00:00
wrfout_d02_2000-01-24_12:00:00
e. 使用ndown運行單向嵌套
WRF支持兩個分開的單向嵌套選項。在本節,單向嵌套定義為當一個較細分辨率的網格運行時,作為較粗分辨率網格運行的后繼,我中ndown程序是在這兩個模擬之間運行的。較細網格的初始和側邊界條件是從粗網格運行獲得的,獲得了較高分辨率的地形場(如,地形,土地利用等),和masked的地面場(如土壤溫度和濕度)。執行這個任務的程序就是ndown.exe.
*請注意,使用此程序需要將代碼編譯為嵌套nesting.
當使用單向嵌套時,粗網格對細網格的比率僅被限制為整數。建議使用小於或等於5的整數。還建議從粗網格運行中頻繁輸出(例如每小時)以提供更好的邊界規范。在運行ndown時不要更改物理選項(可以在運行wrf時更改某些物理選項),如果打算使用ndown,請不要從Registry注冊表中刪除字段。
步驟1:運行粗網格模擬
如上所述,這與任何在單層域WRF運行沒有什么不同。盡可能多地輸出歷史文件,這將為下一次運行模型提供更好,更頻繁的邊界條件。
步驟2:為兩個domain運行geogrid.exe和metgrid.exe
如同運行雙向嵌套一樣,為兩個domain運行geogrid.exe(提供geo_em.d01和geo_em.d02文件)和metgrid.exe。
這將為domain 1(met_em.d01.
步驟3:為2個domain 運行real.exe。
此步驟的目的是提取分辨率更高的陸地場和相應的被土地水掩蓋的土壤場。
- 將met_em *文件復制到將要運行real.exe的目錄中
- 編輯namelist.input文件,更改“ max_dom = 2”,並確保為第2個domain運行設置了第1列和第2列,並編輯了正確的開始時間和網格尺寸
- 運行real.exe。這將產生一個wrfinput_d01文件,一個wrfinput_d02文件和一個wrfbdy_d01文件
- 將wrfinput_d02文件重命名為wrfndi_d02
步驟 4: 運行ndown.exe,生成細網格初始條件和邊界條件文件
- 從V3.2開始,必須在namelist.input的&time_control部分中添加 io_form_auxinput2 = 2 才能成功運行ndown.exe。(如果需要在運行ndown時優化refine垂直分辨率,請設置vert_refine_fact = integer(V3.2中的新增功能)。namelist或過程中不需要其他更改。另一種優化refine垂直分辨率的方法是使用工具程序v_interp(詳細信息,請參見“Utilities and Tools”一章)。
- 更改namelist 變量interval_seconds,以反映粗網格模型運行的歷史記錄輸出間隔
- 在運行ndown程序之前,請勿更改物理選項
- 運行ndown.exe,它使用來自粗網格wrfout文件的輸入以及從上面的步驟3生成的wrfndi_d02文件。這將產生一個wrfinput_d02和wrfbdy_d02文件。
請注意,程序ndown可以串行運行或以MPI運行,這取決於選擇的編譯選項。但是,創建ndown程序時必須支持嵌套。要運行該程序,請鍵入
./ndown.exe
或者
mpirun –np 4 ./ndown.exe
步驟 5: 運行細網格WRF
- 將wrfinput_d02和wrfbdy_d02分別重命名為wrfinput_d01和wrfbdy_d01
- 將原始wrfout_d01 *文件重命名(或移動)到其他文件(或其他目錄),以免覆蓋它們。
- 編輯namelist.input,將所有細網格domain數據從第2列移至第1列,以便此運行僅適用於細網格domain。確保將time_step設置為符合細網格domain(通常為6 ### DX)。如果您將來需要重復此過程,則在此步驟之前將namelist.input保存到其他內容可能是有益的。將新編輯的namelist另存為namelist.input。
- 可以在兩次run之間修改WRF模型的物理選項(ndown之前的WRF模型 和ndown之后的WRF模型,但是在運行ndown時,確實使用與第一次運行相同的物理選項use the same physics from the first run when running ndown),但通常情況下,陸面方案選項除外,因為不同方案具有不同的土壤深度。用戶可以利用允許初始邊界和橫邊界同時使用潮濕數組和標量數組的功能(分別是have_bcs_moist和have_bcs_scalar)。此選項僅在ndown處理之后的WRF模型運行期間使用。使用此選項,用戶必須在預測之間,保持微物理方案不變。它的優點是,以前的WRF模型為所有微物理變量提供了實際的側邊界趨勢,而不是簡單的“零入流”zero inflow或“零梯度出流”zero outflow。
- 為該網格運行WRF
*請記住,此運行的輸出將采用wrfout_d01 *的形式,但實際上將是域2的輸出。這可能有助於重命名這些名稱以避免將來的混亂。
為三個或更多域運行ndown.exe
可以使用ndown程序運行多個嵌套,但是該過程有點麻煩。由於編寫代碼的方式不同,它需要使用特定的文件名(特別是d01和d02),因此准確地遵循以下步驟很重要:
注意:此示例用於嵌套到第三個域(總共3個域),並假定您已經具有上一次運行的wrfout_d01 *文件。
步驟 A: 運行3個domain的geogrid.exe和metgrid.exe程序。您應該具有文件met_em.d01.
,met_em.d02.
和met_em.d03.
步驟 B: 在3個domain 運行real.exe
- 將 met_em*文件復制到real.exe程序所在的目錄
- 編輯namelist.input文件,更改“ max_dom = 3”,並確保為第3個域運行設置了第1列,第2列和第3列,並編輯了正確的開始時間和網格大小。
- 運行real.exe。這將生成wrfinput_d01,wrfinput_d02,wrfinput_d03文件和wrfbdy_d01文件
- 將wrfinput_d02文件重命名為wrfndi_d02
步驟 C: 運行ndown.exe,生成domain02的網格初始條件和邊界狀態文件(請參閱上面的步驟4中的詳細信息)
步驟 D: 運行WRF domain2 (請參閱上面的步驟5中的詳細信息)。現在,您將擁有名為wrfout_d01 *的新文件,該文件將對應於domain02
步驟 E: 運行ndown.exe,生成domain 03網格的初始條件和邊界條件文件
- 將wrfinput_d03文件重命名為wrfndi_d02(這是程序期望的名稱)
- 確保namelist中&time_control節中仍然具有io_form_auxinput2 = 2
- 更改namelist變量interval_seconds,以反映粗網格模型的歷史輸出文件的間隔
- 在運行ndown程序之前,請勿更改物理選項
- 運行ndown.exe,它使用來自(新)粗網格wrfout文件和wrfndi_d02文件的輸入。這將生成wrfinput_d02和wrfbdy_d02文件(實際上將與domain 03對應)。
步驟 F: 運行細網格(d03)
- 將wrfinput_d02和wrfbdy_d02分別重命名為wrfinput_d01和wrfbdy_d01
- 將wrfout_d01 *文件重命名(或移動)到其他文件(或其他目錄),以免覆蓋它們(記得這些文件與d02相對應)
- 編輯namelist.input,將所有細網格域數據從第3列移至第1列,以便此運行僅適用於細網格域。確保將time_step設置為符合細網格域(通常為6 * DX)。如果您將來需要重復此過程,則在此步驟之前將namelist.input保存到其他內容可能是有益的。將新編輯的名稱列表另存為namelist.input
運行wrf.exe后,您將擁有新的wrfout_d01 *文件。這些將對應於域03。如果需要添加更多的嵌套,請遵循相同的格式,並保持命名約定不變。
下一頁的圖總結了使用程序ndown進行單向嵌套運行的數據流。
注:實際步驟
- 修改namelist,max_dom=3,運行ungrib,geogrid,metgrid,獲得三個層次的met_em.d0*文件,運行real.exe,獲得wrfinput_d01,wrfinput_d02,wrfinput_d03,wrfbdy_d01文件
- 修改namelist,max_dom=1,運行wrf,獲得wrfout.d01文件,對應於最外層粗網格的wrfout_d01文件
- 文件改名,將wrfinput_d02===>wrfndi_d02, 隨后運行nodwn.exe,獲得wrfbdy_d02
- 將wrfout_d01*文件重命名。
- 修改namelist.input,將第二層網格的信息(網格數目s_we,e_we,s_sn,e_sn,s_vert,e_vert,水平分辨率dx,dy)移動到最左邊一列,此外修改積分步長,參數化方案等。
- 運行wrf.exe, WRF將輸出wrfout_d01文件(wrf認為的d01,實際對應的是第二層)
以上是運行兩層網格單向嵌套時候的辦法,如果需要為三個及以上的domain進行嵌套,則重復步驟3~6,注意在ndown和wrf.exe的時候將namelist的網格信息(max_dom,s_we,e_we,s_sn,e_sn,s_vert,e_vert,dx,dy,grid_id,parent_id,i_parent_start,j_parent_start,parent_grid_ratio)和文件維數對應。