- 积分
- 55952
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 MeteoInfo 于 2017-3-7 22:57 编辑
参考此贴(http://bbs.06climate.com/forum.php?mod=viewthread&tid=37089)尝试了用MeteoInfoLab编写计算水平螺旋度的脚本,由于我不是学气象出身,只是照猫画虎,希望有高手验证一下是否正确。
对平均风速的计算根据river的建议试了两种方法,1、先计算U/V分量的平均值,再利用U/V分量平均值计算平均风速;2、先计算全风速(所有U/V数组元素都计算风速),再平均。结果对于Pattern没有影响,但对具体的值有影响。
脚本程序:
- print 'Open data files...'
- f_uwnd = addfile('D:/Temp/nc/uwnd.2011.nc')
- f_vwnd = addfile('D:/Temp/nc/vwnd.2011.nc')
- print 'Calculate average wind field from 850 to 600 hpa...'
- tidx = 173 # Jun 23, 2011
- t = f_uwnd.gettime(tidx)
- level = '850:600' # 850 - 600 hPa
- lat = '15:55'
- lon = '70:135'
- uvar = f_uwnd['uwnd']
- vvar = f_vwnd['vwnd']
- uwnd = uvar[tidx,level,lat,lon]
- vwnd = vvar[tidx,level,lat,lon]
- uc = uwnd.ave()
- vc = vwnd.ave()sp = magnitude(uwnd, vwnd)
- speed = sp.ave()
- #speed = magnitude(uc, vc)
- direc = atan2(vc, uc)
- cdirec = direc-40./180.*3.14159
- if cdirec < -3.14159:
- cdirec=cdirec+3.14159*2
- cuc = speed*cos(cdirec)
- cvc = speed*sin(cdirec)
- print 'Calculate horizontal helicity...'
- Hrs = 0.
- zHrs = 0.
- hh = 6
- while hh <= 10:
- zHrs = (uvar[tidx,hh+1,lat,lon]-cuc)*(vvar[tidx,hh,lat,lon]-cvc)- \
- (uvar[tidx,hh,lat,lon]-cuc)*(vvar[tidx,hh+1,lat,lon]-cvc)
- Hrs = Hrs+zHrs
- hh += 1
- Hrs = Hrs[::-1,:]
- print 'Plot...'
- axesm()
- mlayer = shaperead('D:/Temp/map/country1.shp')
- geoshow(mlayer, edgecolor='black')
- layer = contourfm(Hrs, 20)
- title('Horizontal helicity (' + t.strftime('%Y-%m-%d') + ')')
- colorbar(layer)
脚本运行结果图:
第一种计算平均风速的结果:
第二种计算平均风速的结果:
|
-
|