Python气象数据处理中的数值微分和积分法——其一
2023-01-25 00:03 作者:Unlim-Succession | 我要投稿
0 引言
分享一些自己在完成小论文过程中总结的一些Python编程技巧,接下来几篇推文的内容主要是Python气象数据处理中的数值微分和积分法,写它的目的主要是数值微分和积分在计算气象物理量中被广泛使用(如散度、涡度、大气整层水汽通量等)。此外,本人在学习编程的过程中参考了许多大佬、前辈的推文,在这里对他们的分享表示感谢。
1 数值微分法
1.1 散度和涡度
水平散度和涡度的表达式分别为
两者在诊断中较常用。Metpy模块提供的函数metpy.calc.divergence和metpy.calc.vorticity能直接计算,如果输入数据的格式为xarray.DataArray,那么只需要输入物理量的x和y分量(如u/v风、uq/vq水汽通量等)两个参数。输出物理量的单位是输入物理量的单位除以meter。
1.2 势函数和流函数
简单来说,运动可以分解为无旋分量和无辐散分量。对于无旋运动,存在一个势函数,无旋运动在势函数的梯度方向上,与势函数等值线垂直。对于无辐散运动,存在一个流函数,无辐散运动在流函数的切线上(背风而立,高值在右)。
NCL中提供了直接计算两者的函数,而Metpy模块中没有提供。这里可使用windspharm模块(在Linux平台下可安装和运行,在Windows平台下似乎不能),相关代码为
u和v为覆盖全球的纬向风和经向风数据,格式为xarray;w为生成的初始化VectorWind实例;用sfvp函数获得流函数和势函数,格式也为xarray。