WRF(Weather Research and Forecasting)采用新一代中尺度天气预报模式,是气象行业广泛应用的开源气象模拟软件。它为研究大气过程提供了大量选项,并可以在多种计算平台运行。
前提条件
部署WRF社区版服务实例,需要对部分阿里云资源进行访问和创建操作。因此您的账号需要包含如下资源的权限。
当您的账号是RAM账号时,才需要添加此权限。
权限策略名称 | 备注 |
AliyunECSFullAccess | 管理云服务器服务(ECS)的权限 |
AliyunVPCFullAccess | 管理专有网络(VPC)的权限 |
AliyunROSFullAccess | 管理资源编排服务(ROS)的权限 |
AliyunEHPCFullAccess | 管理弹性高性能计算(EHPC)的权限 |
AliyunNASFullAccess | 管理文件存储(NAS)的权限 |
AliyunComputeNestUserFullAccess | 管理计算巢服务(ComputeNest)的用户侧权限 |
计费说明
WRF社区版在计算巢部署的费用主要涉及:
弹性高性能计算集群(EHPC)费用
文件系统(NAS)费用
流量带宽费用
部署架构
部署由一个ehpc集群组成,ehpc集群中包括manager节点、schedule节点和compute节点
服务使用nas-cpfs构建高性能共享文件系统
参数说明
参数组 | 参数项 | 说明 |
服务实例 | 服务实例名称 | 长度不超过64个字符,必须以英文字母开头,可包含数字、英文字母、短划线(-)和下划线(_) |
地域 | 服务实例部署的地域 | |
付费类型 | 资源的计费类型:按量付费和包年包月 | |
EHPC集群配置 | 集群登录密码 | 长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*-+=|{}[]:;'<>,.?/ 中的特殊符号) |
Ehpc部署模式 | Tiny,Simple,Standard | |
计算节点实例类型 | 可用区下可以使用的计算节点规格 | |
计算节点数量 | 计算节点数量, 可选值: 1-99 | |
登录节点实例类型 | 可用区下可以使用的登录节点规格 | |
管控节点数量 | 管控节点数量, 可选值: 1,2,4 | |
EHPC集群用户配置 | 用户密码 | 长度8-30,必须包含三项(大写字母、小写字母、数字、()~!@#$%^&*-_+={}[]:;'/<>,.?/中的特殊符号) |
用户名称 | 登录集群所用的用户名,默认为lammps | |
网络配置 | 可用区 | ECS实例所在可用区 |
VPC ID | 资源所在VPC | |
交换机ID | 资源所在交换机 |
部署流程
访问计算巢WRF社区版部署链接。
参数填写完成后可以看到对应询价明细,确认参数后点击下一步:确认订单。
确认订单完成后同意服务协议并点击立即创建进入部署阶段。
使用流程
步骤一:通过控制台连接集群
登录弹性高性能计算控制台。
在顶部菜单栏左上角处,选择地域。
在左侧导航栏,单击集群。
在集群页面,找到在计算巢部署好的目标集群,单击远程连接。
在远程连接页面,输入集群用户名、登录密码和端口,单击ssh连接。
步骤二:提交作业
本文介绍如何使用E-HPC集群运行WRF软件进行气象模拟计算。
查看集群是否已安装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 /home/wrftest cp -r $WRFHOME /home/wrftest
进入WPS目录,然后下载并解压地表数据。
说明本示例中地表数据使用geog_complete.tar.gz,您也可以根据需要下载其他地表数据。
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模块所需要的各种参数。如下示例为推荐配置,未提及的参数保持默认即可。
1.本示例中,namelist.wps文件存放在/home/wrftest/WPS目录下。2.在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/wrftes/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*.
说明此处要是连接不成功,会导致后面的wrfinput_d01、wrfbdy_d01文件创建不出来,您可以将/home/wrftest/WPS文件夹下met_em.d01.2005-08-2开头的文件拷贝到/home/wrftest/WRFV3文件夹下。
修改namelist.input文件。
cd /home/wrftest/WRFV3/run vim namelist.input
namelist.input文件中&time_control、&domains部分的相关参数需要与namelist.wps文件中的参数保持一致。本文使用的配置示例如下:
&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.slurm
wrf.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
提交作业
batch < wrf.slurm
说明要是执行不成功请查看wrf_test.log文件,如发生以下错误,请执行:export LD_LIBRARY_PATH=/opt/WRF_WPS-mpich-3.8.1/util/lib:$LD_LIBRARY_PATH
作业运行成功后,会在/home/wrftest/WRFV3/run目录下生成wrfout_d01_[date]文件,例如:wrfout_d01_2005-08-28_00:00:00。
步骤六:安装NCL
以下是在 CentOS 7.6 上安装 Miniconda 和 NCL 的步骤:
创建ncl文件夹
cd /home/wrftest/WRFV3/run mkdir ncl
下载 Miniconda 安装脚本。您可以通过以下命令从 Miniconda 官方网站下载最新版本:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
运行安装脚本以安装 Miniconda。使用以下命令运行脚本:
bash Miniconda3-latest-Linux-x86_64.sh
刷新环境变量,此时前面会出现(base)。
source ~/.bashrc
查看安装conda的版本。
conda -V
更新conda。遇到yes/no的时候都是yes。
conda update -n root --all
安装ncl。
conda create -n ncl_stable -c conda-forge ncl
进入ncl交互模式
conda activate ncl_stable ncl
说明当输入完ncl命令,屏幕出现:ncl 0>,就算是安装成功。
退出交互模式
exit
步骤七:WRF结果图像化
创建ncl文件,将步骤五的运行结果转化为.ncl文件
cd /home/wrftest/WRFV3/run vim wrf_test.ncl
将下面内容写入wrf_test.ncl文件中
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl" begin a = addfile("/home/wrftest/WRFV3/run/wrfout_d01_2005-08-28_00:00:00","r") ter = wrf_user_getvar(a,"HGT",0) ; Get terrain height for time 0 wks = gsn_open_wks("png","test") ; Create a plot workstation opts = True ; Set some Basic Plot options opts@MainTitle = "GEOGRID FIELDS" res = opts ; Use basic options for this field res@cnFillOn = True ; Create a color fill plot contour = wrf_contour(a,wks,ter,res) ; 单独contour没有画面 pltres = True ; Set plot options mpres = True ; Set map options mpres@mpGeophysicalLineColor = "Black" ; Overwrite basic map settings mpres@mpGridLineColor = "Black" mpres@mpLimbLineColor = "Black" mpres@mpNationalLineColor = "Black" mpres@mpPerimLineColor = "Black" mpres@mpUSStateLineColor = "Black" plot = wrf_map_overlays(a,wks,(/contour/),pltres,mpres) ; Plot the data over a map background end
使用ncl运行wrf_test.ncl文件。
conda activate ncl_stable ncl wrf_test.ncl
说明执行成功后会在当前文件夹下生成test.png文件
步骤八:查看图像化结果
本文使用给计算节点挂载EIP的方式,将png图片文件下载到本地查看
在EHPC控制台找到计算节点实例
创建弹性公网IP并与计算实例绑定
将图片传输到本地并查看
scp root@公网IP:/home/wrftest/WRFV3/run/test.png ./