爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3813|回复: 6

[脚本编辑] 求助!含有地面变和高空变量的单站资料处理

[复制链接]

新浪微博达人勋

发表于 2014-11-13 20:32:04 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 hello-lyn 于 2014-11-13 21:33 编辑

想用grads计算单个站点的水汽含量,先用fortran把站点资料写成grd,再编gs计算水汽含量。但最后不能出图,感觉不对,又不知问题在哪里。。还请各位指教!!!fortran程序如下:
program stn2grd
parameter(lev=6,mo=12)
real lat,lon,alt,year,mon,tt(2),p(lev),h(mo,2,lev),t(mo,2,lev),d(mo,2,lev),u(mo,2,lev)
integer i,j,k
open(3,file='d:\1007\55299stn2010.txt')

do j=1,mo
do i=1,2    !读站点数据
  do k=1,lev
read(3,*) stid,lat,lon,alt,year,mon,tt(i),p(k),h(j,i,k),t(j,i,k),d(j,i,k),u(j,i,k)
enddo;enddo;enddo
close(3)


open(11,file='d:\1007\55299201000.grd',form='binary')
open(12,file='d:\1007\55299201012.grd',form='binary')

open(14,file='d:\1007\55299201000.txt')
do j=1,mo
write(11) h(j,1,1),t(j,1,1),d(j,1,1)
write(14,200) h(j,1,1),t(j,1,1),d(j,1,1) !地面变量
write(12) h(j,2,1),t(j,2,1),d(j,2,1)
do k=2,lev
write(11) t(j,1,k),d(j,1,k)
write(14,200) t(j,1,k),d(j,1,k) !高空变量
write(12) t(j,2,k),d(j,2,k)
enddo;enddo
close(11)
close(12)
close(14)
200 format(3f10.4)

end

ctl:
dset d:\1007\55299201000.grd
title station data
undef 99999
xdef 1 linear 91.0 1.0
ydef 1 linear 30.0 1.0
zdef 5 levels  500 400 300 250 200
tdef 12 linear jan2010 1mo
vars 6
ps 0 99 surface pressure
ts 0 99 surface temp
ds 0 99 surface dtemp
p 5 99 pressure
t 5 99 temp
d 5 99 dtemp
endvars


gs:
'reinit'
'open d:\1007\55299201000.ctl'
'open d:\1007\55299201012.ctl'
*计算露点温度、饱和水汽压、比湿、水汽含量
'td1=(t-d)*0.1'
'td2=(t.2-d.2)*0.1'
'e1=6.112*exp((17.67*td1)/(td1+243.5))'
'e2=6.112*exp((17.67*td2)/(td2+243.5))'
'q1=0.622*e1/(p.1-0.378*e1)'
'q2=0.622*e2/(p.2-0.378*e2)'
'W1=vint(ps,q1,200)'
'w2=vint(ps.2,q2,200)'
'w=(w1+w2'
'set z 1 6 '
'set t 1 12'
'd w'
;








55299stn2010.txt

10.4 KB, 下载次数: 0, 下载积分: 金钱 -5

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

新浪微博达人勋

发表于 2014-11-13 20:41:28 | 显示全部楼层
Fortran输出高空变量的时候不是只有两个?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-11-13 20:53:14 | 显示全部楼层
lqouc 发表于 2014-11-13 20:41
Fortran输出高空变量的时候不是只有两个?

那个不小心少写了一个,改成三个变量了还是一样不能出图
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-11-13 21:00:27 | 显示全部楼层
hello-lyn 发表于 2014-11-13 20:53
那个不小心少写了一个,改成三个变量了还是一样不能出图

以后提问尽量吧问题说清楚,报错信息要贴出来,很多人没心情给你猜的。
这么说吧,你grads是不是没学过?define会不会用?还有什么缺少的括号和放错位置的维度设置。先补补基础吧。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-11-13 21:29:19 | 显示全部楼层
lqouc 发表于 2014-11-13 21:00
以后提问尽量吧问题说清楚,报错信息要贴出来,很多人没心情给你猜的。
这么说吧,你grads是不是没学过 ...

谢谢~grads基本的都学过,但不是很熟练,有很多问题不太明白,所以来论坛里学习。
检查了一下,修改过后的gs:
'reinit'
'open d:\1007\55299201000.ctl'
'open d:\1007\55299201012.ctl'
*计算露点温度、饱和水汽压、比湿、水汽含量
'set lon 91'
'set lat 30'
'set z 1 5'
'set t 1 12'
'define td1=(t-d)*0.1'
'define td2=(t.2-d.2)*0.1'
'define e1=6.112*exp((17.67*td1)/(td1+243.5))'
'define e2=6.112*exp((17.67*td2)/(td2+243.5))'
'define q1=0.622*e1/(p.1-0.378*e1)'
'define q2=0.622*e2/(p.2-0.378*e2)'
'define W1=vint(ps,q1,200)'
'define w2=vint(ps.2,q2,200)'
'define w=(w1+w2)'
'set z 1'
'set t 1 12'
'd w'
;
grads运行完后可以出图,但数据肯定是错的,水汽含量不会有这么大的量级,而且还有负值。之前也得到过这个结果,所以一直很纳闷。
C:\Users\hp\Desktop\20141113.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-11-13 21:30:05 | 显示全部楼层
C:\Users\hp\Desktop\20141113.jpg
20141113.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-11-13 22:28:37 | 显示全部楼层
hello-lyn 发表于 2014-11-13 21:29
谢谢~grads基本的都学过,但不是很熟练,有很多问题不太明白,所以来论坛里学习。
检查了一下,修改过后 ...

呃,这个我就不清楚了,没有算过水汽的东西,可能需要你自己检查一下公式了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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