爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 36658|回复: 82

grads自定义gs脚本函数的应用心得:常用物理量的脚本函数

  [复制链接]
发表于 2013-11-21 22:38:38 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 平流层的萝卜 于 2013-11-24 19:57 编辑

      由于总是要用到那么几个变量(水汽通量及其散度、假相当位温、位涡等),自然想到如果把它们的计算公式写成一个脚本gs,下次再计算它们的时候直接调用该gs,而不必用到一次重新写一次,岂不方便很多!好比想算散度,直接define sandu=hdivg(u,v),sandu就这么算出来了。研究了很长时间function的用法,终于有点小进展,事实证明,用自定义的gs脚本函数,也可以像define sandu=hdivg(u,v)一样方便地计算物理量。
     举个例子,如果想算假相当位温,可以直接“thetase 温度 湿度 气压”,就可以算出来theatase。方法就是用到了自定义gs脚本函数。具体做法如下:先上图:
QQ截图20131121215723.png

测试的gs脚本如下:
'open H:\paper\fnl.ctl'
'enable print H:\paper\cross\thetase_test.gmf'

    'set grads off'
    'set mpdset cnworld'
    'set t 5'
    'set lon 106 126'
    'set lat 24 38'
    'set lev 850'
     'thetase tmpprs rhprs lev'
     'd thetase'

    'drawtime'
    'print'
    'disable print'
    ;
    thetase即假相当位温,是温度、湿度和气压的函数,建立一种函数关系:thetase  输入tmpprs温度,rhprs湿度和lev气压,就可以算出来thetase. 当然,不同的情况下,温度,湿度和气压的变量名不同,需要简单修改一下。
thetase是自己写的一个gs脚本函数文件的文件名,theatase.gs的内容如下:
function thetase(args)
t=subwrd(args,1)
rh=subwrd(args,2)
p=subwrd(args,3)


'define es=(6.112*exp(17.67*('t'-273.15)/('t'-29.65)))'
'define q='rh'*(0.62197*es/('p'-0.378*es))/100' 0.378*应该是要加上去的,计算比湿所用,第一次给的gs此处未加,现已修改。
'define e='p'*q/(0.62197+q)+1e-10'
'define tlcl=55.0+2840.0/(3.5*log('t')-log(e)-4.805)'
'define theta='t'*pow((1000/'p'),(0.2854*(1.0-0.28*q)))'
'define thetase=theta*exp(((3376./tlcl)-2.54)*q*(1.0+0.81*q))'
return
   把上边的这些保存在thetase.gs里,放在grads的script文件夹下边,下次调用的时候就可以直接用了!
  函数用法不用多说了,东西不多,很简单。
  输入几个参量,就能得到想要的结果,这正是函数得以存在的原因。
  所有的物理量计算应该都可以这样弄,这样可以搞一个物理量gs脚本函数的大集合!方便所有气象人!!
  待续,欢迎交流指正。 下边两个附件,是我重新用其他数据做的,可以正常出图的。但是脚本到底是否通用,还请各位用自己的数据一试,做的不对的地方请指正!!!多交流!!
test1.rar (44.48 KB, 下载次数: 54)

评分

参与人数 6金钱 +70 贡献 +13 收起 理由
njwp + 2 + 1
mofangbao + 12 + 3
lqouc + 14 + 6 很给力!
善人/jw + 20 + 2
斥鷃 + 12 + 1 赞一个!
kongfeng0824 + 10

查看全部评分

密码修改失败请联系微信:mofangbao
发表于 2013-11-21 22:41:43 | 显示全部楼层
谢谢分享  
密码修改失败请联系微信:mofangbao
发表于 2013-11-21 22:58:25 | 显示全部楼层
学grads这么久了,都没好好用过函数的说~楼主要多分享经验哈~
密码修改失败请联系微信:mofangbao
发表于 2013-11-22 00:10:00 | 显示全部楼层
很不错啊,感谢分享
密码修改失败请联系微信:mofangbao
发表于 2013-11-22 07:22:35 | 显示全部楼层
很不错,谢谢分享
密码修改失败请联系微信:mofangbao
发表于 2013-11-22 08:05:00 | 显示全部楼层
很不错,收藏了
密码修改失败请联系微信:mofangbao
0
早起挑战累计收入
发表于 2013-11-22 08:22:36 | 显示全部楼层
楼主能否提供一个小示例数据供测试,按照官方的描述,默认情况下主文件是取不到脚本函数里面的变量的,我看你直接'd thetase'了,这个应该是脚本函数的变量吧,而你在脚本函数也没有将thetase这个变量return,所以有些怀疑,不过还是非常鼓励你这种分享精神啦,可以继续讨论一下,也许是GrADS的规则更新了说不定。
密码修改失败请联系微信:mofangbao
发表于 2013-11-22 08:52:24 | 显示全部楼层
赞!
密码修改失败请联系微信:mofangbao
发表于 2013-11-22 09:18:29 | 显示全部楼层
楼主威武!
密码修改失败请联系微信:mofangbao
发表于 2013-11-22 09:20:36 | 显示全部楼层
回去试一试,谢谢分享啦
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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