【WRF-Urban】Urban 模块是否运行完成及与标准 WRF 的区别

发布于:2024-12-06 ⋅ 阅读:(47) ⋅ 点赞:(0)

在运行 WRF-Urban 模型 后,判断 Urban 模块是否运行完成以及分析其结果与标准 WRF 的区别,需要从 日志文件、输出 NetCDF 文件 和 模型物理参数的变化 等方面着手。

1. 如何判断 WRF-Urban 部分是否运行完成?

(1) 检查 WRF 的输出日志文件

WRF 模型运行时会生成标准输出日志文件(如 rsl.out.0000 或 wrf.log)。通过检查日志文件内容,可以确认 Urban 模块是否被调用以及是否运行完成:

关键日志信息:
WRF-Urban 的运行会输出特定的日志内容,具体取决于所使用的 Urban 模式(如单层城市冠层模型 SLUCM 或多层城市冠层模型 BEP/BEM)。以下是一些关键提示:

1、如果使用 单层城市冠层模型(SLUCM):

Urban model: Single-layer urban canopy model.

或:

Urban scheme activated: SLCM (single-layer canopy model).
  • 如果看到此类信息,说明 Urban 模块被正确调用。
  • 如果未看到此类信息,则说明 Urban 模块未被启用,可能是 namelist.input 文件未正确配置。

2、如果使用 多层城市冠层模型(BEP/BEM):

Urban model: BEP/BEM urban canopy model activated.

或:

Urban modeling using BEP or BEM is ON.

(2) 检查 namelist.input 文件的配置

要确保 Urban 模块运行完成,必须在 namelist.input 文件中正确开启相关参数。以下是一些关键配置项:

1、物理参数(physics)部分:

sf_urban_physics = 1
  • sf_urban_physics=1:启用单层城市冠层模型(SLUCM)。
  • sf_urban_physics=2 或 3:启用多层城市冠层模型(BEP 或 BEM)。
  • 如果未设置 sf_urban_physics 或其值为 0,则 Urban 模块不会运行。

2、地理数据(geogrid)部分:

需要确保使用了城市相关的输入数据(如城市分数 FRC_URB2D 和城市参数 URB_PARAM)。
如果地理数据缺失,Urban 模块可能会运行失败或被跳过。
在这里插入图片描述

3、城市参数配置(可选):
如果自定义了城市相关参数(如 URB_PARAM 数据),需要确认这些数据已成功嵌入到 WRF 的静态地理文件(geo_em.d0X.nc)中。

(3) 检查输出文件中的 Urban 相关变量

WRF-Urban 模型运行完成后,会在输出文件(wrfout_d0X_*)中生成以下特定的城市变量:

1、单层城市冠层模型(SLUCM)输出变量:

  • TKE_CAN:城市冠层湍流动能。
  • T2_CAN:城市冠层的 2 米温度。
  • Q2_CAN:城市冠层的 2 米比湿。
  • CANWAT:城市冠层中的积水。

2、多层城市冠层模型(BEP/BEM)输出变量:

  • UST_URB:城市冠层的摩擦速度。
  • HFX_URB:城市冠层的感热通量。
  • QFX_URB:城市冠层的潜热通量。
  • AHF:人为热通量(如果 URB_PARAM 中定义了此变量)。

检查方法: 打开输出文件,查看是否包含以上变量:

ncdump -h wrfout_d01_YYYY-MM-DD_HH:MM:SS

如果文件中包含这些城市变量,说明 Urban 部分已运行完成。

另,也可用Python代码输出wrfout输出文件的所有变量,Python代码如下:

def check_urban_variables(file_path, flag=0):
    """
    检查给定 wrfout 文件中是否包含 WRF-Urban 模型的特定城市变量。

    参数:
    file_path (str): wrfout 文件的路径
    flag (int): 检查的模型类型:
                - 0: 检查单层城市冠层模型(SLUCM)相关变量
                - 1: 检查多层城市冠层模型(BEP/BEM)相关变量

    返回:
    None
    """
    # 使用 netCDF4 打开 wrfout 文件
    dataset = Dataset(file_path)

    # 定义单层城市冠层模型(SLUCM)的变量
    slucm_variables = ["TKE_CAN", "T2_CAN", "Q2_CAN", "CANWAT"]
    # 定义多层城市冠层模型(BEP/BEM)的变量
    bep_bem_variables = ["UST_URB", "HFX_URB", "QFX_URB", "AHF"]

    print(f"\n文件: {file_path}")
    print("检查城市相关变量...\n")

    if flag == 0:
        # 检查单层城市冠层模型变量
        print("单层城市冠层模型(SLUCM)相关变量:")
        for var in slucm_variables:
            if var in dataset.variables:
                print(f"  - {var}: 存在")
            else:
                print(f"  - {var}: 不存在")
    elif flag == 1:
        # 检查多层城市冠层模型变量
        print("多层城市冠层模型(BEP/BEM)相关变量:")
        for var in bep_bem_variables:
            if var in dataset.variables:
                print(f"  - {var}: 存在")
            else:
                print(f"  - {var}: 不存在")
    else:
        print(f"无效的 flag 值:{flag}。请输入 0(SLUCM)或 1(BEP/BEM)。")

    # 关闭 NetCDF 文件
    dataset.close()
ncdump -h wrfout_d03_2020-07-07_00:00:00 | grep TKE_CAN

如果变量未出现在输出中,则需要检查注册文件。

参考


网站公告

今日签到

点亮在社区的每一天
去签到

热门文章