平流的标量,如温度(T),水平风,定义如下:
$ - \ textbf{你}\ cdot \微分算符元新台币
在哪里$ \ textbf{你}$水平风矢量,$ \ textbf{你}= (U, v),被你美元和五美元它的纬向和经向组件,分别是(源)。
计算网格数据,方便使用有限的差异(或类似的数值方法),指出在这里。
使用这种方法,以下行Python编写的计算温度平流的(TAdv):
dy = 111000 # [m] lonres =朗[1]朗[0]#常数tadv = np.zeros (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