本文介绍如何使用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地形文件,预期返回结果如下:[wrftest@login0 WPS]$ ./geogrid.exe Parsed 25 entries in GEOGRID.TBL Processing domain 1 of 1 Processing XLAT and XLONG Processing MAPFAC Processing F and E Processing ROTANG Processing LANDUSEF Calculating landmask from LANDUSEF ( WATER = 17 21 ) Processing HGT_M Processing SOILTEMP Processing SOILCTOP Processing SCT_DOM Processing SOILCBOT Processing SCB_DOM Processing ALBEDO12M Processing GREENFRAC Processing LAI12M Processing SNOALB Processing SLOPECAT Processing SLOPECAT Processing CON Processing VAR Processing OA1 Processing OA2 Processing OA3 Processing OA4 Processing OL1 Processing OL2 Processing OL3 Processing OL4 Processing VAR_SSO Processing LAKE_DEPTH Processing URB_PARAM Optional fields not processed by geogrid: IMPERV (priority=1, resolution='default', path='/home/wrftest/WPS/geog/nlcd2011_imp_ll_9s/') CANFRA (priority=1, resolution='default', path='/home/wrftest/WPS/geog/nlcd2011_can_ll_9s/') !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Successful completion of geogrid. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
步骤二:运行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*文件,预期返回结果如下:20.0 X X X X X 10.0 X X X X X -------------------------------------------------------------------------- Subroutine DATINT: Interpolating 3-d files to fill in any missing data... Looking for data at time 2005-08-28_00 Found file: FILE:2005-08-28_00 Looking for data at time 2005-08-28_06 Found file: FILE:2005-08-28_06 Looking for data at time 2005-08-28_12 Found file: FILE:2005-08-28_12 Looking for data at time 2005-08-28_18 Found file: FILE:2005-08-28_18 Looking for data at time 2005-08-29_00 Found file: FILE:2005-08-29_00 End Subroutine DATINT. ********** Deleting temporary files created by ungrib... ********** Deleting file: ./PFILE:2005-08-28_00 Deleting file: ./PFILE:2005-08-28_06 Deleting file: ./PFILE:2005-08-28_12 Deleting file: ./PFILE:2005-08-28_18 Deleting file: ./PFILE:2005-08-29_00 ********** Done deleting temporary files. ********** !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Successful completion of ungrib. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
步骤三:运行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文件,预期返回结果如下:[wrftest@login0 WPS]$ ./metgrid.exe Processing domain 1 of 1 Processing 2005-08-28_00 FILE Processing 2005-08-28_06 FILE Processing 2005-08-28_12 FILE Processing 2005-08-28_18 FILE Processing 2005-08-29_00 FILE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Successful completion of metgrid. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
步骤五:运行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运行结果。
示例如下:
