【数值模型后处理系列】通风系数计算及垂直层插值

embedded/2024/9/22 23:57:12/

一、通风系数

1.1 通风系数简介

通风系数(Ventilation Coefficient,VC)可以用来表征扩散条件,其计算公式如下(参考U S Iyer and P Ernest Raj的文章):
在这里插入图片描述
其中mixing depth选用WRF输出的边界层高度(PBLH),mean wind speed近似用边界层顶的风速与地面风速做平均(当然也可多选几层)。

1.2 Python代码实现VC的计算

计算VC的示例代码:

python">from netCDF4._netCDF4 import Dataset
from wrf import getvar, ALL_TIMES, interplevelfiles = 'wrfout文件列表'
wrfout = [Dataset(i) for i in files]pblh = getvar(wrfout, 'PBLH', timeidx=ALL_TIMES, method='cat')
height = getvar(wrfout, "height_agl", timeidx=ALL_TIMES, method='cat')
wind = get_uvmet_wspd_wdir(wrfout, timeidx=ALL_TIMES, method='cat')
wind_pblh = interplevel(wind[0], height, pblh)
vc = (wind_pblh + wind[0, :, 0, :, :]) / 2 * pblh  # ventilation coefficient(m2/s)

这样计算出来的VC会有许多网格点是空值,可以在interplevel中指定missing参数,不过只能指定一个数值,由于各个网格的VC数值并不知道也不相等,因此,可以插值后再进行缺失值补空,这部分有许多方法可以实现,读者可自行研究。

1.3 结果解读

计算出来的VC空间分布图如下(川渝地区)。由图可知,该时刻,川渝地区通风系数较小,扩散条件相对较差。

在这里插入图片描述

二、垂直层差值

2.1 插值函数简介

上面计算VC需将风速插值到PBL高度层,wrf-python中提供了interplevel函数可满足这一插值需求,

python">wrf.interplevel(field3d, vert, desiredlev, missing=<MagicMock name='mock().item()' id='140675643013392'>, squeeze=True, meta=True)

参数解释:

  • field3d (xarray.DataArray或numpy.ndarray) – 要插值的三维字段,最右边的维度为 nz × ny × nx
  • vert (xarray.DataArray或numpy.ndarray) – 垂直坐标的三维数组,通常是压力或高度。该数组必须具有与field3d相同的维度;
  • desiredlev ( float、一维序列或numpy.ndarray) – 所需的垂直水平。这可以是单个值(例如 500)、值序列(例如 [1000, 850, 700, 500, 250])或多维数组,其中右侧二维 (ny x nx) 必须匹配field3d,并且任何最左边的尺寸与 field3d.shape[:-3] 匹配(例如行星边界层)。必须与vert参数采用相同的单位;
  • missing ( float) – 用于输出的填充值。默认为wrf.default_fill(numpy.float64);
  • squeeze(bool,可选) – 设置为 False 以防止大小为 1 的维度自动从输出形状中删除。默认为 True
  • meta ( bool) – 设置为 False 以禁用元数据并返回 numpy.ndarray而不是 xarray.DataArray.默认为 True

函数返回:插值变量。如果启用 xarray 并且meta参数为 True,则结果将是一个 xarray.DataArray对象。否则,结果将是一个numpy.ndarray没有元数据的对象。

返回类型:xarray.DataArray or numpy.ndarray

2.2 使用示例

示例1:将位势高度插值至 500 hPa

python">from netCDF4 import Dataset
from wrf import getvar, interplevelwrfin = Dataset("wrfout_d02_2010-06-13_21:00:00")p = getvar(wrfin, "pressure")
ht = getvar(wrfin, "z", units="dm")ht_500 = interplevel(ht, p, 500.0)

示例2:将相对湿度插值到边界层高度

python">from netCDF4 import Dataset
from wrf import getvar, interplevelwrfin = Dataset("wrfout_d02_2010-06-13_21:00:00")rh = getvar(wrfin, "rh")
height = getvar(wrfin, "height_agl")
pblh = getvar(wrfin, "PBLH")rh_pblh = interplevel(rh, height, pblh)

欢迎关注个人微信公众号:微思研


http://www.ppmy.cn/embedded/20367.html

相关文章

密码学系列5-BLS短签名和存在不可伪造性(EUF-CMA)

本章将给出BLS短签名方案和方案的安全性证明。这个方案是很多签名方案的基础方案,学会这一个方案,也就学会了这一系列方案的安全性证明。 注:签名方案:私钥签名,公钥验证;加密方案:公钥加密,私钥解密。 论文名:Short signatures from the Weil pairing 一、BLS短签名 …

6 Zookeeper 配置说明

Zookeeper 的三种工作模式 单机模式:存在单点故障。集群模式:在多台机器上部署 Zookeeper 集群,适合线上环境使用。伪集群模式:在一台机器同时运行多个 Zookeeper 实例,仍然有单点故障问题,当然其中配置的端口号要错开的,适合实验环境模拟集群使用。Zookeeper 的三种端口…

windterm 工具使用

windterm 工具使用 一. 安装教程&#xff1a; 下载安装包&#xff1a;https://github.com/kingToolbox/WindTerm/releases 将压缩包解压到指定目录下 即可打开界面&#xff0c;安装完成&#xff1a; 二. ssh 协议新建会话&#xff1a; 要求输入用户名和密码&#xff1a…

c++算法入门教程(3)

C是一种功能强大且广泛应用的编程语言&#xff0c;对于想要深入学习编程和算法的人来说&#xff0c;掌握C是一个重要的里程碑。本文将带你逐步了解C编程的基础知识&#xff0c;并介绍一些算法和编程技巧帮你入门c算法。 ​ 在c算法入门教程(1)和c算法入门教程(2)-中&#xff0c…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-3

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

如何增强交友、婚恋平台、金融等平台的安全性

运营商二要素核验是一种数字身份验证方法&#xff0c;主要使用用户的手机号码和姓名作为核验要素。这两个要素被认为是最基本的用户身份信息&#xff0c;通过运营商的数据库来核实其真实性。 在实际操作中&#xff0c;用户需要提供手机号码和姓名进行验证。应用系统会调用接口…

Flutter笔记:DefaultTextStyle和DefaultTextHeightBehavior解读

Flutter笔记 DefaultTextStyle和DefaultTextHeightBehavior解读 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:htt…

语气确定词库再nlp领域怎么应用?

语气确定词库在NLP领域的应用探索 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;语气确定词库是一项至关重要的资源。它对于理解和分析文本中的情感、态度以及语义倾向具有极其重要的意义。在日常的微服务、RPC等技能实践中&#xff0c;也深感NLP技术对于提升系…