标量的平流,例如温度(T),按水平风计算,其定义如下:
$ - \ textbf{你}\ cdot \微分算符元新台币
在哪里$ \ textbf{你}$是水平风矢量,$ \ textbf{你}= (U, v),被你美元和五美元其纬向和经向分量分别为(源).
如前所述,用网格化数据计算它,使用有限差分(或类似的数值方法)是很方便的在这里。
使用此方法,用Python编写的以下行计算温度平流(TAdv):
dy=111000 # [m] lonres=lon[1]-lon[0] # constant tadv=np.zero (np.shape(T));tadv.fill (np.nan) t范围(np.shape (t)[0]):在np.arange x (1, len(朗)1):在np.arange y (1, len (lat) 1): dx = abs (111000 * np.cos (lat [y] * (2 * np.pi / 360)) * lonres) tadv (t、y、x) = - (u (t、y、x) * (t (t、y、x + 1) - t (t、y、x - 1)) / (2 * dx) + v \ [t、y、x] * (t (t, y + 1, x) - t [t y-1 x]) / (2 * (dy))
我希望通过在每个网格单元中按温度缩放风成分得到类似的结果,如下所示:
ut = np.zeros (np.shape (T) vt = np.zeros (np.shape (T) ut = np.zeros (np.shape (T)的T范围(np.shape (T) [0]): x的范围(len(朗)):y的范围(len (lat)): ut (T、y、x) = u [T、y、x] * abs (T (T、y、x)) vt (T、y、x) = v (T、y、x) * abs (T (T、y、x)) ut [T、y、x] = ((ut [T、y、x] * * 2 + v (T、y、x) * * 2) * * 0.5) * np.sign (T (T、y、x))
缩放的风矢量(UT)的大小将类似于这个“T的运输量”。它乘以T(-1或1)的符号,因为T是异常(有T<0),为了保持它的符号。
然而,结果却完全不同。我错过了什么?这种假设(两个结果应该看起来相当相似)是错误的吗?还是编码问题?
在下面的图中,我展示了原始的T, u和v场(左),以及上面两个计算的结果:Tadv与u和v(中),以及缩放向量的大小UT,以及缩放向量本身UT和vT(右)。TAdv乘以24*3600,单位为K/天。
这里是Dropbox文件夹的链接,在那里可以下载完整的脚本和示例数据:https://www.dropbox.com/sh/kcrb08h72jjj3rn/AAAIAUgKVrRrICAQtXhOHS2ta?dl=0