观潮 · 模式预报与气象 AI 观察
WRF 4.8.0 发布:雷电参数化、Noah-MP 5.1.2、Grell-Freitas-Li 对流三件套,附两个会导致作业挂死的关键修复
WRF 在 2026 年 6 月 8 日更新到 v4.8.0。这一版的物理过程改动密度明显高于以往:新增一个 prognostic 雷电参数化方案、Shin-Hong PBL 换到结合 YSU 的新版本、Noah-MP 升到 5.1.2、Grell-Freitas 积云对流被重构成跨 WRF/MPAS/CCPP 一致的 GFL 子模块。
对已经在跑 4.7.x 的使用者来说,这一版有两个修复值得单独拿出来看,因为它们的表现形式不是报错,而是作业直接卡住不动——排查起来比崩溃更费时间。
先说两个会让人以为"程序挂了"的 bug
**一个是首次 restart 写入时挂死。release notes 里把它写成"核心变量未初始化的关键修复,会导致未定义行为",常见表现是模型在第一次写 restart 文件时挂住(#2300)。未初始化内存被当成有效值使用,属于典型的"不报错但行为随机"那一类。
另一个是读 auxinput 数据时突然崩溃。 修复点在释放数据句柄时没有清零(#2292),常见表现是读 auxinput 时模型突然崩掉。
这两条都写进了 Known Problems 的对照条目里。如果你手上的 4.7.x 出现过"restart 写不出来"或者"auxinput 读到一半崩了",4.8.0 值得专门排一次。
物理过程:新加了什么
雷电。 新增 dynamic lightning scheme,采用 Lynn et al. (2012) 的方案。这是一个 prognostic lightning parameterization,特点是预测 bulk potential electric energy 的时间演变——也就是说闪电不是被当成"雷暴区里随机放闪电"的经验触发,而是用一个有记忆的电能变量去积分。
PBL。 新版 Shin-Hong PBL(结合了 YSU 方案)替换了 bl_pbl_physics = 11。这一版的代码移到了共享的 MMM-physics 仓库,编译后在 phys/physics_mmm 下可用(#2286)。新增三个选项:
选项 · 作用 · 默认
`shinhong_scu_mixing` · 自下而上的混合(top-down mixing) · 关
`shinhong_nonlocal_flux` · 非局地通量:`gamma (f)` 或质量通量 `mass flux (t)` · 开
`shinhong_ke_dissipation` · 湍流动能耗散加热 · 关
代码位置变更是容易踩的:按老路径找 module_physics_shinhong 之类会找不到,编译后要到 phys/physics_mmm 下确认。
地形重力波拖曳。 gwd_opt = 1 更新,新增 gwd_dx_factor = 2(有效网格尺度)和 gwd_if_nonhyd = .true.(非静力效应开关)。这一项必须配合 WPS 代码更新(wrf-model/WPS#281)产出的地形场才能用(#2285)。
尺度感知的湍流地形形阻。 在修订后的 MM5 近地面层方案里新增 kim_tofd 选项,默认关,启用后会增加地表拖曳。原文写的是"Use this new option with care"(谨慎使用)。同样需要 WPS#281 提供的 var2 场(#2284)。
这两条共享同一个前置条件:都要 WPS 4.7.0 里的 #281 更新。这正好和本版开头那条「WRF 4.8.0 耦合了 WPS v4.7.0」的硬约束对上了——不是泛泛的"建议升级",而是这两项功能在旧 WPS 上根本跑不起来。
陆面。 耦合到重构过的 Noah-MP v5.1.2,相比 4.7.1 里用的 v4.7 有若干新选项和改进(#2268)。
城市冠层。 单层城市冠层模型(UCM)新增城市地面植被和行道树。对应两篇在写的手稿:Huang, Y., Wang, C., & He, C 关于把自然解决方案(基于自然的解决方案,NBS)纳入 WRF-urban 建模体系;Wang, C., Huang, Y., Miller, D. L., Katz, D., & Ghosh, A. K 关于带树城市冠层模型的解析视角因子。两篇都还是 in preparation 状态,也就是扩展部分的依据尚未经过同行评议。
社区火行为。 耦合了 Community Fire Behavior 模型(Jimenez et al., 2024),GMD 预印本。
GFL:积云对流被重构成跨模式一致的子模块
Grell–Freitas(GF)积云对流方案被进一步开发为 Grell–Freitas–Li(GFL)子模块,并且在 WRF、MPAS、CCPP 三者之间实现一致。这个改动听起来像是工程整理,但实际影响不小:过去 WRF 和 MPAS 里的 GF 方案存在实现差异,同一个物理过程在两个模式里跑出来的东西不完全可比;统一之后,做跨模式比较时少了一个系统性误差来源。
TEMPO:Thompson-Eidhammer 微物理
TEMPO 全称 Thompson-Eidhammer 业务化微物理参数化,仓库在 https://github.com/NCAR/TEMPO,技术文档在 https://ncar.github.io/TEMPO/。
WRF 里支持的 namelist 选项:
选项 · 作用 · 默认
`tempo_aerosolaware==1` · 用气溶胶感知版本 · 关
`tempo_hailaware==1` · 用冰雹感知版本 · 关
表格构建说明在 https://ncar.github.io/TEMPO/program/build_tables.html。预构建表格可以从 TEMPO/tables 目录拿(这个表已经在 WRF/run 目录里,需要命名为小写的 ccn_activate.bin)。更大的表格通过 NOAA 服务器获取:
```
wget -q https://gsl.noaa.gov/thredds/fileServer/retro/jensen/qr_acr_qg_data_tempo_v3
wget -q https://gsl.noaa.gov/thredds/fileServer/retro/jensen/qr_acr_qs_data_tempo_v3
wget -q https://gsl.noaa.gov/thredds/fileServer/retro/jensen/freeze_water_data_tempo_v3
```
MYNN-EDMF 有几个新开关要小心
MYNN-EDMF 子模块按 NOAA Tech Note(https://doi.org/10.25923/rahr-sj70)更新了。主要变化:
- 修订的次网格云选项(
bl_mynn_cloudpdf = 2)改进了低层云的表现。 - 改进下击暴流(downdraft)的尺度感知和底层物理表示。
- 为提升稳定条件下低空急流(low level jet)的结构,对若干 WFIP3 个例做了相关修订和调参。
- 更新人为气溶胶的混合。
release notes 里对三个新选项专门做了提示:bl_mynn_mixaerosols、bl_mynn_mixnumcon、bl_mynn_mixscalars 的默认值可能不适合你的研究或业务。原文的完整建议是:一般建议启用这三个选项,同时把 scalar_pblmix=0 和 tracer_pblmix=0 设为零——因为 MYNN 自己就能完成相应的非局地混合,不需要 WRF 通用代码再混一遍。
也就是说这不是"要不要用"的问题,而是一旦启用就必须配套关掉通用混合开关,否则会重复混合。
MYNN 近地面层方案也更新到了模块化的新版本(https://github.com/NCAR/MYNN-SFC),被拆成陆、水、冰三个独立模块。
CORDEX-WRF:约 150 个新诊断量
CORDEX WRF 模块 v1.3 那一版有配套的 GMD 论文(Lluís Fita 等,2019,CORDEX-WRF v1.3)。当前版本是 v.3,提供约 150 个新诊断变量,在 namelist.input 里新增了一个 &cdxwrf 段。输出分成三个文件:
文件 · 输出位置 · 内容
`wrfcdx_d<domain>_<date>` · `auxhist19` · 主输出文件,含大多数变量
`wrfhfcdx_d<domain>_<date>` · `auxhist18` · 高频输出(如 10 分钟),只有 `RAIN` 和 `COLMAX`,为追踪对流系统而设
`wrfpress_d<domain>_<date>` · `auxhist23` · p 层插值变量及附加变量
细节见 CDXWRF WIKI:https://wiki.cima.fcen.uba.ar/mediawiki/index.php/CDXWRF
这里有个容易被忽略的坑:auxhist19 和 auxhist18 这两个 auxhist 槽位是被 CORDEX-WRF 占用的。如果你的 namelist 里原本用这些编号输出别的东西,开 CORDXWRF 会直接冲突。
诊断输出:一个时间序列的 bug 值得单独提
solar_diagnostics 打开时,WRF 的时间序列输出有一个 bug:最后一个变量 ts_swddnic2 被写到了独立的记录里。修复后 TS 文件的所有 55 个变量回到同一条记录(#2265)。
这条对已经跑完的算例有直接影响:如果你的脚本按"每条记录 55 个变量"的假设去读,那么在 4.7.x 里读到的最后一条记录是残缺的。这类 bug 不报错,只是最后一行数据悄悄少了一段。
化学与水文
化学。 修正了 module_chem_utilities.F 里干空气密度的计算(#2185)。原文对影响的定性是"影响很小"(very minor effect)——这是发布方自己给的定级,不属于要重新做敏感性试验的那一类。
水文。 除了常规 bug 修复,这一版新增了对流量辅助分流(gage-assisted diversions)的初步支持,用于河道演算。这需要一个新的可选分流参数 netCDF 文件,并且引入了一个 C 编译器依赖(#2263)。
C 编译器依赖这一条对部署有直接影响:原来只编 Fortran 的环境需要能编 C。
物理相关的其他 bug 修复
这几条散落在release notes 的 Bug Fixes 段,类型混杂但都可能有实际影响:
修复内容 · PR
`module_mp_radar.F` 里 UDM 方案新变量导致的浮点异常 · #2249
UDM 微物理冰生成里漏掉的变量初始化与冰雹沉降项 · #2309
NTU 微物理"先用后算"导致的浮点异常 · #2317
Fitch 风场参数化:用轴向诱导修正把格点风速改成自由风速(Vollmer et al. 2024),可用 `windfarm_induction = 0` 关闭 · #2242
积云内插与 Equation of Time 参考方程的年份小数计算 · #2334
湿球温度露点标签的单位注释改成摄氏度 · #2280
火山灰重力沉降 bug,并新增模拟火山喷发的能力 · #2168
热带气旋个例的理想化初始化程序在 MPI 下无法执行 · #2295
UTDM 那两条(#2309、#2317)都是浮点异常,属于"以前跑到某个 case 才会崩"的那类。如果你之前有 UDM 或 NTU 微物理的作业莫名其妙中断,可以查一下是不是这两个。
Fitch 风场那条(#2242)会改变已有结果,不是纯 bug 修复——它修正了格点风速到自由风速的换算。默认会生效(修正后的值),要保持旧行为得显式设 windfarm_induction = 0。做风电场评估的话这条要留意。
杂项里有两条影响 namelist
改动 · 说明
热带套件的地表层方案 · 从旧 MM5 选项 `sf_sfclay_physics = 91` 改为修订版 MM5 选项 `sf_sfclay_physics = 1`(#2278)
`em_les` 的 `e_vert` · 现在跨各domain 保持一致(#2274)
Registry 与 README 里的拼写 · Xinanjiang(中文名"新安江")原先误作 Xiananjiang(#2289)
GW drag 诊断变量单位说明 · `dusfcg`、`dvsfcg`、`dtaux3d`、`dtauy3d` 的单位描述修正(#2261)
第一条是默认行为的改变:如果你的热带算例用的是套件默认配置,地表层方案已经从 91 变成 1。这跟前面 Shin-Hong PBL 那条一样,属于"升级后结果会变但没人提醒你"的一类。
构建方式有实质变化
manage_externals 不再使用。 MMM-physics 被加为 git submodule(#2282),并且 WRF 里所有 submodule 现在都用 git submodule 跟踪,不再走 manage_externals 机制。这意味着编译脚本的写法变了——按老文档的步骤走会失败。
CMake 路径有实质进展:
改动 · 说明
CMake DA Core(#2092) · CMake 构建现在可以构建基础 DA core(不含 4DVAR)
CMake PnetCDF Find Package(#2145) · CMake 构建现在可以用 pnetcdf
nf-config libdir 探测(#2161) · 修复老版本 netcdf-fortran 的库查找问题
C 与 Fortran 下划线检查(#2091) · 替代 CMake 构建中硬编码的下划线规范
如果你的编译流程是 CMake 路线,4.8.0 里 pnetcdf 和基础 DA core 这两条是实打实能用的新能力。
两个版本耦合的硬约束
这一版 WRF 耦合了更新的 WPS v4.7.0。 要用新特性,必须用 WPS v4.7.0 或更高版本。
下载源包时注意选文件名。 如果从 release 页面下载文件,只能选 v4.8.0.tar.gz 或 v4.8.0.zip,不要选名字里带 "Source Code." 的那几个——它们不包含编译 WRF 所必需的 submodule,而且是被刻意置空的。原文用了四个感叹号强调这条。
这条和上面 manage_externals 那个改动是同一件事的两面:submodule 现在由 git 管理,GitHub 自动生成的 "Source Code" 归档不会带上 submodule 内容,所以那个包编译必然失败。
作者承认的限制与已知问题
release notes 第一屏就挂了一条「已知问题」的 wiki 链接,说明这一版确实存在已知问题,官方没有在 release notes 里展开,留到了 wiki 页面(wrf-model/WRF 仓库的 WRF-V4.8.0-Known-Problems 条目)。
另外几处限定语也值得留意:
- 城市植被/行道树扩展所依据的两篇手稿都标注 in preparation,未经过同行评议。
- MYNN-EDMF 三个新选项的默认值,发布方明确说"可能不适合你的研究或应用"。
gwd_opt = 1的新增选项需要配合特定配置使用,notes 里没写具体是哪个配置。- TEMPO 的气溶胶感知和冰雹感知两个版本默认都是关的,也就是说默认跑的是基础版本。
一句话判断
这一版物理过程的改动量足以让长期用 4.7.x 的用户重新做一轮敏感性试验,尤其是 GFL 统一和 Noah-MP 5.1.2;但如果你目前没有遇到 restart 挂死或 auxinput 崩溃,可以先看 Known Problems wiki 确认没有踩到你关心的坑,再决定是否升级。另外 manage_externals 那条改动是硬性破坏,编译流程必须跟着改。