首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >学习笔记 | WRF动量粗糙度(Z0)修改教程

学习笔记 | WRF动量粗糙度(Z0)修改教程

作者头像
用户11172986
发布2026-04-24 19:23:46
发布2026-04-24 19:23:46
510
举报
文章被收录于专栏:气python风雨气python风雨

WRF动量粗糙度(Z0)修改教程

背景介绍

动量粗糙度长度(Z0, Momentum Roughness Length)是WRF模式中描述地表粗糙程度的关键参数,直接影响地表风场模拟。根据地表类型的不同(如农田、城市、湖泊等),Z0值会有显著差异。


WRF中Z0值的存储位置

WRF模式中Z0值存储在多个位置:

位置

用途

适用模块

VEGPARM.TBL

为NOAH和RUC陆面模式指定参数

module_sf_noahlsm.F

LANDUSE.TBL

提供不同土地利用类型的参数

module_sf_sfclay.F

lake module

湖泊模型中的Z0值

module_lake.F

注意事项

  • VEGPARM.TBL和LANDUSE.TBL虽然物理含义相同,但数值可能不同
  • 各表的Z0值由开发者根据各自的信息指定,进行敏感性测试时需选择合适的表

修改方法

方法一:修改VEGPARM.TBL

适用场景:调整表面风模拟的敏感性

步骤

  1. 找到WRF运行目录中的VEGPARM.TBL文件
  2. 在文件中找到需要修改的土地利用类别(如URBAN = 13)
  3. 修改以下参数:
    • Z0MIN:最小动量粗糙度
    • Z0MAX:最大动量粗糙度

示例

代码语言:javascript
复制
INDEX   CATEGORY      ISLT   ZSOIL  DMAX  ALBEDO    ...
13      URBAN AND BLD    1    2.0   0.5   0.15      ...
...     ...            ...    ...   ...   ...       ...
        Z0MIN          1.0
        Z0MAX          2.0

方法二:修改LANDUSE.TBL

适用场景:使用module_sf_sfclay.Fmodule_sf_sfclayrev.F

步骤

  1. 找到LANDUSE.TBL文件
  2. 查找对应土地利用类别的Z0列
  3. 直接修改Z0值

注意:此修改适用于直接在边界层方案中使用LANDUSE.TBL的情况,不影响NOAH或RUC陆面模式。


方法三:修改lake module(针对湖泊)

适用场景:调整湖泊表面的粗糙度长度

步骤

  1. 定位到WRF源代码中的lake module(通常为module_lake.F
  2. 在文件中找到Z0的常量定义
  3. 修改对应的Z0值

建议:对于湖泊相关的修改,直接修改lake module比修改VEGPARM.TBL更准确。


输出表面粗糙度ZNT

如果需要在模拟过程中输出表面粗糙度(ZNT)进行验证,需要修改WRF注册表。

步骤:

  1. 找到WRF主目录下的Registry/Registry.EM_COMMON文件
  2. 搜索ZNT变量
  3. 将ZNT的状态从i3r(仅用于计算)改为i3rh(用于计算并输出)

修改示例

代码语言:javascript
复制
# 修改前
state   real  ZNT         ij        misc      1       i3r    "ZNT AT PREVIOUS TIME STEP"    "m"

# 修改后
state   real  ZNT         ij        misc      1       i3rh   "ZNT AT PREVIOUS TIME STEP"    "m"

重新编译WRF:

代码语言:javascript
复制
./clean -a
./configure
./compile em_real

创建新的土地利用类别

如果现有土地利用类别的Z0值不符合研究需求,可以创建新的类别。

步骤:

  1. 修改geo_em文件
    • 使用NCL或其他工具打开geo_em.d0X.nc文件
    • 修改LU_INDEX变量的值,将部分区域分配给未使用的类别编号(如22)
    • 保存修改
  2. **修改VEGPARM.TBL**:
    • 在表中添加新的类别索引(如22)
    • 为新类别设置相应的Z0MINZ0MAX

示例

代码语言:javascript
复制
INDEX   CATEGORY      ISLT   ZSOIL  DMAX  ALBEDO    ...
22      CUSTOM URBAN    1    2.5   0.6   0.12      ...
        Z0MIN          1.5
        Z0MAX          3.0
  1. 重新运行WPS和WRF
    • 更改会自动被met_emwrfinput采用

注意事项

  1. 物理合理性:修改Z0值时应确保物理意义合理,建议参考相关文献的典型值范围
  2. 敏感性测试:进行Z0敏感性测试时,应选择适当的表(VEGPARM.TBL或LANDUSE.TBL)进行修改
  3. 编译要求:修改注册表后必须重新编译WRF才能生效
  4. LU_INDEX修改:修改geo_em中的LU_INDEX会影响整个模拟流程,确保met_emwrfinput文件正确采用新值
  5. 备份文件:修改前备份原始文件,以便出现问题时恢复
  6. 验证结果:输出ZNT后,可通过可视化工具(如NCL、Python)检查修改效果

参考资源

  • https://forum.mmm.ucar.edu/threads/how-to-change-surface-roughness-length-for-lake.3491/
  • https://forum.mmm.ucar.edu/threads/roughness-value.13267/#post-32437
  • WRF用户手册
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气python风雨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • WRF动量粗糙度(Z0)修改教程
    • 背景介绍
    • WRF中Z0值的存储位置
      • 注意事项
    • 修改方法
      • 方法一:修改VEGPARM.TBL
      • 方法二:修改LANDUSE.TBL
      • 方法三:修改lake module(针对湖泊)
    • 输出表面粗糙度ZNT
      • 步骤:
    • 创建新的土地利用类别
      • 步骤:
    • 注意事项
    • 参考资源
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档