1

您想知道在 Metpy 中是如何进行散度计算的吗?我们知道,在 Grads 中,散度的计算是通过有限差分法执行的,如下所示:

pi = 3,14159265359 

dtr = pi / 180 

a = 6,371e6 

dx = a * cos (dtr * lat) * dtr * cdiff (lon, x) 

dy = a * dtr * cdiff (lat, y) 

div = cdiff (u, x) / dx + cdiff (v, y) / dy-v * tan (dtr * lat) / a

但是,在 Metpy 中,我没有找到任何详细的(就像在 Grads 中一样)如何执行这种散度计算。

4

2 回答 2

2

MetPy 的散度计算 ( metpy.calc.divergence) 内部使用 3 点差分first_derivative函数以笛卡尔形式计算散度为

正如 MetPy 文档中所引用的,这会根据 Bowen 和 Smith (2005) 公式明确处理不规则间距。但是,GrADS 包含的最终坐标校正项v * tan (dtr * lat) / a不包含在当前的 MetPy 计算中(这是GitHub 上的一个未解决问题的一部分)。

于 2019-07-21T21:13:37.520 回答
1

MetPy 中的散度是通过使用 MetPy 中的函数计算的,该函数是基于中心的,除了边缘点,将和first_derivative相加。如果您通过或带有坐标/投影信息,它将计算跨不同网格的散度。否则,您需要提供网格间距。见https://unidata.github.io/MetPy/latest/_modules/metpy/calc/kinematics.html#divergencehttps://unidata.github.io/MetPy/latest/api/generated/metpy.calc.first_derivative .html#metpy.calc.first_derivative有关散度函数和坐标数组处理的更多信息。dudxdvdymetpy.calc.divergencemetpy.calc.first_derivativeXarray.Dataset

于 2019-07-19T14:01:01.810 回答