1.什么是ERA5数据?

在进行区域气象模拟时,WRF(Weather Research and Forecasting)常常需要高质量的气象数据作为输入。ERA5是由欧洲中期天气预报中心(ECMWF)提供的第五代全球再分析气象数据集,具有较高的时空分辨率(0.25°、逐小时),广泛应用于天气预报、气候研究和环境模拟等领域。本文将详细讲解如何将ERA5数据用于驱动WRF模型

2.如何下载ERA5数据集?

步骤和自动化下载脚本参考:

【最新ERA5再分析数据下载】通过API代码轻松获取ERA5数据,完美驱动WRF模拟-CSDN博客

3.如何利用ERA5数据集跑WRF?

WRF整体框架与流程WRF模式学习入门基础(建议收藏!!!)-CSDN博客

4.利用ERA5数据集跑WRF模型的全流程实操指南

4.1 前提条件

在开始运行WRF之前,请确保你具备以下环境和数据:

4.1.1 软件与编译环境:

  • WRF 4.X:已经成功编译,包括real.exe和wrf.exe两个可执行文件

  • WPS 4.X:已经编译完成,包含geogrid.exe、ungrib.exe和metgrid.exe

  • 安装好netCDF, MPI, jasper, libpng, zlib等依赖库

  • 具备基本的Linux命令行操作能力

4.1.2 数据准备:

4.2 操作步骤详解

4.2.1 编辑namelist.wps【namelist.wps】WRF数值模式中namelist.wps的配置详解-CSDN博客

1.注意确定好模拟域的配置

2.参考namelist.wps配置
&share
 wrf_core = 'ARW',
 max_dom = 1,
 start_date = '2021-07-20_00:00:00',
 end_date   = '2021-07-30_00:00:00',
 interval_seconds = 3600
/

&geogrid
 parent_id         =   1,  
 parent_grid_ratio =   1,   
 i_parent_start    =   1,  
 j_parent_start    =   1,  
 e_we              =  78, 
 e_sn              =  64, 
 geog_data_res = 'default',
 dx = 30000,
 dy = 30000,
 map_proj = 'lambert',
 ref_lat   =  38.030,
 ref_lon   = 114.501,
 truelat1  =  38.328,
 truelat2  =  38.328,
 stand_lon = 117.070,
 geog_data_path = '/WPS_GEOG/'
/

&ungrib
 out_format = 'WPS',
 prefix = 'FILE',
/

&metgrid
 fg_name = 'FILE'
/

4.2.2 运行WPS

4.2.2.1 geogrid
./geogrid.exe

geogrid.exe 执行成功后会生成地形文件 geo_em.d01.nc。如果模拟区域不变,在多次运行 WRF 时无需重复执行该命令,一次生成即可复用。

这一步通常不会出错,唯一可能的问题是地理静态数据未完整下载。只需根据提示逐项补全即可。

我的静态地理数据目录如下:

4.2.2.2 ungrib

(1) 链接Vtable

由于处理的是 ERA5 数据,需使用 ECMWF 对应的 Vtable:

ln -sf ungrib/Variable_Tables/Vtable.ECMWF Vtable

创建链接后,WPS 目录中会生成名为 Vtable 的链接文件。此操作仅需执行一次,重复运行 WRF 时,如该链接已存在,则无需再次创建。
(2)准备 ERA5 数据

此处以同时处理高空和地表数据为例,将 ERA5 的 .grib 文件链接至当前目录:

