This article was last updated on <span id="expire-date"></span> days ago, the information described in the article may be outdated.
数据的准备
如果要使用 WRF 的模拟结果驱动 PALM,需要将 WRF 的结果处理成 PALM 可以读取的 dynamic driver,而要生成 dynamic driver 的话,还需要使用静态地理数据先生成 static driver 才可以。
static driver 的生成
static driver 的生成需要使用 PALM 仓库内附带的工具 palm_csd (PALM 团队还有一个新的工具 palmgem 也可使用)。其中的手册写的不是特别完善,总结下来就是需要以下几类数据:
- 地形高度
- 建筑物高度 (以及用于区分不同建筑物的建筑物 id)
- 道路分布和类型
- 地表分布和类型
- 植被分布和类型
- 水体分布和类型
但这些数据不是必须要有的,不提供的话 PALM 会使用内部设定好的默认值。大陆想要拿到比较高精度的数据很难,可以使用 OpenStreetMap 提供的数据,但是需要自己做转换,生成 Shape 文件 (所有的几何分布都要放到一个 Shape 文件中,并且以额外的数据标记出类型) 或 TIFF 文件。并且某些数据类型还需要自己做一下映射,因为 PALM 内部支持的类型没有 OpenStreetMap 支持的那么丰富。
palm_csd 的运行需要提供一个 YAML 配置文件,具体的 key 以及其含义可以看 palm_csd 的文档,下面是我用于生成 static driver 的配置:
1 | input_root: |
需要注意的地方有:
- TIFF 文件和 Shape 文件的投影系与 settings 中设置的
epsg必须一致。 origin_x和origin_y是模拟区域的起点 (左下角) 在相应投影系中的坐标 (当然你也可以设置origin_lon和origin_lat)- 水平分辨率由
pixel_size决定,单位是米
此外,还应该详细的检查输出的 static driver:
vegetation_type,pavement_type以及water_type中的无效值应被替换为int8类型的整型值,并且在属性_FillValue中记录该填充值vegetation_type或pavement_type不为无效值的格点必须具有有效的soil_type。- 在
vegetation_type,pavement_type或water_type有值的格点上,surface_fraction的总和必须为1。
dynamic driver 的生成
有了 static driver 后,就可以进一步生成 dynamic driver 了。需要使用的工具是 palm-meteo。
目前 palm-meteo 不支持单个包含多个时间的 wrfout 数据,需要手动切分文件,或者在 WRF 的 namelist 中设置 frames_per_outfile = 1 让 WRF 每个输出时刻单独一个文件。
palm-meteo 的运行也需要 YAML 配置文件,下面是我用于生成 dynamic driver 的配置:
1 | case: nju #case name (required) |
有个需要注意的地方是,一定要将 proj_palm 设置成生成 static driver 时使用的数据的投影系,否则 palm-meteo 会报错无法执行。
运行
PALM 的手册目前写的还不是很完整,有一些地方是我摸索出来的,所以做法不一定是完全准确的。
要让 PALM 使用生成的两个 driver 的话,需要在 namelist 中设置 initializing_actions = 'read_from_file',同时关闭所有关于边界条件的手动设置的参数,例如 ug_surface,pt_surface 之类的。我不是很清楚需要设置 topography 以及如果设置了 topography = 'read_from_file' 但是不提供 _topo 文件的话 PALM 会不会使用 static driver 中的高度,不过我设置了topography = 'read_from_file' 并且没有提供 _topo 文件。
还有一个需要注意的地方是,PALM 的 namelist 中,urban_surface_parameters 的 switch_off_module 默认值是 .false.,但是如果不在 namelist 中设置这个参数,PALM 会认为找不到 urban_surface_parameters 的设置,然后报错。所以必须要在 namelist 中添加 urban_surface_parameters 的设置 (即使是空的) 来启用 urban surface model。
Author: Syize
Permalink: https://blog.syize.cn/2026/01/29/note-run-palm-with-wrf/
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Syizeのblog!
Comments