爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 12626|回复: 38

[分享资料] 求1948-2011年的每月平均水汽通量,每月平均水汽通量图一样,不知道是哪儿错了?

[复制链接]

新浪微博达人勋

发表于 2012-8-14 10:39:55 | 显示全部楼层 |阅读模式

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

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

x
我在求1948-2011年共64年的月平均水汽通量时,不知道脚本是哪儿不正确,最后得出的水汽通量图全都一样,也就是说1月,2月,3月..........的图都一模一样。

不知道是不是ave函数用错了,还是别的地方错了。  我是个新手,刚刚接触grads,请各位大神帮我看看啊,不胜感激!

我用的资料是ncep/ncar的在分析月平均资料,数据是从1948年开始的。

下面附上脚本文件和得出的图形:
'reinit'
'set grid off'
'set grads off'
'set poli on'
'set parea 1 10 1 8'
'sdfopen f:\data\monthly\shum.mon.mean.nc'  
'sdfopen f:\data\monthly\uwnd.mon.mean.nc'
'sdfopen f:\data\monthly\vwnd.mon.mean.nc'
'sdfopen f:\data\monthly\pres.mon.mean.nc'
'set lat 4 53'
'set xlint 10'
'set lon 73 135'
'set ylint 10'
'set z 1 8'
'set ccols 9 14 4 11 5 13 3 10 7 12 8 2 6'
'set mpdset cnworld mres'
'set map 1 1 1'
'draw map'
'set ylopts 1 4 0.12'
'set xlopts 1 4 0.12'
'set cthick 4'
'define uq=shum.1*uwnd.2'
'define vq=shum.1*vwnd.3'
'define uqs=vint(pres.4(z=1),uq,300)/1000'
'define vqs=vint(pres.4(z=1),vq,300)/1000'
'define sq=mag(uqs,vqs)'
'define w1=ave(sq,t=1,t=757,12)'
'define w2=ave(uqs,t=1,t=757,12)'
'define w3=ave(vqs,t=1,t=757,12)'
'set z 1'
'set gxout shaded'
'd w1'
'set gxout contour'
'set cint 40'
'd w1'
'set gxout vector'
'd w2;w3'
'run cbarn'
'draw title 1948-2011 Jan average vopor flux china'
'printim e:\1.tif x1000 y800 white'



1.jpg



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

新浪微博达人勋

发表于 2012-8-14 11:09:46 | 显示全部楼层
你定义变量的时候并没有定义相应的时间维,也就是默认,默认的话,t=1,所以只有一个量。再者,求平均部分,求第一个月的64年平均没问题,但是12个月都求就变不起来了。
比如:w1应该这样定义:
set t 1 12
define w1=ave(sq,t+0,t=757,12)
这样,随着t从1变化到12,每个月的64年平均就都求出来了。

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

新浪微博达人勋

 楼主| 发表于 2012-8-14 11:16:38 | 显示全部楼层

哦,原来是这样啊,是说怎么2月以后的每个月都和一月的一样呢。我再试试看!

谢谢木头斑竹啊!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-14 16:04:23 | 显示全部楼层
做个霸气的木头 发表于 2012-8-14 11:09
你定义变量的时候并没有定义相应的时间维,也就是默认,默认的话,t=1,所以只有一个量。再者,求平均部分, ...

还是不行啊,我按照你的方法试了一下。加上‘set t 1 12’ ,最后得出的图有问题啊 。

1.jpg

你看哈那个图的右下角,时间显示的是“1948:12:1:0 ”, 这明显有问题啊 ??


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

新浪微博达人勋

 楼主| 发表于 2012-8-14 16:07:54 | 显示全部楼层
做个霸气的木头 发表于 2012-8-14 11:09
你定义变量的时候并没有定义相应的时间维,也就是默认,默认的话,t=1,所以只有一个量。再者,求平均部分, ...

也就是下面这个脚本里面还是有命令有问题啊,不知道是哪儿有问题???

