爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9305|回复: 18

[图形美化] 求助 等熵位涡时间循环

[复制链接]

新浪微博达人勋

发表于 2015-5-4 18:09:18 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 ★翼★ 于 2015-5-5 08:50 编辑

做等熵位涡分析,出现了一些问题,就高手指点一下
第一个问题:'reinit''open e:\toraji\fnl.ctl'
'set lon 0 360'
'set lat -90 90'
'set lev 1000 100'
"define t=T"
"define u=u"
"define v=v"
"define pp=lev"
"define coriol=2*7.29e-5*sin(lat*3.1415/180)"
"define dudy=cdiff(u,y)/(111177*cdiff(lat,y))"
"define dvdx=cdiff(v,x)/(111177*cdiff(lon,x)*cos(lat*3.1415/180))"
"define dt=t(z-1)*pow(1000/PP(z-1),0.286)-t(z+1)*pow(1000/PP(z+1),0.286)"
"define dp=100*(PP(z-1)-PP(z+1))"
"define dtdp=dt/dp"
"define part1="isen(dvdx,t,PP,315)
"define part2="isen(dudy,t,PP,315)
"define part3="isen(dtdp,t,PP,315)
"define pv315=-9.8*(coriol+part1-part2)*part3"
"set z 1"
*'set ccolor 1'
'set lon 80 150'
'set lat 10 60'
'd pv315*1000000'
'gxprint e:\toraji\2.png x1200 y800 white'
*'disable fwrite'

function isen(field,tgrid,pgrid,tlev)

2.png

我用这个程序正常出图,用了fwrite之后,就不能出了,ctl如下
dset e:\toraji\is315.dat
title ispv
undef -9.99e33
xdef 71 linear 80 1
ydef 51 linear 10 1
zdef 1 levels 1 1
tdef 1 linear 00z31JuL2001 6hr
vars 1
ipv  0  99 Geopotential vor
endvars

第二个问题,我做了一个时间循环,就是在315-K这个层上的多个时次的PV,但是出来的总是第一个时间的数据,好像while t不起作用,gs如下
*等熵位涡分析
'reinit'
'open e:\toraji\fnl.ctl'
'set lon 0 360'
'set lat -90 90'
*'set lev 1000 100'
*'set t 1 12'
*'set fwrite e:\toraji\is315.dat'
*'set gxout fwrite'
p=1
while(p<13)
'set t 'p''
zz=2
while(zz<3)
*'set z 2 22'
'set lev 1000 100'
"define t=T"
"define u=u"
"define v=v"
"define pp=lev"
"define coriol=2*7.29e-5*sin(lat*3.1415/180)"
"define dudy=cdiff(u,y)/(111177*cdiff(lat,y))"
"define dvdx=cdiff(v,x)/(111177*cdiff(lon,x)*cos(lat*3.1415/180))"
"define dt=t(z-1)*pow(1000/PP(z-1),0.286)-t(z+1)*pow(1000/PP(z+1),0.286)"
"define dp=100*(PP(z-1)-PP(z+1))"
"define dtdp=dt/dp"
"define part1="isen(dvdx,t,PP,315)
"define part2="isen(dudy,t,PP,315)
"define part3="isen(dtdp,t,PP,315)
"define pv330=-9.8*(coriol+part1-part2)*part3"
zz=zz+1
endwhile
"set z 1"
'set lon 80 140'
'set lat 20 55'
'd pv330*1000000'
p=p+1
endwhile
*'gxprint e:\toraji\2.png x1200 y800 white'
*'gxprint e:\toraji\ispv.eps white'
*'disable fwrite'
function isen(field,tgrid,pgrid,tlev)


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

新浪微博达人勋

发表于 2015-5-5 07:25:17 | 显示全部楼层
"set z 1"
'set lon 80 140'
'set lat 20 55'
'd pv330*1000000'

你这是怎么个意思,一个时次、一个高度出一张图?直接放在最内层循环出图啊。还有你出图的命令整个在循环外面,那可不就是只出一张图么,也是需要放到最内层循环里面的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-5-5 08:49:08 | 显示全部楼层
river 发表于 2015-5-5 07:25
"set z 1"
'set lon 80 140'
'set lat 20 55'

我想做的是一个高度(315-K上的pv),多个时次的,写到一个dat里面。还有,你说的放到内循环,我也试了,出来的都是第一个时次的,如下:
"set z 1"
'set lon 80 140'
'set lat 20 55'
'd pv330*1000000'
zz=zz+1
endwhile
p=p+1
endwhile
里面的'set z 1‘我只是定义到一个维数上了,不然提示错误
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-5-5 08:53:00 | 显示全部楼层
★翼★ 发表于 2015-5-5 08:49
我想做的是一个高度(315-K上的pv),多个时次的,写到一个dat里面。还有,你说的放到内循环,我也试了, ...

