计算T-N通量时遇到的问题!


根据计算公式,首先计算流函数,注意流函数计算时是相对于气候场的扰动,气候场根据研究需要定义,我选用多年平均对应的月。

注意波通量的一个假设就是地转近似,所以T-N通量适用于中高纬地区,在低纬就不成立。低纬度时f很小,在计算流函数时(streamf = zga/f),一般会将10°S-10°N的f值设为缺测,使得结果更合理。在TN通量严格的定义中,流函数是地转流函数,所以要用重力位势(位势高度g)来算。中高纬用风场来算的和用重力位势来算的差不多,但在低纬就会有明显差别。

1、服务器中逐月数据v缺少1964年的6、7、8、9四个月,下次使用该数据时注意选取的时间范围。现在处理将时间范围更换至1970-2020年。因此在计算中要特别注意数据的信息,查阅数据信息可以使用:

ncdump -c 数据文件
cdo sinfo 数据文件

同时注意ERA数据位势高度场单位为m2/s2,注意是乘了g的,是重力位势,但是ncep的数据中是重力位势高度,没有乘g,单位为m。而在计算扰动流函数的时候使用的是z*ga, ga=9.80665。在研究中要特别注意数据的格式。

2、计算中忽略了风场小于5m/s的值,但是在高层风场很小时就没有通量,这种情况怎么处理?将风速范围调整至大于0m/s西方带中。风速的具体设置根据具体研究。

; missing for 10S - 10N
do ilat = 0, nlat-1
    if (abs(lat(ilat) ).lt. 10. ) then
        f(ilat)= f@_FillValue
    end if
end do

3、计算的Fz通量的量级是否和xy方向的差1000倍?
Fz方向量级较小,在实际画垂直方向时需要放大100或1000倍。

**; 实际应用中位势扰动场可以用位势扰动的合成场或回归场等代替,以计算合成场或回归场的WAF。 **

4、使用的位势高度场数据是将原始的数据回归至EOF对应的PC1时间序列上,且计算流函数时没有使用UV风场,而是使用streamf = g*za/f,这两种计算有何不同?低纬度可能会有差异。

5、画图时低层和高层差值较大,是否只画高层? 一般选择画200 hPa以上平流层。如果是经纬度图,一般选择画200 hPa研究波列。

6、数据分辨率过高可能导致许多错误的微小的信号,因此可以将分辨率降低,调整至2.5*2.5。数据分辨率调整可以使用CDO。

7、与数据类型是否有关?double和float型。检验之后发现数据类型造成的差异较小。数据类型转换也可以使用cdo。

8、画垂直剖面可能会受到平均流的影响造成结果异常。

具体量的计算:

地球自转角速度:

omega=2.*pi/(60.*60.*24.)

; Coriolis parameter
; f0为科氏参数,公式为f0=2Ωsinφ

f =  2.*2.*pi/(60.*60.*24.)*sin(pi/180. * lat(:))

位温:

theta=ctvar*(1000./leveltmp)^0.286

大气标高设置为8000m,气压标高公式:

z=-sclhgt*log(level/1000)

dthetadz是位温对高度的差分,高度可以根据气压推算,也是近似值;gc为气体常数

dthetadz = center_finite_diff_n(theta,z,False,0,0)
dthetadz=center_finite_diff_n(ctvar*(1000./leveltmp)^0.286,-sclhgt*log(level/1000),False,0,0)

浮力频率:
; Brunt Vaisala frequency

NN = (gc*(leveltmp/1000.)^0.286)/sclhgt * dthetadz

python计算代码