观潮 · 模式预报与气象 AI 观察

ECMWF 49r1 把 STL1~4 换成 sot、SWVL1~4 换成 vsw:WPS ungrib 读不出土壤温湿度了

2026-10-15

> 2024 年 11 月 12 日 ECMWF 上线 IFS 业务版本 49r1,把四个土壤温度参数 STL1~STL4 换成带四层的 sot、四个土壤湿度参数 SWVL1~SWVL4 换成带四层的 vsw,WPS 4.6.0 里针对 ECMWF 的 Vtable 随即失效,ungrib 直接读不到土壤温度和湿度。改 Vtable 没用,往 METGRID.TBL.ARW 里补新变量也没用;官方 Ming Chen 给出的结论是必须动 ungrib 源码 rd_grib2.F,并附了一份修复文档。帖子里同时留了三条明确边界:官方承认「49r1 新发布,我们没有做充分测试保证它对 WRF 可用」;有用户直言改 rd_grib2.F 只是权宜之计;到最后也没有人贴出可直接替换的完整补丁。

换掉的到底是什么

旧版 IFS 用四个独立参数名表示地表以下四层:STL1、STL2、STL3、STL4 是土壤温度,SWVL1、SWVL2、SWVL3、SWVL4 是体积土壤含水量。49r1 之后,这两组各自合并成一个带层数的参数。

变量 · 49r1 之前 · 49r1 之后 · 层数 · 含义

土壤温度 · STL1 / STL2 / STL3 / STL4 · `sot` · 4 层 · 地表以下各层土壤温度

体积土壤含水量 · SWVL1 / SWVL2 / SWVL3 / SWVL4 · `vsw` · 4 层 · 地表以下各层土壤体积含水量

WPS 这一侧的映射表(Vtable)里写的是旧参数名和对应的 GRIB2 编码(discipline / category / parameter / level 这套四元组)。参数名一改,Vtable 里的条目就匹配不上数据里的字段,ungrib 解出来的中间文件里就没有土壤温湿度。

三条自救路径,前两条都走不通

发帖人按从易到难的顺序试了三步:

尝试 · 做法 · 结果

① 改 Vtable · 按新参数更新 ECMWF Vtable 条目 · 失败,`ungrib` 仍读不出土壤变量

② 改 `METGRID.TBL.ARW` · 在文件里手工新增 `sot` / `vsw` 对应的四个层级变量(ST000001~ST000004、SM000001~SM000004) · 失败,WPS 依旧找不到土壤温湿度

③ 改源码 · 修改 `ungrib` 的 `rd_grib2.F` · 官方确认这是必须的一步

另一位用户在回帖里说,他也碰到同样问题,但连 discipline、category、parameter、level 这几项的取值都和别人不一样,ungrib 直接解不了这个 GRIB 文件。还有人试过把 rd_grib2.F 里所有的 106 改成 151——这一步对应的是 GRIB2 discipline 从「陆面」类目下换到新编码,属于同一方向的摸索。

发帖人把 ECMWF 侧的原始数据路径也贴了出来:业务原始 IFS 数据在 ECMWF 服务器上的 forecasts/YYYYMMDD/HHz/ifs/0p25/oper/ 目录下。

官方给出的正解与文档

Ming Chen 在回帖中转述了他向 ECMWF 团队求证后的答复,口径很直接:要让新 IFS 土壤变量可用,必须在 ungrib 内部做修改,具体是 rd_grib2.F 这个源码文件。ECMWF 同时提供了一份针对 49r1 的文档来修复相关问题。

帖子里另外留了一条线下线索:有人把这个问题提到了 WPS 的 GitHub 仓库,编号为 Issue #264,并请求愿意动手的人上传适配 WRF 4.6 的修改后文件(改过的 rd_grib2.F 以及可能需要调整的 Vtable)。

边界与没做的事

边界 · 原帖口径

官方未充分测试 · 「ECMWF 49r1 是新发布的,我们还没有做足够的测试来保证它对 WRF 能正常工作」——Ming Chen 原帖原话

改源码是权宜之计 · 有用户在回帖中评价这一改动是「bandaide for the problem」,即治标不治本

没有完整补丁 · 帖子最后没有人贴出可直接替换的 `rd_grib2.F` 全文与配套 Vtable,只有方向性说明和外部文档链接

编码取值存在分歧 · 不同用户手上的数据里 discipline / category / parameter / level 取值不一致,说明同一份修改未必对所有数据批次都成立

一句话判断

这是一次典型的上游数据编码变更打穿下游前处理链路的事故:改配置层(Vtable、METGRID.TBL)都补不回来,必须动 ungrib 源码,而官方自己也承认 49r1 在 WRF 上的适配尚不充分——用它跑长序列前,先把土壤温湿度是不是真的解出来了验一遍。

在观潮中打开(含配图与交互)→