首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算垂直高度剖面

如何计算垂直高度剖面
EN

Stack Overflow用户
提问于 2020-01-29 16:41:20
回答 1查看 171关注 0票数 0

我想从ECMWF数据中计算层厚。

我拥有的是变量T(在一层内)和relhum (在一层内)和压力(在层接口和层中点)。

我很难理解pressure参数对metpy.calc.thickness_hydrostatic_from_relative_humidity函数的影响:

当我查看docstring中给出的公式时,

$$ Z_2 - Z_1 = -\frac{R_d}{g} \int_{p_1}^{p_2} T_v d\ln p $$

在我看来,这个函数似乎会返回LHS,即$Z_2 - Z_1$.

然而,在我看来,似乎pressuretemperaturerelative_humidity参数都必须具有相同的维度。

我觉得这很让人困惑:为了获得$Z_1$和$Z_2$之间的层厚,我还需要输入压力$p_1$和$p_2$。然而,温度通常是在满的水平上定义的,也就是说,我的温度比我的压力低一个。

例如,为了计算底层的厚度,我希望给出表层的压力,顶层的压力,以及层内的温度(和湿度)。但是当我尝试像这样使用这个函数时,我会得到一个

代码语言:javascript
复制
ValueError: operands could not be broadcast together with shapes (361,1440,79) (361,1440,78) 

请帮助我理解如何正确地使用这个功能。

EN

回答 1

Stack Overflow用户

发布于 2020-01-29 20:00:21

然而,在我看来,

pressuretemperaturerelative_humidity参数都必须有相同的维度。

..。

例如,为了计算底层的厚度,我希望给出表层的压力,顶层的压力,以及层内的温度(和湿度)。

实际上,与您的预期相反,pressuretemperaturerelative_humidity变量都需要在相同的级别上定义,因为,正如MetPy的文档所示,thickness_hydrostatic_from_relative_humidity operates on atmospheric profiles。注意,在MetPy的术语中,“层”位于任何一组垂直层之上,而不仅仅是两个层之间。

对在公共级别上定义的数据的需求也可以从计算本身看出,因为积分是通过梯形规则执行的。例如,在具有两层数据的层的最小情况下,MetPy使用的公式

给定通过梯形规则进行的积分,则减少到

实际上,如果您确实具有“偏移”或“交错”级别的数据,其中您的temperaturerelative_humidity的垂直坐标与您的pressure不同,则需要在公共级别上插值您的数据以使用thickness_hydrostatic_from_relative_humidity (或MetPy的任何其他配置文件计算)。使用pressure形状数组(361,1440,79)和temperature形状数组(361,1440,78),这可能是一种简单的、适用于您的方法

代码语言:javascript
复制
pressure_destaggered = (pressure[..., :-1] + pressure[..., 1:]) / 2

但是,这种方法有两个注意事项:

  • thickness_hydrostatic_from_relative_humidity只用于处理大气数据的(1D)剖面,而不是三维网格,因此请对结果保持谨慎(指定可选的bottomdepth参数可能会失败,如果您只有两个压力级别/一个温度级别,则默认的集成轴可能会或不起作用,因为MetPy至少需要两个级别来定义一个层。在这种情况下,您需要以某种方式近似两个压力级的温度/相对湿度(例如假设两个级别之间的恒温/相对湿度)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59971760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档