- 积分
- 55950
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 MeteoInfo 于 2020-6-5 10:13 编辑
需要温度和风场U/V分量格点数据,计算中主要用到cdiff函数(结果已用GrADS验证一致)。
脚本程序:
- print 'Open data files...'f_air = addfile('D:/Temp/nc/air.2011.nc')
- f_uwnd = addfile('D:/Temp/nc/uwnd.2011.nc')
- f_vwnd = addfile('D:/Temp/nc/vwnd.2011.nc')
- print 'Read data array...'
- tidx = 173 # Jun 23, 2011
- t = f_air.gettime(tidx)
- lidx = 0 # 1000 hPa
- air = f_air['air'][tidx,lidx,:,:]
- uwnd = f_uwnd['uwnd'][tidx,lidx,:,:]
- vwnd = f_vwnd['vwnd'][tidx,lidx,:,:]
- lon = f_air['lon'][:]
- lat = f_air['lat'][:]
- lon, lat = meshgrid(lon, lat)
- # Calculate
- print 'Calculate...'
- dtx = cdiff(air, 1)
- dty = cdiff(air, 0)
- dx = cdiff(lon, 1) * pi / 180
- dy = cdiff(lat, 0) * pi / 180
- tadv = -1*((uwnd*dtx)/(cos(lat*pi/180)*dx)+vwnd*dty/dy)/6.37e6
- #Plot
- print 'Plot...'
- axesm()
- geoshow('country', edgecolor='black')
- layer = contourfm(tadv, cmap='grads_rainbow')
- title('Temperature advection (' + t.strftime('%Y-%m-%d') + ')')
- colorbar(layer)
- xlim(0, 360)
- ylim(-90, 90)
- xticks(arange(0, 361, 30))
- yticks(arange(-90, 91, 30))
|
|