Skip to content

WRF高分辨率数值模拟——以台风 “凤凰”登陆为例

台风是形成在热带海洋上的强烈天气系统,是地球上最具破坏力的自然灾害之一。每年全球热带洋面生成的、最大风速达到8级以上的热带气旋平均有83个,影响 50多个国家。

Weather Research and Forecasting(WRF)是一款由美国国家大气研究中心(NCAR)、国家海洋和大气管理局(NOAA)及其合作伙伴共同开发的广泛使用的数值天气预测和大气研究工具。它用于模拟短期天气预报、大气过程和长期气候模拟。

使用WRF的前提需要进行基础库和WRF模式的编译安装,流程较为麻烦繁琐。现在,超算互联网提供WRF一键部署服务,使科研人员能够绕过繁琐的设置和调试,轻松体验WRF的强大功能。

本次实操,我们将利用中尺度非静力WRF模式,对2008年第8号台风 “凤凰”的登陆过程开展高分辨率数值模拟。

一、案例说明

“凤凰”台风于2008年7月25日6时 (世界时,下同)生成后一路西行,26日在中国台湾以东洋面加强为强热带风暴,并于26日9时加强为台风,27日12时进一步加强为强台风,27日22时30分在台湾花莲登陆 (中心气压955hPa,最大风速45m/s,14级),之后继续向西北方向行进,强度有所减弱,并于7月28日14时在福建省福清市东瀚镇再次登陆,登陆时强度仍然达台风量级 (中心气压975hPa ,最大风速33m/s ,12级)

二、方案设计

本文利用非静力中尺度数值模式WRF v4.5对“凤凰”台风登陆过程开展高分辨率数值模拟,模拟时间范围为2008年7月25日12时至30日12时,共120小时(5天)。

选取1°×1°分辨率NCEP/NCAR(National Center for Environmental Prediction/National Center for Atmospheric Research)分析资料(间隔6小时)形成模式初始场。数值模拟区域水平分辨率分别为27km,模式积分区域中心为(26.0°N,120.5°E),各模拟区域网格数为200×180。

三、WRF模拟

1. WRF配置

首先,登录超算互联网,在首页搜索“WRFv4.5版本”并购买。

1.png

在“我的商品”中找到所购买的 WRF,点击“命令行”图标选择开通区域后进入 eshell 界面。终端会显示商品自带的软件应用版本、环境变量和启动路径信息。由启动路径可以得到软件部署的位置。

2.png3.png

建立Project文件夹,将WRF拷贝一份到Project文件夹。

shell
mkdir Project
cp -rf /public/home/daimu/apprepo/wrf_wps/4.5-intelmpi2017/app/WRF/ ./
cp -rf /public/home/daimu/apprepo/wrf_wps/4.5-intelmpi2017/app/WPS/ ./

2. 文件上传

随后,在Project建立GEOG文件夹,并上传静态数据地形文件并解压。静态数据可从https://www2.mmm.ucar.edu/wrf/users/download/get_sources_wps_geog.html#specific获得。

4.png

Project下上传FNL数据。

5.png

3. WRF运行

加载WRF运行环境,并进入Project/WPS文件夹,WPS文件夹内需要有Vtable文件,一般用的Vtable.GFS,复制到WPS/ungrib/Variable_Tables/Vtable.GFS文件下到WPS文件夹下,并重命名为Vtable。然后对namelist.wps进行参数修改,运行相关命令。

namelist.wps参数设置:

6.png