ln -sf ../wrf_era5/ERA5_hourly_data/*.grib .

成功后,当前目录下将出现多个 .grib 文件,如下图(只截图了一部分):

(3)链接GRIB文件

使用./ink grib.csh将 GRIB 数据链接为 ungrib.exe可识别的格式:

./link_grib.csh *.grib

该脚本会将 GRIB 文件按 WRF 格式重命名为 GRIBFILE.AAA、GRIBFILE.AAB 等,保存在当前目录(WPS 文件夹)下。

(4)执行./ungrib.exe

./ungrib.exe

运行成功后,终端会显示 Successful completion of ungrib. 等提示信息,并在 WPS 目录下生成以 FILE 开头、格式为 FILE:yyyy-mm-dd_hh 的中间文件,如下图(只截图了一部分)。这些文件是将 ERA5 数据转换为 WRF 可读格式的结果。

其中 FILE 是由 namelist.wps 中 &ungrib 的 prefix = 'FILE' 设置决定的,后文会详细介绍该参数的作用。

4.2.2.3 metgrid

执行metgrid.exe

mpirun -np 16 ./metgrid.exe

运行成功后,WPS 目录下生成以 met_em开头的中间文件,如下图(只截图了一部分)

4.2.2.4 WPS完整流程
# 进入WPS目录下
cd wps

# 运行地理处理
./geogrid.exe

# 设置Vtable为ECMWF格式
ln -sf ungrib/Variable_Tables/Vtable.ECMWF Vtable

# 软链接ERA5的grib数据
ln -sf ../wrf_era5/ERA5_hourly_data/*.grib .

# 链接GRIB文件
./link_grib.csh *.grib

# 解压grib为中间格式
./ungrib.exe


# 生成met_em中间文件
./metgrid.exe
注意事项
  1. &geogrid中的 geog_data_path = '/data/WPS_GEOG/'    # 是你下载的静态地理数据的路径
  2. &ungrib 中的 prefix = 'FILE',          # 设置了 ungrib 步骤生成的中间文件的前缀。这个前缀决定了 ungrib 生成的文件名。默认值是 FILE,可以根据需要修改。
  3. &metgrid中的 fg_name = 'FILE'    # 设置了 metgrid 步骤生成的文件的前缀。由于 metgrid 步骤通常需要匹配 ungrib 步骤生成的中间文件,因此 fg_name 应该与 ungrib 步骤中的 prefix 匹配。默认值也是 FILE。
  4. 由于 ERA5 数据将高空数据和地表数据分开存储,因此也有一些教程建议将 ungrib 步骤分开执行,分别处理高空数据和地表数据。具体步骤如下:
  • 链接高空数据:使用 ./link_grib.csh your_path/pl.grib 命令将高空数据(例如,pl.grib)链接到工作目录
  • 编辑 namelist.wps:设置高空数据的前缀:prefix = 'PL'。
  • 执行 ./ungrib.exe 解包高空数据
  • 链接地表数据:使用 ./link_grib.csh your_path/sur.grib 命令将地表数据(例如,sur.grib)链接到工作目录。
  • 编辑 namelist.wps:设置地表数据的前缀:prefix = 'SL'。
  • 运行 ungrib:执行 ./ungrib.exe 解包地表数据
  • metgrid 步骤:在 namelist.wps 中,设置 fg_name 为 fg_name = 'PL', 'SL',这样 metgrid 会同时处理高空数据和地表数据。
  • 运行 metgrid:执行 ./metgrid.exe,metgrid 会依次处理PL 和 SL 前缀的数据集。

4.2.3 运行WRF

(1)将路径切换到wrf的run路径下

cd ../wrf-4.6/run/

(2)将上一步生成的met em.文件链接到WRF运行的路径下(如果链接没成功,可以直接复制过来),结果如下图(只截图了一部分):

# 软链接met_em数据
ln -s ../../wps-4.6/met_em.d01.*.nc .
4.2.3.1 编辑namelist.input

在进行 WRF 模拟前,需要根据实验设计编辑 namelist.input,尤其要注意模拟时间、区域范围、垂直层数等关键参数设置。

⚠️ 由于使用的是 ERA5 数据,需设置 num_metgrid_levels = 38,即 ERA5 的垂直层数。

&time_control
 run_days                            = 10,
 run_hours                           = 0,
 run_minutes                         = 0,
 run_seconds                         = 0,
 start_year                          = 2021, 
 start_month                         = 07,   
 start_day                           = 20,   
 start_hour                          = 00,   
 end_year                            = 2021, 
 end_month                           = 07,   
 end_day                             = 30,  
 end_hour                            = 00,   
 interval_seconds                    = 3600
 input_from_file                     = .true.,
 history_interval                    = 60,  
 frames_per_outfile                  = 1, 
 restart                             = .false.,
 restart_interval                    = 7200,
 io_form_history                     = 2
 io_form_restart                     = 2
 io_form_input                       = 2
 io_form_boundary                    = 2
 /

 &domains
 time_step                           = 180,
 time_step_fract_num                 = 0,
 time_step_fract_den                 = 1,
 max_dom                             = 2,
 e_we                                = 78,   
 e_sn                                = 64,   
 e_vert                              = 45,    
 dzstretch_s                         = 1.1
 p_top_requested                     = 5000,
 num_metgrid_levels                  = 38,
 num_metgrid_soil_levels             = 4,
 dx                                  = 30000,
 dy                                  = 30000,
 grid_id                             = 1,     2,
 parent_id                           = 0,     1,
 i_parent_start                      = 1,     53,
 j_parent_start                      = 1,     25,
 parent_grid_ratio                   = 1,     3,
 parent_time_step_ratio              = 1,     3,
 feedback                            = 1,
 smooth_option                       = 0
 /

 &physics
 physics_suite                       = 'CONUS'
 mp_physics                          = -1,    -1,
 cu_physics                          = -1,    -1,
 ra_lw_physics                       = -1,    -1,
 ra_sw_physics                       = -1,    -1,
 bl_pbl_physics                      = -1,    -1,
 sf_sfclay_physics                   = -1,    -1,
 sf_surface_physics                  = -1,    -1,
 radt                                = 15,    15,
 bldt                                = 0,     0,
 cudt                                = 0,     0,
 icloud                              = 1,
 num_land_cat                        = 21,
 sf_urban_physics                    = 0,     0,
 fractional_seaice                   = 1,
 /

 &fdda
 /

 &dynamics
 hybrid_opt                          = 2, 
 w_damping                           = 0,
 diff_opt                            = 2,      2,
 km_opt                              = 4,      4,
 diff_6th_opt                        = 0,      0,
 diff_6th_factor                     = 0.12,   0.12,
 base_temp                           = 290.
 damp_opt                            = 3,
 zdamp                               = 5000.,  5000.,
 dampcoef                            = 0.2,    0.2,
 khdif                               = 0,      0,
 kvdif                               = 0,      0,
 non_hydrostatic                     = .true., .true.,
 moist_adv_opt                       = 1,      1,
 scalar_adv_opt                      = 1,      1,
 gwd_opt                             = 1,      0,
 /

 &bdy_control
 spec_bdy_width                      = 5,
 specified                           = .true.
 /

 &grib2
 /

 &namelist_quilt
 nio_tasks_per_group = 0,
 nio_groups = 1,
 /

注:所有物理过程设置为 -1 表示启用 physics_suite 中的 CONUS 默认方案。

4.2.3.2 real

运行 real.exe 以生成初始场和边界条件:

./real.exe

执行过程中日志信息会写入 rsl.error.0000 文件,可通过该文件检查运行是否成功或排查错误。

✅ 运行成功后,会在当前目录下生成若干以 wrfinput_d0*wrfbdy_d01 命名的文件,分别对应不同嵌套层的初始场和边界条件。

并行运行(推荐使用 MPI),例如使用 4 个核心:

mpirun -np 4 ./real.exe
4.2.3.3 wrf

wrf.exe 是 WRF 模型的主程序,用于正式进行数值模拟:

./wrf.exe

同样,运行日志会写入 rsl.error.0000 文件,可用于查看模拟进度与是否出错。

✅ 模拟成功后,将在当前目录下生成以 wrfout_d0* 开头的输出文件,包含每个时刻的模拟结果,可用于后续可视化或分析。

并行运行(推荐使用 MPI),例如使用 8 个核心:

mpirun -np 8 ./wrf.exe
4.2.3.4 WRF完整流程
cd ../wrf-4.6/run/

# 软链接新的met_em数据
ln -s ../../wps-4.6/met_em.d01.*.nc .

# 运行real.exe生成初始与边界文件
./real.exe

# 运行WRF主程序,多线程跑wrf.exe命令 mpirun -np 16 ./wrf.exe
./wrf.exe

WRF血泪史|写在最后

这篇教程是我一步步踩坑总结出来的“血泪经验”,希望能帮到正在折腾WRF的你,少踩几个雷,少熬几个夜,少掉几根头发 😂。

从ERA5数据的下载,到WPS预处理,再到WRF跑通,每一步都是自己亲手试过、调过、失败过再爬起来的过程。也正因为这些坑踩得够多,我更理解刚入门时那种“为什么它又报错了?”的崩溃感 🤯。

所以,如果你在过程中遇到什么问题,或者有哪个地方没看懂,欢迎来私聊!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