爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8129|回复: 9

MeteoInfoLab脚本示例:计算假相当位温

[复制链接]

新浪微博达人勋

发表于 2016-2-5 22:23:14 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
计算假相当位温的例子,算法参考了此贴:http://bbs.06climate.com/forum.php?mod=viewthread&tid=22546

  1. f_air = addfile('D:/Temp/nc/air.2011.nc')
  2. f_rhum = addfile('D:/Temp/nc/rhum.2011.nc')
  3. levels = f_air['level'][:]
  4. z = 0
  5. t0 = f_air['air'][0,z,:,:]
  6. rh = f_rhum['rhum'][0,z,:,:]
  7. prs = levels[z]
  8. es = 6.1078*exp(17.2693882*(t0-273.16)/(t0-35.86))
  9. qq = rh*(0.62197*es/(prs-0.378*es))/100.
  10. e = prs*qq/(0.62197+qq)+1e-10
  11. tlcl = 55.0+2840.0/(3.5*log(t0)-log(e)-4.805)
  12. theta = t0*pow((1000/prs),(0.2854*(1.0-0.28*qq)))
  13. eqt = theta*exp(((3376./tlcl)-2.54)*qq*(1.0+0.81*qq))
  14. thse = eqt-273.15
  15. #Plot
  16. axesm()
  17. lworld = shaperead('D:/Temp/Map/country1.shp')
  18. geoshow(lworld, edgecolor='k')
  19. layer = contourm(eqt, 12)
  20. clabel(layer)
  21. colorbar(layer)
  22. title('pseudo-equivalent potential temperature')


meteo_thse.png

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-2-24 14:49:36 | 显示全部楼层
王老师威武
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-2-25 10:01:44 | 显示全部楼层
{:eb302:}{:eb302:}{:eb302:}{:eb302:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2018-3-9 15:16:05 | 显示全部楼层
本帖最后由 有事秦天 于 2018-3-9 15:58 编辑

王老师您好,我想绘制价相当位温剖面图,怎样才能每层计算的时候都用到当前层次高度,在叠加,这个问题该怎么解决?
f = addfile('D:/M07/a201507.nc')
levels = f['level'][:]
time = 106
level = '1000:200'
lat = '36:44'
lon = '112:118'
t0 = f['t'][time,level,lat,lon][::-1,:,:]
rh = f['r'][time,level,lat,lon][::-1,:,:]
prs = levels[level]
es = 6.1078*exp(17.2693882*(t0-273.16)/(t0-35.86))
qq = rh*(0.62197*es/(prs-0.378*es))/100.
e = prs*qq/(0.62197+qq)+1e-10
tlcl = 55.0+2840.0/(3.5*log(t0)-log(e)-4.805)
theta = t0*pow((1000/prs),(0.2854*(1.0-0.28*qq)))
eqt = theta*exp(((3376./tlcl)-2.54)*qq*(1.0+0.81*qq))
thse = eqt-273.15

wd1 = eqt[:,'40',:]
lev1 = wd1.dimvalue(0)
lev1 = lev1[::-1]
lev2 = meteo.p2h(lev1)
levels = []
for j in range(0, len(lev1)):
    levels.append('%i' % lev1[j])
wd1.setdimvalue(0, lev2)

axesm()
lworld = shaperead('D:/MeteoInfo/map/bou2_4p.shp')
geoshow(lworld, edgecolor='k')
layer = contourm(eqt)
clabel(layer)
#colorbar(layer)
title('pseudo-equivalent potential temperature')
xlim(115, 119)
ylim(36, 44)





密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-9-15 19:18:25 | 显示全部楼层
不知道为什么,一模一样的数据和资料,我计算700hPa上的假相当位温,MeteoInfoLab计算得到287.84,grads计算得到318.65搞不懂什么原因啊
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-9-15 19:43:51 | 显示全部楼层
已经搞清楚了,气压不能是整数,后面要加个点变成小数折腾了好久
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-12-25 21:00:45 | 显示全部楼层
瑛雩 发表于 2019-9-15 19:43
已经搞清楚了,气压不能是整数,后面要加个点变成小数折腾了好久

结果是一样的吗?我算出的850hPa大概是312K左右,可是同一时刻的初始场应该是350K左右,不懂错在哪了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-12-26 14:51:58 | 显示全部楼层
王老师您好,我用您的算法计算prs=850.0,T=293.16(20℃),rh=85%带入计算,eqt才308K。好像不太准确呀,至少也要330K左右,不知道是哪里错了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-5-8 14:34:06 | 显示全部楼层
感谢楼主分享
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-12-8 16:07:58 | 显示全部楼层
瑛雩 发表于 2019-9-15 19:18
不知道为什么,一模一样的数据和资料,我计算700hPa上的假相当位温,MeteoInfoLab计算得到287.84,grads计 ...

我也遇到同样的问题,你找到原因了吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表