那你的高度不需要循环啊,直接设置Z=2就好了。你说的就出一个时次是什么意思,只出一张图,还是说你出来的dat文件只有一个时次
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-5-6 17:55:06 | 显示全部楼层
river 发表于 2015-5-5 08:53
那你的高度不需要循环啊,直接设置Z=2就好了。你说的就出一个时次是什么意思,只出一张图,还是说你出来 ...

目的:做一个时间循环(21t),把315k上的位涡写到一个dat里面。做不做高度循环都得到的21个时次,但是画图的时候,不管设定那个时间,出来的图都是第一个时刻的,没有变化。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-5-7 19:53:36 | 显示全部楼层
★翼★ 发表于 2015-5-6 17:55
目的:做一个时间循环(21t),把315k上的位涡写到一个dat里面。做不做高度循环都得到的21个时次,但是画 ...

'reinit'
'open e:\toraji\fnl.ctl'
'set lon 0 360'
'set lat -90 90'
*'set lev 1000 100'
*'set t 1 12'
*'set fwrite e:\toraji\is315.dat'
*'set gxout fwrite'
p=1
while(p<13)
'set t 'p''
zz=2
while(zz<3)
*'set z 2 22'
'set lev 1000 100'
"define t=T"
"define u=u"
"define v=v"
"define pp=lev"
"define coriol=2*7.29e-5*sin(lat*3.1415/180)"
"define dudy=cdiff(u,y)/(111177*cdiff(lat,y))"
"define dvdx=cdiff(v,x)/(111177*cdiff(lon,x)*cos(lat*3.1415/180))"
"define dt=t(z-1)*pow(1000/PP(z-1),0.286)-t(z+1)*pow(1000/PP(z+1),0.286)"
"define dp=100*(PP(z-1)-PP(z+1))"
"define dtdp=dt/dp"
"define part1="isen(dvdx,t,PP,315)
"define part2="isen(dudy,t,PP,315)
"define part3="isen(dtdp,t,PP,315)
"define pv330=-9.8*(coriol+part1-part2)*part3"
'set lon 80 140'
'set lat 20 55'
'd pv330*1000000'
zz=zz+1
endwhile
p=p+1
endwhile
function isen(field,tgrid,pgrid,tlev)
;
试一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-5-8 13:18:40 | 显示全部楼层
river 发表于 2015-5-7 19:53
'reinit'
'open e:\toraji\fnl.ctl'
'set lon 0 360'

出现问题:
QQ图片20150508131811.png


如果加上’set z 1'就会出现21个时刻同样的图
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-5-8 15:15:34 | 显示全部楼层

'reinit'
'open e:\toraji\fnl.ctl'
'set fwrite e:\toraji\is315.dat'
'set gxout fwrite'
p=1
while(p<13)
'set t 'p''
'set z 2'
"define t=T"
"define u=u"
"define v=v"
"define pp=lev"
"define coriol=2*7.29e-5*sin(lat*3.1415/180)"
"define dudy=cdiff(u,y)/(111177*cdiff(lat,y))"
"define dvdx=cdiff(v,x)/(111177*cdiff(lon,x)*cos(lat*3.1415/180))"
"define dt=t(z-1)*pow(1000/PP(z-1),0.286)-t(z+1)*pow(1000/PP(z+1),0.286)"
"define dp=100*(PP(z-1)-PP(z+1))"
"define dtdp=dt/dp"
"define part1="isen(dvdx,t,PP,315)
"define part2="isen(dudy,t,PP,315)
"define part3="isen(dtdp,t,PP,315)
"define pv330=-9.8*(coriol+part1-part2)*part3"
'set lon 80 140'
'set lat 20 55'
'd pv330*1000000'
p=p+1
endwhile
function isen(field,tgrid,pgrid,tlev)
;
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-5-8 15:52:29 | 显示全部楼层
river 发表于 2015-5-8 15:15
'reinit'
'open e:\toraji\fnl.ctl'
'set fwrite e:\toraji\is315.dat'

QQ图片20150508155102.png
因为是从p坐标系差值到等熵坐标系,需要不同P层上的值,而先头'set z 2'就限定了只是利用了一层p上的值,可能造成了这这种结果。如果把'set z '放在后面吧,又出现同样的值
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-12-30 14:47:18 | 显示全部楼层
求等熵位涡的时候是要把t/u/v都放到同一个dat里面去吗?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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