发布于: Aug 9, 2022
在 /fsx 目录下新建文件夹 data,下载到其中,可从官方网站获取:http://www2.mmm.ucar.edu/wrf/users/download/get_sources_wps_geog.html
$ cd /fsx $ mkdir data $ cd data $ wget https://www2.mmm.ucar.edu/wrf/src/wps_files/geog_high_res_mandatory.tar.gz
然后解压缩静态地理数据,并取消 tar 文件,2.6G 的文件最终会成为 29G 的文件。文件较大,需要等待一段时间。解压缩后的文件j夹名称为 WPS_GEOG
$ gunzip geog_high_res_mandatory.tar.gz $ tar -xf geog_high_res_mandatory.tar
然后修改 namelist.wps 文件中的 &geogrid 部分,将静态文件目录提供给 geogrid 程序。
$ cd /fsx/wrf-arm/WPS-4.2 $ view namelist.wps
geog_data_path ='/fsx/data/WPS_GEOG/'
实时气象数据可从官方网站获取:ftp://ftpprd.ncep.noaa.gov/pub/data/nccf/com/gfs/prod
在 /fsx/data 目录下创建一个目录 weather_data,将实时数据下载到 weather_data 中。 本例中下载 2021 年 6 月 22 日的f000、f006、f012 三个数据作为测试数据,您可以根据自己的需求选择其他实时数据用于测试。
$ cd /fsx/data $ mkdir weather_data $ cd weather_data $ wget ftp://ftpprd.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.20210622/00/atmos/gfs.t00z.pgrb2.0p25.f000 $ mv gfs.t00z.pgrb2.0p25.f000 GFS_00h $ wget ftp://ftpprd.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.20210622/00/atmos/gfs.t00z.pgrb2.0p25.f006 $ mv gfs.t00z.pgrb2.0p25.f006 GFS_06h $ wget ftp://ftpprd.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.20210622/00/atmos/gfs.t00z.pgrb2.0p25.f012 $ mv gfs.t00z.pgrb2.0p25.f012 GFS_12h
转到 WPS 目录中,运行 geogrid
$ cd /fsx/wrf-arm/WPS-4.2 $ ./geogrid.exe>&log.geogrid
这一步运行成功的标志是创建了 geo_em.* 文件,在本例中为 geo_em.d01.nc 和 geo_em.d02.nc
运行 ungrib,首先修改链接到 GFS 和 Vtables 的正确位置
$ ./link_grib.csh /fsx/data/weather_data/ $ ln -sf ungrib/Variable_Tables/Vtable.GFS Vtable
然后修改 namelist.wps 文件的 start_date 和 end_date,与实时数据相契合
start_date = '2021-06-22_00:00:00','2021-06-22_00:00:00', end_date = '2021-06-22_12:00:00','2021-06-22_12:00:00'
然后运行 ungrib
$ ./ungrib.exe
这一步运行成功的标志是创建了 FILE:* 文件,在本例中为FILE:2021-06-22_00、FILE:2021-06-22_06、FILE:2021-06-22_12
$ ./metgrid.exe>&log.metgrid
这一步运行成功的标志是创建了 met_em* 文件
进入 WRF 目录,将 met_em.* 文件复制到工作目录
$ cd ${WRF_INSTALL}/WRF-4.2.2 $ cp ${WRF_INSTALL}/WPS-4.2/met_em* ${WRF_INSTALL}/WRF-4.2.2/run/
修改 namelist.input 文件中的开始和结束时间,每一行三项设置为相同时间,开始和结束时间与实时数据相契合;修改 num_metgrid_levels 参数为 34,与实时数据相契合。
start_year = 2021, 2021, 2021, start_month = 06, 06, 06, start_day = 22, 22, 22, start_hour = 00, 00, 00, end_year = 2021, 2021, 2021, end_month = 06, 06, 06, end_day = 22, 22, 22, end_hour = 12, 12, 12,
num_metgrid_levels = 34,
$ mpirun -np 1 ./real.exe
检查输出文件以确保运行成功,运行成功后会看到每个域的 wrfbdy_d01 和 wrfinput_d0* 文件。如果有错误,根据文件中的提示修改 namelist.input 文件中的参数。
$ tail rsl.error.0000
可自行修改 np 参数,但要小于主节点实例的物理核数。
$ mpirun -np 8 ./wrf.exe
运行成功的标志是 rsl.out.0000 文件中有 SUCCESS 结尾,并生成 wrfout* 文件。
$ cd /fsx/data $ wget https://dcn1tgfn79vvj.cloudfront.net/conus_2.5km_v4.tar.gz $ tar -xzvf conus_2.5km_v4.tar.gz
为方便执行 wrf.exe 测试,将 wrf.exe 软链接到数据目录下
$ ln -s ${WRF_INSTALL}/WRF-4.2.2/main/wrf.exe /fsx/data/conus_2.5km_v4/wrf.exe
$ vi wrf.sbatch
#!/bin/bash #SBATCH --wait-all-nodes=1 #SBATCH --ntasks-per-node=8 #SBATCH --cpus-per-task=8 #SBATCH --nodes=2 #SBATCH --ntasks-per-core=1 #SBATCH --export=ALL #SBATCH --partition=od-queue #SBATCH --exclusive #SBATCH -o /fsx/slurm.out
#ENV VARIABLES#
#---------------------Run-time env----------------------------------------- ulimit -s unlimited
export OMP_STACKSIZE=12G export OMP_NUM_THREADS=8 export KMP_AFFINITY=scatter,verbose
#WRF ENV export WRF_INSTALL=/fsx/wrf-arm export GCC_VERSION=10.2.0 export OPENMPI_VERSION=4.1.0 export PATH=${WRF_INSTALL}/gcc-${GCC_VERSION}/bin:$PATH export LD_LIBRARY_PATH=${WRF_INSTALL}/gcc-${GCC_VERSION}/lib64:$LD_LIBRARY_PATH export PATH=${WRF_INSTALL}/openmpi-${OPENMPI_VERSION}/bin:$PATH export LD_LIBRARY_PATH=${WRF_INSTALL}/openmpi-${OPENMPI_VERSION}/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=${WRF_INSTALL}/netcdf/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=${WRF_INSTALL}/pnetcdf/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=${WRF_INSTALL}/hdf5/lib:$LD_LIBRARY_PATH #--------------------------------------------------------------------------
echo "Running WRF on $(date)" cd /fsx/data/conus_2.5km_v4/ mpirun --report-bindings ./wrf.exe &>> wrf.out echo nstasks=$SLURM_NTASKS date -u +%Y-%m-%d_%H:%M:%S >> wrf.times
在主节点上使用以下命令提交您的作业:
$ sbatch wrf.sbatch
使用命令 squeue 检查队列的状态。作业将首先标记为 pending (PD 状态) ,因为正在创建资源(或处于 down/drained 状态)。如果您检查 EC2 仪表板,您应该会看到节点正在启动。
$ squeue
您还可以使用 sinfo 命令检查集群中可用节点的数量。
$ sinfo
您还可以使用 scontrol 命令查看详细作业信息。
$ scontrol show jobid -dd
WRF 计算结果默认保存在目录数据集目录 /fsx/data/conus_2.5km_v4。
$ cd /fsx/data/conus_2.5km_v4/ $ tail -f rsl.out.0000
运行完成后,查看输出结果文件:
$ ls -lh wrfout* -rw-rw-r-- 1 ec2-user ec2-user 2.1G Apr 1 14:01 wrfout_d01_2018-06-17_00:00:00
采用 ncview 或者 Panoply 等软件查看结果文件的输出变量和可视化化展示,以下是模拟三小时后的 10m 风速的图形:
任务提交后,ParallelCluster 会根据任务需求自动启动计算实例,添加到集群中,并行执行任务;任务完成后,一段时间内如果没有任务运行在计算节点,ParallelCluster 会将计算节点终止,节约成本。
综上所述,WRF 模式系统全流程组件都可以在基于 Graviton2 的 ARM 架构实例上运行,同时使用 ParallelCluster 的灵活管理,使得WRF任务的运行既高效,又经济。在云上使用 WRF 做气象分析和预测不仅可以使您的效率大大提高,成本灵活可控,也使得成果的展示和使用更加便捷。
相关文章