'reinit'
'set grid off'
'set grads off'
'set poli on'
'set parea 1 10 1 8'
'sdfopen f:\data\monthly\shum.mon.mean.nc'  
'sdfopen f:\data\monthly\uwnd.mon.mean.nc'
'sdfopen f:\data\monthly\vwnd.mon.mean.nc'
'sdfopen f:\data\monthly\pres.mon.mean.nc'
'set lat 4 53'
'set xlint 10'
'set lon 73 135'
'set ylint 10'
'set t 1 12'
'set z 1 8'
'set ccols 9 14 4 11 5 13 3 10 7 12 8 2 6'
'set mpdset cnworld mres'
'set map 1 1 1'
'draw map'
'set ylopts 1 4 0.12'
'set xlopts 1 4 0.12'
'set cthick 4'
'define uq=shum.1*uwnd.2'
'define vq=shum.1*vwnd.3'
'define uqs=vint(pres.4(z=1),uq,300)/1000'
'define vqs=vint(pres.4(z=1),vq,300)/1000'
'define sq=mag(uqs,vqs)'
'define w1=ave(sq,t+0,t=757,12)'
'define w2=ave(uqs,t+0,t=757,12)'
'define w3=ave(vqs,t+0,t=757,12)'

'set z 1'
'set gxout shaded'
'd w1'
'set gxout contour'
'set cint 40'
'd w1'
'set gxout vector'
'd w2;w3'
'run cbarn'
'draw title 1948-2011 Jan average vopor flux china'
'printim e:\1.tif x1000 y800 white'
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-14 16:49:21 | 显示全部楼层
vint这个函数表示的是表达式从积分下限到积分上限的垂直积分。不知道你这儿设置set z 1 8是什么意思,还有时间如果也写成set t 1 12,这样的话,你看下你的变量是几维变化的,想不出错都难。
既然是想得到12个月1948~2011年每个月的平均水汽能量图,时间方面最好写成循环模式,每循环一次,得一张图。
最后一点小建议:软件运用不熟练之前,像set parea   xlint cclos xlopts之类的命令还是尽量不要用!
有什么问题经常跟身边的朋友讨论一下,说不定会有意想不到的收获。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-14 16:52:22 | 显示全部楼层
本帖最后由 做个霸气的木头 于 2012-8-14 17:15 编辑
hustlh 发表于 2012-8-14 16:07
也就是下面这个脚本里面还是有命令有问题啊,不知道是哪儿有问题???

'reinit'

     你没有理解我说的“相应”是什么意思,你里面定义了8个变量,其实前5个变量的时间维应该是757(因为这几个量都是每个时间点都要求的,后面求平均的时候要用的),而w1、w2、w3三个变量时间维是12,你不能统一定义成1 12。
      再有一点我要跟你说下:grads里你每每定义一个变量不管他的时间多长,会默认成起始时间是该文件的起始时间,所以下面显示的时间并不是你想要的,但数据是对的。,这个我们一般不要显示的,你关掉就好了。
      你改完了上面的,把ctl里的时间给我看下(q ctlinfo),是不是从1月份开始,不是的话循环要相应改的。      冰点关于层次的提示是对的最后只有这几个变量几分完其实就一层了,这行命令可以去掉,或者set z 1 1.
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-15 15:01:40 | 显示全部楼层
冰点 发表于 2012-8-14 16:49
vint这个函数表示的是表达式从积分下限到积分上限的垂直积分。不知道你这儿设置set z 1 8是什么意思,还有时 ...

好的,真是谢谢了,我在思考下,还是有点不懂啊!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-15 15:08:36 | 显示全部楼层
冰点 发表于 2012-8-14 16:49
vint这个函数表示的是表达式从积分下限到积分上限的垂直积分。不知道你这儿设置set z 1 8是什么意思,还有时 ...

那个set z 1 8  ,...,set z 1   是算整层积分,我看论坛里面有帖子说,求整层积分不用while循环,所以我就这样设置了。那个我想问问,求整层积分的话,那个z应该怎样设置啊???    我也看了不少帖子,人都晕了!   
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-15 15:11:17 | 显示全部楼层
做个霸气的木头 发表于 2012-8-14 16:52
你没有理解我说的“相应”是什么意思,你里面定义了8个变量,其实前5个变量的时间维应该是757(因为 ...

也就是说求时间平均的话,还是得用while循环,是吧???  每循环一次,改一次循环时间,就每得一张图???    是这样的嘛???
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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