本文介紹如何使用E-HPC叢集運行WRF軟體進行氣象類比計算。
背景資訊
WRF(Weather Research and Forecasting)採用新一代中尺度天氣預報模式,是氣象行業廣泛應用的開源氣象類比軟體。它為研究大氣過程提供了大量選項,並可以在多種計算平台運行。更多資訊,請參見WRF官網。
準備工作
建立E-HPC叢集。具體操作,請參見使用嚮導建立叢集。
配置叢集時,軟硬體參數配置如下:
參數
說明
硬體參數
部署方式為標準,包含2個管控節點,1個計算節點和1個登入節點,均採用ecs.c7.large執行個體規格,配置為2 vCPU,4 GiB記憶體,Ice Lake處理器,2.7 GHz。
軟體參數
鏡像選擇CentOS 7.6公用鏡像,調度器選擇slurm,開啟VNC開關。
建立叢集使用者。具體操作,請參見系統管理使用者。
本文使用的樣本使用者名稱為wrftest,許可權組為sudo許可權組。
在叢集中安裝WRF相關軟體。具體操作,請參見安裝與卸載軟體。
需安裝的軟體如下:
wrf-mpich,版本為3.8.1。
mpich,版本為3.2。
在叢集中安裝NCL。
NCL用於處理和可視化氣象資料,具體安裝方式請參見Installing NCL。
說明由於CentOS鏡像預設安裝的Python版本較低,安裝NCL前,您需要升級Python。Python的下載地址請參見Python下載。
步驟一:運行geogrid.exe
geogrid.exe用於確定類比地區,並把靜態地形資料插值到網格點。
登入E-HPC叢集。
登入時,請使用具有sudo許可權的使用者。具體操作,請參見登入叢集。
查看叢集是否已安裝WRF相關軟體。
export MODULEPATH=/opt/ehpcmodulefiles/ module avail預期返回如下:
----------------------------------------------------------------------------------------------------------- /opt/ehpcmodulefiles/ ------------------------------------------------------------------------------------------------------------ mpich/3.2 vnc wrf-mpich/3.8.1載入WRF軟體環境。
module load wrf-mpich/3.8.1 mpich/3.2 echo $WPSHOME $WRFHOME將安裝的WPS和WRF軟體拷貝到工作目錄。
說明請將命令中的
$WPSCOPYHOME和$WRFCOPYHOME替換為實際的工作目錄,本文使用/home/wrftest作為樣本。操作後,該目錄下將產生WPS和WRFV3兩個目錄。cp -r $WPSHOME $WPSCOPYHOME cp -r $WRFHOME $WRFCOPYHOME進入WPS目錄,然後下載並解壓地表資料。
說明本樣本中地表資料使用geog_complete.tar.gz,您也可以根據需要下載其他地表資料。更多資訊,請參見WRF官網。
cd /home/wrftest/WPS wget https://www2.mmm.ucar.edu/wrf/src/wps_files/geog_complete.tar.gz tar -zxvf geog_complete.tar.gz連結到GEOGRID.TBL檔案。
GEOGRID.TBL檔案定義了geogrid.exe需要插值到網格點上的各靜態地理資料集參數。
ln -s geogrid/GEOGRID.TBL GEOGRID.TBL修改namelist.wps檔案。
namelist是WPS(WRF Preprocessing System,WRF預先處理系統)中的一個共用檔案,該檔案按照各個程式(geogrid.exe、ungrib.exe、metgrid.exe)所需要參數的不同分成三個部分(&geogrid、&ungrib、&metgrid)及一個共用部分(&share),分別定義了WPS模組所需要的各種參數。如下樣本為推薦配置,未提及的參數保持預設即可。詳細的namelist.wps檔案參數及說明,請參見namelist.wps。
說明本樣本中,namelist.wps檔案存放在
/home/wrftest/WPS目錄下。在namelist.wps檔案中,請使用
!作為注釋標識。
!共用部分 &share !wrf_core:選擇WRF dynamical core,有'ARW'和'NMM'兩個選項,預設值為'ARW'。 wrf_core = 'ARW', !start_date:類比開始時間 start_date = '2005-08-28_00:00:00', !end_date:類比結束時間 end_date = '2005-08-29_00:00:00', interval_seconds = 21600, !max_dom:類比網格數(粗網格+嵌套網格),本樣本中包含一個粗網格 max_dom = 1, !#io_form_geogrid: geogrid程式輸出格式 io_form_geogrid = 2, / !geogrid部分 !#確定地區範圍、嵌套關係、模型投影 &geogrid parent_id = 1, parent_grid_ratio = 1, i_parent_start = 1, j_parent_start = 1, !確定網格在東西方向、南北方向的尺度(地區的向量場的柵格數),本樣本中為98*70個網格點 e_we = 98, e_sn = 70, geog_data_res = 'default', !定義地區的柵格尺寸,本樣本中網格解析度為30km dx = 30000, dy = 30000, !定義投影方式,關於投影方式說明可以參考WRF官網 map_proj = 'mercator' !定義地區的中心經緯度座標 ref_lat = 25.00, ref_lon = -89.00, !投影的三個參數值,隨投影方式不同設定不同 truelat1 = 0.0, truelat2 = 0.0, stand_lon = -89.0, !geog_data_path = '地表資料存放區路徑' geog_data_path = '/home/wrftest/WPS/geog' / !ungrib部分 &ungrib !out_format:ungrib產生的可供metgrid讀取的檔案格式,有'WPS'、'SI'、'MM5'三種格式,預設值為'WPS' out_format = 'WPS', !prefix:ungrib產生的中間檔案路徑和檔案首碼名 prefix = 'FILE' / !metgrid部分 &metgrid !fg_name:ungrib程式產生的檔案 fg_name = 'FILE', !io_form_metgrid:metgrid產生的檔案格式 !支援三種格式1(binary,尾碼名.int)、2(net CDF,尾碼名.nc)、3(Grib1,尾碼名.gr1) !預設值:2 io_form_metgrid = 2 /將靜態地形資料插值到網格點。
./geogrid.exe運行geogrid.exe成功後,會在
/home/wrftes/WPS目錄下產生geo_em.d0N.nc地形檔案,預期返回結果如下:
步驟二:運行ungrib.exe
ungrib.exe用於從GRIB格式的氣象資料中提取所需要的氣象要素場。
下載並解壓Katrina氣象資料。
說明本樣本中氣象資料為Katrina.tar.gz,請下載Katrina.tar.gz。您也可以根據需要下載其他氣象資料,更多資訊,請參見氣象資料。
cd /home/wrftest/WPS wget http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/Katrina.tar.gz tar -zxvf Katrina.tar.gz通過link_grib.csh指令碼連結氣象資料。
./link_grib.csh /home/wrftest/WPS/Katrina/avn*選擇氣象資料相應的Vtable。
本樣本使用的Vtable為Vtable.GFS,您可以根據需要使用其他的Vtable。
ln -sf ungrib/Variable_Tables/Vtable.GFS Vtable提取所需要的氣象要素場。
./ungrib.exe運行ungrib.exe成功後,會在
/home/wrftest/WPS目錄下產生FILE:YYYY-MM-DD_hh*檔案,預期返回結果如下:
步驟三:運行metgrid.exe
metgrid.exe用於將ungrib.exe提取出的氣象場資料水平插值到由geogrid.exe確定的網格點上。
連結到GEOGRID.TBL檔案。
GEOGRID.TBL檔案定義了metgrid.exe如何將氣象資料水平插值到網格點上。
cd /home/wrftest/WPS ln -s metgrid/METGRID.TBL.ARW METGRID.TBL將氣象場資料水平插值到由geogrid確定的網格點上。
./metgrid.exe運行metgrid.exe成功後,會在
/home/wrftes/WPS目錄下產生met_em.d0N.yyyy-mm-dd_hh:mm:ss.nc檔案,預期返回結果如下:
步驟五:運行wrf.exe
wrf.exe用於輸出天氣預測資料。
串連WPS的處理結果。
cd /home/wrftest/WRFV3 ln -s /home/wrftest/WPS/met_em.d01.2005-08-2*.修改namelist.input檔案。
cd /home/wrftest/WRFV3/run vim namelist.inputnamelist.input檔案中&time_control、&domains部分的相關參數需要與namelist.wps檔案中的參數保持一致。本文使用的配置樣本如下,詳細的namelist.input檔案參數及說明,請參見namelist.input。
&time_control run_days = 0, run_hours = 12, run_minutes = 0, run_seconds = 0, start_year = 2005, 2005, 2005, start_month = 08, 08, 08, start_day = 28, 28, 28, start_hour = 00, 00, 00, start_minute = 00, 00, 00, start_second = 00, 00, 00, end_year = 2005, 2005, 2005, end_month = 08, 08, 08, end_day = 29, 29, 29, end_hour = 00, 00, 00, end_minute = 00, 00, 00, end_second = 00, 00, 00, interval_seconds = 21600 input_from_file = .true.,.true.,.true., history_interval = 180, 60, 60, frames_per_outfile = 1000, 1000, 1000, restart = .false., restart_interval = 5000, io_form_history = 2 io_form_restart = 2 io_form_input = 2 io_form_boundary = 2 debug_level = 0 iofields_filename = "extraoutput_d01.txt" / &domains time_step = 180, time_step_fract_num = 0, time_step_fract_den = 1, max_dom = 1, e_we = 98, 112, 94, e_sn = 70, 97, 91, e_vert = 30, 30, 30, p_top_requested = 5000, num_metgrid_levels = 27, num_metgrid_soil_levels = 4, dx = 30000, 10000, 3333.33, dy = 30000, 10000, 3333.33, grid_id = 1, 2, 3, parent_id = 0, 1, 2, i_parent_start = 1, 31, 30, j_parent_start = 1, 17, 30, parent_grid_ratio = 1, 3, 3, parent_time_step_ratio = 1, 3, 3, feedback = 1, smooth_option = 0, / &physics mp_physics = 6, 6, 6, ra_lw_physics = 4, 4, 4, ra_sw_physics = 4, 4, 4, radt = 10, 10, 10, sf_sfclay_physics = 1, 1, 1, sf_surface_physics = 2, 2, 2, bl_pbl_physics = 1, 1, 1, bldt = 0, 0, 0, cu_physics = 0, 0, 0, cudt = 0, 0, 0, isfflx = 1, ifsnow = 0, icloud = 1, surface_input_source = 1, num_soil_layers = 4, sf_urban_physics = 0, 0, 0, / &fdda / &dynamics w_damping = 0, 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, / &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, /初始化類比資料。
./real.exe運行real.exe成功後,會在
/home/wrftest/WRFV3/run目錄下產生wrfinput_d01、wrfbdy_d01檔案。輸出天氣預測資料。
編寫作業指令碼。
vim wrf.slurmwrf.slurm的內容樣本如下:
#!/bin/bash #SBATCH -N 1 #SBATCH -n 2 #SBATCH --cpus-per-task=1 #SBATCH -J wrf-test #SBATCH -o wrf_test.log module load wrf-mpich/3.8.1 mpich/3.2 mpirun -np 2 -ppn 1 -bind-to core:1 /home/wrftest/WRFV3/run/wrf.exe提交作業。
sbatch wrf.slurm作業運行成功後,會在
/home/wrftest/WRFV3/run目錄下產生wrfout_d01_[date]檔案,例如wrfout_d01_2005-08-28_00:00:00。
使用NCL映像化WRF運行結果。
樣本如下:
