- 积分
- 95
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-3-9
- 最后登录
- 1970-1-1
|
发表于 2012-3-14 22:18:18
|
显示全部楼层
在计算多层的uq,vq时,不需要使用z循环。
set lon 115 145
set lat 35 60
set z 1 8
define es=...
define qs=...
define qv=...
define uq=..
define vq=...
按照你的外循环,出来的值肯定只有最后一个值啊。 就像 fortran的算法一样啊,因为你的uq,vq没有被定义成数组。 如果需要的话, 我建议可以把算出来的值写到另外一个文件里进行检查:
下面贴一个我以前写的算假相当位温的gs文件,把数据输到一个二进制文件里:
'reinit'
'open f:\data\wgrib.big\7-1-00.ctl'
'set gxout fwrite'
'set fwrite f:\data\wgrib.big\gs2005\thes\thes07.dat'
i=90
while(i<=116)
'set t ' i
zz=1
while(zz<=26)
'set lat 0 90'
'set lon 50 180'
'set z 'zz
'define tt=TMPprs'
'define es=6.11*exp(17.26*(tt-273.16)/(tt-35.86))'
'define qs=0.622*es/(lev-0.378*es)'
'define qq=RHprs/100.*qs'
'define prs=lev*100'
'define el=log((qq/0.62197)*(prs/100.)/(1.+(qq/0.62197)))'
'define td=273.15+(243.5*el-440.8)/(19.48-el)'
'define tc=tt-1.21*(tt-td)'
'define e=qq/(qq+0.622)*prs'
'define cpm=1004*(1+0.86*qq)'
'define rm=287.04*(1+0.608*qq)'
'define pc=prs*pow(tc/tt,cpm/rm)'
'define st=tc*pow(100000/(pc-e),287.04/1004)'
'define lvc=2500.8*1000-2274.4*(tt-273.15)'
'define qse=st*exp(qq*lvc/1004/tc)'
'undefine el'
'undefine prs'
'undefine td'
'undefine tc'
'undefine es'
'undefine qs'
'undefine qq'
'undefine e'
'undefine cpm'
'undefine rm'
'undefine pc'
'undefine st'
'undefine lvc'
'd qse'
zz=zz+1
endwhile
希望有所帮助!
|
评分
-
查看全部评分
|