爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7947|回复: 2

[脚本编辑] 关于grads中gsf函数的疑问

[复制链接]

新浪微博达人勋

发表于 2015-4-23 21:41:03 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 wheelar 于 2015-4-23 21:42 编辑

我看了在grads安装目录中...OpenGrADS\Contents\Resources\Scripts有相当位温的函数,文件名是ept.gsf,内容为:
*
* This is a GrADS script library derived from code fragments by
* Stefan Gofferje <
stefan@saakeskus.fi> and posted on his site
*
http://www.saakeskus.fi/index.php?function=oth.
*
* These functions are designed to be implemented as a gsUDF.
*
*       This script has been placed in the Public Domain.
*
*----------------------------------------------------------------

* Equivalent Potential Temperature
* --------------------------------
  function ept(t,rh,in_p)

     if (in_p='in_p'|in_p='')
        say 'Purpose: Calculate Equivalent Potential Temperature [K]'
        say 'Usage:   display ept(t,rh,p)'
        say '         t = temperature [K]'
        say '         rh = relative humidity [%]'
        say '         p = pressure [hPa]'
        return
     else
        p = in_p
     endif

*    Define these to minimize I/O
*    ----------------------------
     'define xxxt = ' t '- 273.16'
     'define xxxrh = ' rh

     'define xxxdewp = xxxt-((14.55+0.114*xxxt)*(1-0.01*xxxrh)+pow((2.5+0.007*xxxt)*(1-0.01*xxxrh),3)+(15.9+0.117*xxxt)*pow((1-0.01*xxxrh),14))'
     'define xxxvapr = 6.112*exp((17.67*xxxdewp)/(xxxdewp+243.5))'
     'define xxxe    = xxxvapr*1.001+(('p')-100)/900*0.0034'
     'define xxxw    = 0.62197*(xxxe/(('p')-xxxe))'
     'define xxxte   = xxxt+273.16+(2260000*xxxw/1004)'

     'define gsudf   = (xxxte*pow((1000/('p')),(287/1004)))'

*    Release temporary variables
*    ---------------------------
     'undefine xxxt'
     'undefine xxxrh'
     'undefine xxxdewp'
     'undefine xxxvapr'
     'undefine xxxe'
     'undefine xxxw'
     'undefine xxxte'

     return 'gsudf'
我参照这个样子写了一个计算温度平流的函数,文件名为tadv.gsf,也放在相同的目录中...OpenGrADS\Contents\Resources\Scripts,内容为:
function tadv(up,vp,tp)
  * ------------temperature advection ----------
  *
  'define dtx = cdiff(' tp ',x)'
  'define dty = cdiff(' tp ',y)'
  'define dx = cdiff(lon,x)*3.1416/180'
  'define dy = cdiff(lat,y)*3.1416/180'
  'define gsudf=-1*10e6*((' up ' *dtx)/(cos(lat*3.1416/180)*dx) + ' vp ' *dty/dy)/6.37e6'
  'undefine dtx'
  'undefine dty'
  'undefine dx'
  'undefine dy'
  return 'gsudf'


之后在主函数中调用,
'reinit'
rc = gsfallow("on")
'open /cygdrive/d/T639/T639.ctl'
'define ept1000=ept(th(lev=1000),rh(lev=1000),lev(lev=1000))'
'd ept1000'

'set lev 850'
'define tv=tadv(uh,vh,th)'
'd tv'


运行结果如下,
pass.png

'define tv=tadv(uh,vh,th)'出错了,貌似没有找到那个函数,可是我明明放在那个目录里了,请问这是为什么呢?ept那个函数就没有问题的,可以正常运行,不得其解,关于gsf,我不是很懂,求各位帮助!!



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

新浪微博达人勋

发表于 2022-6-5 21:13:49 | 显示全部楼层
同问,我也想用regrid2.gsf但是不知道怎么用
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-6-7 20:26:54 | 显示全部楼层
{:5_275:}{:5_275:}{:5_275:}{:5_275:}{:5_275:}
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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