shell
module use  /public/software/modules /opt/hpc/software/modules; source /public/home/daimu/apprepo/wrf_wps/4.5-intelmpi2017/scripts/env.sh
cd ./Project/WPS
./geogrid.exe
./link_grib.csh ../FNL/*
./ungrib.exe
./metgrid.exe

随后进入Project/WRF/run文件,对namelist.input文件进行修改,运行以下命令。

7.png

shell
ln -sf ../../WPS/met_em.d* .
./real.exe

4. 任务的提交

将/apprepo/wrf_wps/4.5-intelmpi2017/case/wrf.slurm文件复制到Project/WRF/run下,运行以下命令,提交任务。

shell
sbatch wrf.slurm

输入squeue查看任务。

8.png

在文件夹下可以看到wrfout-文件,表示模式运行成功。

9.png

四、WRF后处理

1.安装PYTHON环境

Step1: 下载miniconda

10.png

Step2: 安装miniconda

11.png

Step3: 建立WRF环境

12.png

Step4: 安装python包

shell
conda install numpy
conda install netcdf4
conda install -c conda-forge wrf-python
conda install matplotlib
conda install cartopy

2. 绘图

选择世界时间2008年7月27日21时的数据,利用python进行绘图,查看当前台风的位置和引起的降雨情况。

shell
import numpy as np
from netCDF4 import Dataset
from wrf import (to_np, getvar, smooth2d, get_cartopy, cartopy_xlim,
                 cartopy_ylim, latlon_coords)
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
from cartopy.io.shapereader import BasicReader
import matplotlib.ticker as mticker
# 读取数据
f='/data/wrfout_d01_2008-07-27_21_00_00'
ncfile = Dataset(f)
R = to_np(getvar(ncfile,"RAINC"))+to_np(getvar(ncfile,"RAINNC"))+to_np(getvar(ncfile,"RAINSH"))
lon = np.array(ncfile['XLONG'])[0,:,:]
lat = np.array(ncfile['XLAT'])[0,:,:]
slp = getvar(ncfile, "slp")

# shape文件读取
countries=BasicReader('/data/国家矢量.shp')
ten=BasicReader('/data/九段线.shp')
province=BasicReader('/data/2023年省级.shp')


# 颜色条设置
rgb = ([237, 237, 237],[209, 209, 209],[173, 173, 173],[131, 131, 131],
        [93 , 93 , 93],[151, 198, 223],[111, 176, 214],[49 , 129, 189],
        [26 , 104, 174],[8  , 79 , 153],[62 , 168, 91],[110, 193, 115],
        [154, 214, 149],[192, 230, 185],[223, 242, 217],[255, 255, 164],
        [255, 243, 0],[255, 183, 0],[255, 123, 0],[255, 62 , 0],
        [255, 2  , 0],[196, 0  , 0],[136, 0  , 0],
)
clors = np.array(rgb)/255.
clevs = [0.1, 1,  2,  5, 7.5, 10, 13, 16, 20, 25, 30, 35, 40, 50, 60,
         70, 80, 90, 100, 125, 150, 175, 200, 250
          ]
clevs = [value * 5 for value in clevs]

# 画图
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection=ccrs.PlateCarree())
contour = ax.contourf(lon,lat, R, clevs, colors=clors, transform=ccrs.PlateCarree())
cb_cf = fig.colorbar(contour, ax=ax,ticks=clevs, shrink=.65)

ax.add_geometries(countries.geometries(),linewidth=.5,edgecolor='black',crs=ccrs.PlateCarree(),facecolor='none') 
ax.add_geometries(ten.geometries(),linewidth=.5,edgecolor='black',crs=ccrs.PlateCarree(),facecolor='none') 
ax.add_geometries(province.geometries(),linewidth=.5,edgecolor='black',crs=ccrs.PlateCarree(),facecolor='none') 
ax.set_extent([117,128,20,28],crs=ccrs.PlateCarree()) # 小范围


g1=ax.gridlines(draw_labels=True,linewidth=1,color='none',alpha=0.5,linestyle='--',x_inline=False,y_inline=False)
g1.top_labels=False
g1.right_labels=False
g1.xformatter=LONGITUDE_FORMATTER
g1.yformatter=LATITUDE_FORMATTER
g1.rotate_labels=False
g1.xlocator = mticker.FixedLocator(np.arange(117,128,2))
g1.ylocator = mticker.FixedLocator(np.arange(20,28,1))
g1.xlabel_style={'size':17}
g1.ylabel_style={'size':17}

smooth_slp = smooth2d(slp, 3, cenweight=4)

fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection=ccrs.PlateCarree())
contour = ax.contourf(lon,lat, to_np(smooth_slp), 10, transform=ccrs.PlateCarree())
cb_cf = fig.colorbar(contour,ax=ax, shrink=.65)

ax.add_geometries(countries.geometries(),linewidth=.5,edgecolor='black',crs=ccrs.PlateCarree(),facecolor='none') 
ax.add_geometries(ten.geometries(),linewidth=.5,edgecolor='black',crs=ccrs.PlateCarree(),facecolor='none') 
ax.add_geometries(province.geometries(),linewidth=.5,edgecolor='black',crs=ccrs.PlateCarree(),facecolor='none') 
ax.set_extent([117,128,20,28],crs=ccrs.PlateCarree()) # 小范围


g1=ax.gridlines(draw_labels=True,linewidth=1,color='none',alpha=0.5,linestyle='--',x_inline=False,y_inline=False)
g1.top_labels=False
g1.right_labels=False
g1.xformatter=LONGITUDE_FORMATTER
g1.yformatter=LATITUDE_FORMATTER
g1.rotate_labels=False
g1.xlocator = mticker.FixedLocator(np.arange(117,128,2))
g1.ylocator = mticker.FixedLocator(np.arange(20,28,1))
g1.xlabel_style={'size':17}
g1.ylabel_style={'size':17}

13.png

台风到来时,中心气压最低,从图中可以看出,最低处位于台湾岛东南部,这一点也与实际情况相近。此时,降雨情况如下图所示。

14.png

五、敏感性实验

这里分别选用积云参数化方案Kain-Fritsch和GF进行敏感性实验,探究不同积云参数化方案对台风凤凰模拟的影响。2008年7月28日5时,台风凤凰所在的位置为:

15.png

分别利用Kain-Fritsch和GF积云参数化方案模拟的台风凤凰位置如图所示,可以看到Kain-Fritsch积云参数化方案模拟的位置相对准确,而GF积云参数化方案模拟的台风位置相对偏后。

16.png Kain-Fritsch

17.png GF

从降雨分布看,Kain-Fritsch积云参数化方案模拟的降雨范围分布较广,影响范围比较大,但强度较弱;而GF积云参数化方案模拟的降雨范围分布较小,影响范围比较小,但强度较强。

18.png Kain-Fritsch

19.png GF

六、性能测试

我们分别使用8核、16核、32核和64核运行此案例,运行时长分别为1h15m15s、53m9s、35m40s和23m16s。从图中可以看出,随着运行核数的增加,运行时长大大的减小,但由于网格数量的限制,减小趋势大大放缓。

20.png