參考自 WRF用戶手冊http://www2.mmm.ucar.edu/wrf/users/docs/user_guide_V4/WRFUsersGuide.pdf第三章
引言
WPS是三個程序,它們協同工作,為真實數據模擬的輸入准備輸出資料。geogrid定義模式范圍,將靜態地形資料插值到格點 ungrib將氣象數據從GRIB格式解碼 metgrid將ungrib解碼的氣象場水平地插值到geogrid定義的網格上。real程序將氣象場垂直插值到eta層。
geogrid, ungrib, metgrid都從namelist里獲取參數。這個namelist對於每個程序都有分開的記錄,對於多個程序共享的部分在share定義了記錄。
WPS的編譯方法和WRF模式的構建方法非常類似,提供了在不同平台下編譯WRF模式的選項,當有MPI庫和合適的編譯器是,metgrid和geogrid程序可以編譯成分布式內存的版本,這可以在較短時間內處理較大的模式區域。ungrib不能並行,故只能在一個單核處理器下運行。
每個WPS程序的作用
geogrid 程序
geogrid的目的是定義模擬區域,將大量的陸地的數據集插值到模式格點。模擬區域是用戶在namelist里面的geogrid部分給定的。除了計算每個點的經緯度,地圖放大系數之外,geogrid還插值土壤類別,土地利用率,地形高度,年平均深層土壤濕度,逐月的植被覆蓋度,逐月的反射率,最大雪反射率,默認的模式格點的斜坡類別。每個場的全球數據集都是通過wrf下載頁面提供的,由於這些數據是時間不變的,所以只需要下載一次。其中一些數據集只有一種分辨率,但其他數據集可作為“全分辨率”下載和“低分辨率”下載提供。通常,靜態字段的“低分辨率”源僅適用於代碼測試和教育目的,任何涉及模型精度的應用都應使用“全分辨率”地理數據集。
除了對默認的地面場進行插值外,geogrid程序還具有足夠的通用性,能夠將大多數連續和分類的場插值到模擬區域中。可以使用表文件GEOGRID.TBL將新的或附加的數據集插值到模擬區域。GEOGRID.TBL文件定義了由geogrid生成的每個場;它描述要用於場的插值方法,以及該場的數據集在文件系統上的位置。
geogrid的輸出是以WRF I/O API格式編寫的,因此,通過選擇NetCDF I/O格式,geogrid可以將其輸出寫入netcdf,以便使用外部軟件包(包括ncview, NCL, 和 RIP4)進行可視化。
ungrib 程序
ungrib程序讀取grib文件,“解壓”數據,並以一種稱為中間格式的簡單格式寫入數據(有關格式的詳細信息,請參閱將數據寫入中間格式一節)。GRIB文件包含隨時間變化的氣象場,這通常來自另一個區域或全球模式,如NCEP的NAM或GFS模式。ungrib程序可以讀取GRIB Edition 1格式的數據,如果使用"GRIB2"選項編譯,則可以讀取GRIB Edition 2文件。
GRIB文件通常包含的變量比初始化WRF所需的變量多。兩個版本的GRIB格式都使用各種代碼來標識GRIB文件中的變量和層次。ungrib使用這些代碼的表(稱為vtables,用於“variablet ables”)來定義要從grib文件中提取哪些變量並寫入中間格式。有關這些代碼的詳細信息可以在WMO GRIB文檔和數據來源中心的文檔中找到。ungrib軟件提供了常用的模式輸出GRIB文件的vtables。
提供了以下數據的Vtables:NAM 104和212網格,NAM AWIP格式,GFS,NCAR存檔的NCEP/NCAR再分析,RUC(氣壓層數據和混合坐標數據),AFWA的AGRMET陸面模型輸出,ECMWF和其他數據集。用戶可以使用任何vtables作為模板為其他模式輸出創建自己的Vtable;有關vtable中字段含義的更多詳細信息,請參見創建和編輯Vtables一節。
ungrib提供了三種用戶可選擇的格式之一編寫中間數據文件:WPS(一種包含對下游程序有用的附加信息的新格式),SI(wrf系統以前的中間格式),和MM5格式,它包含在這里,這樣ungrib就可以用來為MM5模式系統提供GRIB2的輸入場。雖然建議使用WPS格式,但是WPS可以使用這三種格式中的任何一種來初始化WRF。
metgrid程序
metgrid程序將ungrib程序提取的中間格式氣象數據水平插值到geogrid程序定義的模擬區域中。插值的metgrid輸出可以被WRF real程序接收。metgrid將按照在WPS namelist文件的“share”字段中定義的日期范圍進行插值,並且必須在namelist中分別為每個模擬子區域的指定日期范圍。由於metgrid程序的工作與ungrib程序的工作都是依賴於時間的,因此每次初始化新的模擬時都要運行metgrid。
METGRID.TBL文件提供對如何插值每個氣象場的設置。METGRID.TBL文件為每個氣象場提供一個部分。並且在這部分中,可以指定選項,例如用在氣象場的插值方法,用作屏蔽插值的mask場,以及插值場的網格交錯(例如,ARW中的U,V;NMM中的H,V)。
metgrid的輸出是以WRF I/O API格式編寫的,因此,通過選擇NetCDF I/O格式,metgrid可以將其輸出寫入NetCDF,以便使用外部軟件包(包括新版本的RIP4)進行可視化。
安裝WPS(略)
運行WPS
運行WRF預處理系統主要有三個步驟:
- 利用geogrid,定義一個粗的模式區域粗域和任何嵌套區域。
- 利用ungrib,從GRIB數據集中提取模擬時段的氣象場。
- 利用用metgrid,將氣象場水平插值到模式模擬區域。
當要為同一模式區域運行多個模擬時,只需要執行第一步一次;此后,使用步驟2和步驟3,只需要為每個模擬處理隨時間變化的變量。同樣,如果在同一時間段內運行多個模擬區域使用的是同一氣象數據源,則不必為每個模擬分別運行ungrib。下面,對這三個步驟中的每一個步驟進行詳細說明。
步驟1:用geogrid定義模式區域
在WPS目錄結構的根目錄中,如果成功安裝了WPS軟件,則應當有指向程序geogrid.exe、ungrib.exe和metgrid.exe的符號鏈接。除了這三個鏈接之外,還應該存在namelist.wps文件。因此,wps根目錄中的列表應該類似於:
> ls drwxr-xr-x 2 4096 arch -rwxr-xr-x 1 1672 clean -rwxr-xr-x 1 3510 compile -rw-r--r-- 1 85973 compile.output -rwxr-xr-x 1 4257 configure -rw-r--r-- 1 2486 configure.wps drwxr-xr-x 4 4096 geogrid lrwxrwxrwx 1 23 geogrid.exe -> geogrid/src/geogrid.exe -rwxr-xr-x 1 1328 link_grib.csh drwxr-xr-x 3 4096 metgrid lrwxrwxrwx 1 23 metgrid.exe -> metgrid/src/metgrid.exe -rw-r--r-- 1 1101 namelist.wps -rw-r--r-- 1 1987 namelist.wps.all_options -rw-r--r-- 1 1075 namelist.wps.global -rw-r--r-- 1 652 namelist.wps.nmm -rw-r--r-- 1 4786 README drwxr-xr-x 4 4096 ungrib lrwxrwxrwx 1 21 ungrib.exe -> ungrib/src/ungrib.exe drwxr-xr-x 3 4096 util
模式的粗區域和任何嵌套網格都在namelist.wps文件中名為“geogrid”的namelist字段中定義,此外,還需要設置“share”namelist字段中的參數。下面給出了這兩個namelist字段的一個示例,用戶可以參考namelist變量的描述,以獲得有關每個變量的用途和可能值的更多信息。
&share wrf_core = 'ARW', max_dom = 2, start_date = '2008-03-24_12:00:00','2008-03-24_12:00:00', end_date = '2008-03-24_18:00:00','2008-03-24_12:00:00', interval_seconds = 21600, io_form_geogrid = 2 / &geogrid parent_id = 1, 1, parent_grid_ratio = 1, 3, i_parent_start = 1, 31, j_parent_start = 1, 17, e_we = 74, 112, e_sn = 61, 97, geog_data_res = 'default','default', dx = 30000, dy = 30000, map_proj = 'lambert', ref_lat = 34.83, ref_lon = -81.03, truelat1 = 30.0, truelat2 = 60.0, stand_lon = -98., geog_data_path = '/mmm/users/wrfhelp/WPS_GEOG/' /
為了總結與geogrid相關的“share”namelist字段的一組典型更改,必須首先選擇wrf_core的值以確定WRF的動力內核。如果是為ARW的模擬而運行的WPS,wrf_core應設置為“ARW”,如果正在為NMM的模擬而運行的WPS,則應設置為“NMM”。在選擇動力核心之后,網格的總數(在ARW的情況下)或嵌套級別(在NMM的情況下)必須用max_dom來選擇。由於geogrid只生成與時間無關的數據,因此geogrid會忽略start_date、end_date和interval_seconds變量。可選地,可以使用opt_output_from_geogrid_path變量給定應輸出的網格文件的位置(如果不是默認位置,則為當前工作目錄),並且可以使用io_form_geogrid更改這些網格文件的格式。
在“geogrid”namelist字段中,定義了模擬網格的投影,以及所有模式網格的大小和位置。MAP PROJ變量指定了用於模擬網格的投影。ARW中四個可選的地圖投影都以圖形方式顯示在下面的整頁圖中,它們的變量用來設置投影參數。
Map projection / value of map_proj |
Projection parameters |
Lambert Conformal / 'lambert' | truelat1 truelat2 (optional) stand_lon |
Mercator / 'mercator' truelat1 | truelat1 |
Polar stereographic / 'polar' | truelat1 stand_lon |
Regular latitude-longitude, or cylindrical equidistant / 'lat-lon' |
pole_lat pole_lon stand_lon |
在Lambert正形投影、極射赤面極投影和墨卡托投影的圖示中,可以看到所謂的真緯度true latitude(或真緯度true latitudes,在lambert正形的情況下)是投影表面與地球表面相交或相切的緯度。在這個緯度,地圖投影的距離沒有失真,而在其他緯度,地球表面的距離與投影表面的距離通過地圖比例因子map scale factor相關。理想情況下,應選擇地圖投影及其相關參數,從而使得模型網格覆蓋區域內的最大失真得到最小化,因為大量失真(由地圖比例因子和實體顯著不同)可能會超出必要地限制模型時間步長。作為一般准則,極射赤面投影最適合於高緯度WRF網格,Lambert正形投影最適合於中緯度區域,Mercator投影適合於低緯度域或以東西向為主的區域。全球ARW模擬需要柱面等距投影,盡管在其具有旋轉特點(即,當pole_lat, pole_lon,極坐標、極坐標和stand_lon從其默認值改變時),柱面等距投影也非常適合地球表面任何地方的區域性網格。
|
(ref_lat, ref_lon) in N.H. |
(ref_lat, ref_lon) in S.H. |
pole_lat |
90.0 - ref_lat |
90.0 + ref_lat |
pole_lon |
180.0 |
0.0 |
stand_lon |
-ref_lon |
180.0 - ref_lon |
對於WRF模擬,當對於粗網格區域的覆蓋范圍是全球的時候,ref_lat 和ref_lon不適用,並且dx和dy不需要指定,因為所謂的網格距離是根據網格點的數量自動計算的。此外,還應注意的是,經緯度或圓柱等距投影(map_proj='lat lon')是WRF中唯一可以支持全球范圍的投影。全球域中的嵌套域不能覆蓋計算緯度+45以北或計算緯度-45以南的任何區域,因為在這些緯度使用了極濾波器polar filter(盡管可以在WRF namelist中更改截止緯度)。
除了設置與模擬區網格的投影、位置和覆蓋范圍相關的變量外,還必須使用geog_data_path變量正確指定靜態地理數據集的路徑。此外,用戶可以選擇使用geog_data_res變量設置插值靜態數據geogrid的分辨率,其值應與GEOGRID.TBL中的數據分辨率之一匹配。
根據wrf_core namelist變量的值,必須將相應的GEOGRID.TBL文件與GEOGRID一起使用,因為WPS插值的網格交錯在動態核心之間是不同的。對於ARW,應使用GEOGRID.TBL.ARW文件,對於NMM,應使用GEOGRID.TBL.NMM文件。選擇適當的GEOGRID.TBL是通過將正確的文件鏈接到GEOGRID目錄中的GEOGRID.TBL來完成的(如果在namelist中設置了此變量,則在opt_GEOGRID_TBL_path指定的目錄中)。
> ls geogrid/GEOGRID.TBL lrwxrwxrwx 1 15 GEOGRID.TBL -> GEOGRID.TBL.ARW
有關每個變量的含義和可能值的更多詳細信息,請參考namelist變量的說明。
在namelist.wps文件中適當地定義了模擬粗網格和嵌套網格后,可以運行geogrid.exe可執行文件來生成網格文件。對於ARW網格,網格文件命名為geo_em.d0N.nc,其中N是每個文件中定義的嵌套數。在為NMM網格運行時,geogrid會為粗略網格生成geo_NMM.d01.nc文件,並為每個嵌套級別N生成geo_NMM_nest.l0N.nc文件。此外,請注意,文件后綴將根據所選的io_form_geogrid而變化。要運行geogrid,請發出以下命令:
> ./geogrid.exe
geogrid.exe完成運行后,應該輸出以下消息
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Successful completion of geogrid. !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
,並且WPS根目錄的列表(或者由opt_output_from_geogrid_path指定的目錄,如果設置了此變量)應該顯示網格文件。如果沒有,可以查閱geogrid.log文件,以確定可能的故障原因。有關檢查geogrid輸出的更多信息,請參閱有關檢查WPS輸出的部分。
步驟2:用ungrib從GRIB文件中提取氣象場
已經下載了GRIB格式的氣象數據,將場提取到中間格式的第一步是編輯namelist.wps文件的“share”和“ungrib” 字段,該文件是為定義模擬網格而編輯的。下面給出了兩個namelist記錄的示例。
&share wrf_core = 'ARW', max_dom = 2, start_date = '2008-03-24_12:00:00','2008-03-24_12:00:00', end_date = '2008-03-24_18:00:00','2008-03-24_12:00:00', interval_seconds = 21600, io_form_geogrid = 2 / &ungrib out_format = 'WPS', prefix = 'FILE' /
在“share”字段中,與ungrib相關的變量是粗網格的開始和結束時間(start_date 和end_date;或者, start_year, start_month, start_day, start_hour, end_year, end_month, end_day, 和 end_hour)和氣象數據文件之間的間隔(interval_seconds)。在“ungrib”字段中,變量out_format用於選擇ungrib要寫入的中間數據的格式;metgrid程序可以讀取ungrib支持的任何格式,因此,可以為out_格式指定'WPS'、'SI'和'MM5'中的任何一種,盡管建議使用'WPS'。同樣在“ungrib”namelist中,用戶可以使用前綴變量為中間文件指定路徑和前綴。例如,如果前綴設置為“ARGRMET”,那么ungrib創建的中間文件將根據AGRMET:YYYY-MM-DD-HH命名,其中YYYY-MM-DD-HH是文件中數據的有效時間。
適當修改namelist.wps文件后,必須提供Vtable,GRIB文件必須鏈接(或復制)到ungrib所期望的文件名。WPS為許多氣象數據源提供Vtable文件,並且適當的Vtable可以簡單地符號化地鏈接到Vtable文件,Vtable是ungrib所期望的Vtable名稱。例如,如果GRIB數據來自GFS模型,可以使用
> ln -s ungrib/Variable_Tables/Vtable.GFS Vtable
ungrib程序將嘗試讀取名為GRIBFILE.AAA、GRIBFILE.AAB、…、GRIBFILE.ZZZ的GRIB文件。為了簡化將GRIB文件鏈接到這些文件名的工作,提供了一個shell腳本link_GRIB.csh。link_grib.csh腳本將要鏈接的grib文件的列表作為命令行參數。例如,如果GRIB數據被下載到/data/gfs目錄中,則可以使用link_GRIB.csh鏈接文件,如下所示:
> ls /data/gfs -rw-r--r-- 1 42728372 gfs_080324_12_00 -rw-r--r-- 1 48218303 gfs_080324_12_06 > ./link_grib.csh /data/gfs/gfs*
在鏈接GRIB文件和Vtable之后,WPS目錄的列表應該如下所示:
> ls drwxr-xr-x 2 4096 arch -rwxr-xr-x 1 1672 clean -rwxr-xr-x 1 3510 compile -rw-r--r-- 1 85973 compile.output -rwxr-xr-x 1 4257 configure -rw-r--r-- 1 2486 configure.wps -rw-r--r-- 1 1957004 geo_em.d01.nc -rw-r--r-- 1 4745324 geo_em.d02.nc drwxr-xr-x 4 4096 geogrid lrwxrwxrwx 1 23 geogrid.exe -> geogrid/src/geogrid.exe -rw-r--r-- 1 11169 geogrid.log lrwxrwxrwx 1 38 GRIBFILE.AAA -> /data/gfs/gfs_080324_12_00 lrwxrwxrwx 1 38 GRIBFILE.AAB -> /data/gfs/gfs_080324_12_06 -rwxr-xr-x 1 1328 link_grib.csh drwxr-xr-x 3 4096 metgrid lrwxrwxrwx 1 23 metgrid.exe -> metgrid/src/metgrid.exe -rw-r--r-- 1 1094 namelist.wps -rw-r--r-- 1 1987 namelist.wps.all_options -rw-r--r-- 1 1075 namelist.wps.global -rw-r--r-- 1 652 namelist.wps.nmm -rw-r--r-- 1 4786 README drwxr-xr-x 4 4096 ungrib lrwxrwxrwx 1 21 ungrib.exe -> ungrib/src/ungrib.exe drwxr-xr-x 3 4096 util lrwxrwxrwx 1 33 Vtable -> ungrib/Variable_Tables/Vtable.GFS
由於ungrib程序可能會產生大量輸出,建議將ungrib輸出重定向到文件,如上面的命令所示。如果ungrib.exe成功運行,則消息
將寫入ungrib.output文件的末尾,中間文件應顯示在當前工作目錄中。ungrib編寫的中間文件將具有格式文件的名稱:YYYY-MM-DD_HH(當然,除非前綴變量設置為“FILE”以外的前綴)。
步驟3:使用metgrid水平插值氣象數據
在運行WPS的最后一步中,將由ungrib提取的氣象數據水平插值到geogrid定義的模擬網格中。要運行metgrid,必須編輯namelist.wps文件。特別是,“share”和“metgrid”namelist記錄與metgrid程序相關。這些記錄的示例如下所示。
&share wrf_core = 'ARW', max_dom = 2, start_date = '2008-03-24_12:00:00','2008-03-24_12:00:00', end_date = '2008-03-24_18:00:00','2008-03-24_12:00:00', interval_seconds = 21600, io_form_geogrid = 2 / &metgrid fg_name = 'FILE', io_form_metgrid = 2, /
至此,一般不需要更改“share”namelist記錄中的任何變量,因為這些變量應該在前面的步驟中進行適當設置。但是,如果運行geogrid和ungrib時未編輯“share”namelist,則必須在“share”namelist記錄中設置WRF動態核心、網格數、開始和結束時間、氣象數據間隔以及靜態網格文件的路徑,如運行geogrid和ungrib的步驟所述。
在“metgrid”namelist記錄中,中間氣象數據文件的路徑和前綴必須用fg_name指定,任何包含常量字段的中間文件的完整路徑和文件名可以用constants_name變量指定,水平插值文件的輸出格式可以用io U form U metgrid變量。“metgrid”namelist記錄中的其他變量,即opt_output_from_metgrid_path和opt_metgrid_tbl_path,允許用戶指定metgrid應在何處寫入插值數據文件以及metgrid.tbl文件可能在何處找到。
與geogrid和geogrid.TBL文件一樣,必須將適合WRF核心的METGRID.TBL文件鏈接到METGRID目錄中(如果設置了此變量,則鏈接到opt_METGRID_TBL_path指定的目錄中)。
> ls metgrid/METGRID.TBL lrwxrwxrwx 1 15 METGRID.TBL -> METGRID.TBL.ARW
在適當編輯namelist.wps文件並驗證將使用正確的METGRID.TBL之后,可以通過發出命令來運行METGRID
> ./metgrid.exe
如果metgrid成功運行,則消息
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Successful completion of metgrid. !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
將被輸出。成功運行后,metgrid輸出文件應出現在WPS根目錄中(或由opt_output_from_metgrid_path指定的目錄中,如果設置了此變量)。對於ARW網格,這些文件將命名為met_em.d0N.YYYY-MM-DD_HH:MM:ss.nc,其中N是數據駐留在文件中的嵌套數,對於nmm網格,這些文件將命名為met_nmm.d01.YYYY-MM-DD_HH:MM:ss.nc。這里,YYYY-MM-DD_HH:MM:ss是指每個文件中插值數據的日期。如果這些文件在“共享”namelist記錄中給定的范圍內的每一次都不存在,則可以參考metgrid.log文件來幫助確定運行metgrid時出現的問題。
> ls drwxr-xr-x 2 4096 arch -rwxr-xr-x 1 1672 clean -rwxr-xr-x 1 3510 compile -rw-r--r-- 1 85973 compile.output -rwxr-xr-x 1 4257 configure -rw-r--r-- 1 2486 configure.wps -rw-r--r-- 1 154946888 FILE:2008-03-24_12 -rw-r--r-- 1 154946888 FILE:2008-03-24_18 -rw-r--r-- 1 1957004 geo_em.d01.nc -rw-r--r-- 1 4745324 geo_em.d02.nc drwxr-xr-x 4 4096 geogrid lrwxrwxrwx 1 23 geogrid.exe -> geogrid/src/geogrid.exe -rw-r--r-- 1 11169 geogrid.log lrwxrwxrwx 1 38 GRIBFILE.AAA -> /data/gfs/gfs_080324_12_00 lrwxrwxrwx 1 38 GRIBFILE.AAB -> /data/gfs/gfs_080324_12_06 -rwxr-xr-x 1 1328 link_grib.csh -rw-r--r-- 1 5217648 met_em.d01.2008-03-24_12:00:00.nc -rw-r--r-- 1 5217648 met_em.d01.2008-03-24_18:00:00.nc -rw-r--r-- 1 12658200 met_em.d02.2008-03-24_12:00:00.nc drwxr-xr-x 3 4096 metgrid lrwxrwxrwx 1 23 metgrid.exe -> metgrid/src/metgrid.exe -rw-r--r-- 1 65970 metgrid.log -rw-r--r-- 1 1094 namelist.wps -rw-r--r-- 1 1987 namelist.wps.all_options -rw-r--r-- 1 1075 namelist.wps.global -rw-r--r-- 1 652 namelist.wps.nmm -rw-r--r-- 1 4786 README drwxr-xr-x 4 4096 ungrib lrwxrwxrwx 1 21 ungrib.exe -> ungrib/src/ungrib.exe -rw-r--r-- 1 1418 ungrib.log -rw-r--r-- 1 27787 ungrib.output drwxr-xr-x 3 4096 util lrwxrwxrwx 1 33 Vtable -> ungrib/Variable_Tables/Vtable.GFS