- 积分
- 55946
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 MeteoInfo 于 2024-7-3 15:33 编辑
增加了trapz函数用来对多维数据的某一维进行积分,该函数的文档见此网页:http://www.meteothink.org/docs/m ... numeric.minum.trapz。利用此函数可以对多维气象数据进行垂直方向的积分,比如计算整层水汽通量散度。
示例脚本如下。结果未经验证,欢迎讨论。
- print 'Open data files...'
- datadir = 'D:/Temp/nc'
- f_air = addfile(datadir + '/air.2011.nc')
- f_uwnd = addfile(datadir + '/uwnd.2011.nc')
- f_vwnd = addfile(datadir + '/vwnd.2011.nc')
- f_rhum = addfile(datadir + '/rhum.2011.nc')
- print 'Read data array...'
- v_rhum = f_rhum['rhum']
- levels = v_rhum.dimvalue(1)
- zn = len(levels)
- tidx = 173 # Jun 23, 2011
- t = f_air.gettime(tidx)
- air = f_air['air'][tidx,:zn,::-1,:]
- uwnd = f_uwnd['uwnd'][tidx,:zn,::-1,:]
- vwnd = f_vwnd['vwnd'][tidx,:zn,::-1,:]
- rhum = f_rhum['rhum'][tidx,:zn,::-1,:]
- # Calculate
- print 'Calculate...'
- zn,yn,xn = uwnd.shape
- prs = zeros((zn,yn,xn))
- prs = dim_array(prs, air.dims)
- zidx = 0
- for pr in levels:
- prs[zidx,:,:] = pr
- zidx += 1
- g = 9.8
- es = 6.112*exp(17.67*(air-273.16)/(air-29.65))
- qs = 0.62197*es/(prs-0.378*es)
- q = qs*rhum/100
- qu = q*uwnd/g
- qv = q*vwnd/g
- qhdivg = meteolib.divergence(qu, qv)
- vqhdivg = trapz(qhdivg, levels)
- #Plot
- print 'Plot...'
- axesm()
- geoshow('country', edgecolor='black')
- layer = contourfm(vqhdivg, 20)
- title('Vertical Integrated Water Vapor Flux Divergency (' + t.strftime('%Y-%m-%d') + ')')
- colorbar(layer)
- xlim(0, 360)
- ylim(-90, 90)
|
|