如何计算垂直高度剖面

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

我拥有的是变量 T (在一层内)和 relhum (在一层内)和 pressure (在层界面处) ,以及图层中点)。

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

当我查看文档字符串中给出的公式时,

$$ 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 $。但是,通常将温度定义为满水平,即我的温度比压力小。

例如,为了计算底层的厚度,我希望给出表面压力,层顶部压力以及层内温度(和湿度)。但是当我尝试使用这种功能时,我得到了

ValueError: operands could not be broadcast together with shapes (361,1440,79) (361,78) 

请帮助我了解如何正确使用此功能。

d459462473 回答:如何计算垂直高度剖面

但是,在我看来,pressuretemperaturerelative_humidity自变量都必须具有相同的维数。

[...]

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

实际上,与您的预期相反,pressuretemperaturerelative_humidity变量都需要在同一级别上定义,因为根据MetPy的文档,{{3 }}。请注意,在MetPy的术语中,“层”位于任何一组垂直级别之上,而不仅仅是两个级别之间。

由于通过梯形法则进行积分,因此在计算本身中也可以看到对在公共级别上定义的数据的需求。例如,在具有两个数据级别的图层的最小情况下,MetPy使用的公式

通过梯形法则进行积分,简化为


实际上,如果您确实有“偏移”或“交错”级别的数据,其中temperaturerelative_humidity的垂直坐标与pressure的垂直坐标不同,则需要以便将数据插值到通用级别以使用thickness_hydrostatic_from_relative_humidity(或MetPy的其他任何配置文件计算)。一个pressure形状为数组(361,1440,79)和temperature形状为数组(361,78)的简单的交错方法可能看起来像

pressure_destaggered = (pressure[...,:-1] + pressure[...,1:]) / 2

这种方法有两个警告:

  • thickness_hydrostatic_from_relative_humidity仅设计用于处理(1D)大气数据剖面,而不是3D网格,因此请谨慎使用结果(指定可能使用可选的bottomdepth参数失败,默认的积分轴可能正确也可能不正确
  • 如果您只有两个压力水平/一个温度水平,则无法进行这种交错操作,因为MetPy至少需要两个压力水平才能定义一个层。在这种情况下,您将需要以某种方式(例如,假设两个压力水平之间的温度/相对湿度恒定)来近似估算两个压力水平的温度/相对湿度。
本文链接:https://www.f2er.com/2690042.html

大家都在问