我不能够充分实际代码在Python中但我希望我可以点你在正确的方向上如果我计算分流和汇合。
可以开始做简化使用matplotlib第一个情节。一旦你有了,你需要实际的简化数据中描述这个链接https://matplotlib.org/api/_as_gen/matplotlib.pyplot.streamplot.html数据结构是作为LineCollection。
为每个LineCollection需要计算简化切向和法向量基于局部笛卡尔坐标系统的起源的想法集中在某处沿着流线。
一旦你有切向和法向量将需要使用这个方程即散度在自然坐标系
$ $ \微分算符。v_h = (e_n \压裂{\部分e_s}{\部分n} * v_h) + \压裂{\部分v_h}{\部分年代}$ $
使用的组合Frenet艾史蒂夫公式这可以显示等于
$ $ \压裂{| v_h |} {R_n} + \压裂{\部分v_h}{\部分年代}$ $
从你的角度你只要第一项方程计算分流和汇合。所以R_n美元的曲率半径法向量(之前你已经计算)。为了计算曲率半径可以使用这个最小二乘拟合的python代码(使用最小二乘的方法——获得椭圆然后计算半径)。如果半径是积极的我. . eR_n > 0美元然后你有分流和消极的融合。
更新
如果你正在寻找的NCL剪切拉伸变形在Python中你能做的是在Python中使用这个包pyspharm。数据必须是全球性的,那么您需要东方南到北方向的网格。一旦你有了,你可以用这个包来计算剪切、拉伸和变形参数使用pyspharm的getgrad ()方法来计算风的矢量梯度向量。如果你在风的组件通过向量(u和v) getgrad()你会得到纬向和经向风的梯度向量的分量。加减他们会得到你剪切和拉伸。
示例代码
从spharm进口Spharmt uspectral = Spharmt.grdtospec (u, ntruncation) vspectral = Spharmt.grdtospec (v, ntruncation) dudx dudy = Spharmt.getgrad (uspectral) dvdx dvdy = Spharmt.getgrad (vspectral) #剪切和拉伸剪切= dvdx + dudy = dudx - dvdy伸展