如何帝豪gs使用说明书自定义GS

后使用快捷导航没有帐号?
只需一步, 快速开始
只需一步,快速开始
查看: 6178|回复: 77
grads自定义gs脚本函数的应用心得:常用物理量的脚本函数
在线时间 小时
登录后查看更多精彩内容~
才可以下载或查看,没有帐号?
本帖最后由 平流层的萝卜 于
19:57 编辑
& && &由于总是要用到那么几个变量(水汽通量及其散度、假相当位温、位涡等),自然想到如果把它们的计算公式写成一个脚本gs,下次再计算它们的时候直接调用该gs,而不必用到一次重新写一次,岂不方便很多!好比想算散度,直接define sandu=hdivg(u,v),sandu就这么算出来了。研究了很长时间function的用法,终于有点小进展,事实证明,用自定义的gs脚本函数,也可以像define sandu=hdivg(u,v)一样方便地计算物理量。
& &&&举个例子,如果想算假相当位温,可以直接“thetase 温度 湿度 气压”,就可以算出来theatase。方法就是用到了自定义gs脚本函数。具体做法如下:先上图:
QQ截图23.png (59.72 KB, 下载次数: 3)
21:57 上传
测试的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' ( <font color="#ff*)应该是要加上去的,计算比湿所用,第一次给的gs此处未加,现已修改。
'define e='p'*q/(0.62197+q)+1e-10'
'define tlcl=55.0+.5*log('t')-log(e)-4.805)'
'define theta='t'*pow((1000/'p'),(0.-0.28*q)))'
'define thetase=theta*exp(((3376./tlcl)-2.54)*q*(1.0+0.81*q))'
& &把上边的这些保存在thetase.gs里,放在grads的script文件夹下边,下次调用的时候就可以直接用了!
&&函数用法不用多说了,东西不多,很简单。
&&输入几个参量,就能得到想要的结果,这正是函数得以存在的原因。
&&所有的物理量计算应该都可以这样弄,这样可以搞一个物理量gs脚本函数的大集合!方便所有气象人!!
&&待续,欢迎交流指正。 下边两个附件,是我重新用其他数据做的,可以正常出图的。但是脚本到底是否通用,还请各位用自己的数据一试,做的不对的地方请指正!!!多交流!!
(44.48 KB, 下载次数: 42)
14:06 上传
点击文件名下载附件
用来测试的grd,ctl和gs
测试用的文件
(460 Bytes, 下载次数: 66)
19:43 上传
点击文件名下载附件
gs脚本函数文件
gs脚本函数文件(放在script文件夹下)
根据上述的想法,继续写一个水汽通量散度的gs脚本函数:
脚本函数文件内容如下:
function qvdiv(args)
u=subwrd(args,1)
v=subwrd(args,2)
t=subwrd(args,3)
r=subwrd(args,4)
p=subwrd(args,5)
& & 'define es=6.112*exp(17.67*('t'-273.15)/('t'-29.65))'& & 计算饱和水汽压,Tetan公式
& & 'define qs=0.62197*es/('p'-0.378*es)*1000'& && && &&&饱和比湿
& & 'define q=qs*'r'/100'& &&&比湿
& & 'define qx=q*'u'/9.8'& &&&水汽通量的x方向分量
& & 'define qy=q*'v'/9.8'& &&&水汽通量的y方向分量
& & 'define qvdiv=hdivg(qx,qy)'& & 水汽通量散度qvdiv
& & 'undefine es'
& & 'undefine qs'
& & 'undefine q'
& & 'undefine qx'
& & 'undefine qy'
qvdiv u风速 v风速 温度(单位:K) 湿度(单位:0.01) 气压(单位:百帕)
函数算得qvdiv即是水汽通量散度。
用fnl资料测试之:
'open H:\paper\fnl.ctl'
'enable print H:\paper\water_vapor_stream\water.gmf'
while(i&=13)
& & 'set t 'i''
& & 'set lon 80 140'
& & 'set lat 0 45'
& & 'set lev 850'
& & 'set grads off'
& & 'set mpdset mres cnriver '
& & 'qvdiv ugrdprs vgrdprs tmpprs rhprs 850'
& &&&'set gxout shaded'
& &&&'set lon 81 139'
& & 'set lat 1 44'
& &&&'define_colors'
& &&&'set clevs -100 -80 -60 -40 -20 0 20 40 60 80'
& &&&'set ccols 26 25 24 23 22 21 41 42 43 44 45'
& & 'd qvdiv*1e6'&&&&
& & 'cbarn'
& & ’drawtime'
& & 'print'
'disable print'
部分结果如下:
QQ截图10.png (68.11 KB, 下载次数: 0)
19:49 上传
水汽通量散度的gs脚本函数:
(433 Bytes, 下载次数: 61)
19:53 上传
点击文件名下载附件
,放在script文件夹下边,以后算水汽通量散度的时候只需要输入几个参数就好了。
已有1人关注本帖
密码修改失败请联系qq:
在线时间 小时
谢谢分享&&
密码修改失败请联系qq:
在线时间 小时
学grads这么久了,都没好好用过函数的说~楼主要多分享经验哈~
密码修改失败请联系qq:
在线时间 小时
很不错啊,感谢分享
密码修改失败请联系qq:
在线时间 小时
很不错,谢谢分享
密码修改失败请联系qq:
在线时间 小时
很不错,收藏了
密码修改失败请联系qq:
在线时间 小时
&&#25104;&#38271;&#20540;: 1140
楼主能否提供一个小示例数据供测试,按照官方的描述,默认情况下主文件是取不到脚本函数里面的变量的,我看你直接'd thetase'了,这个应该是脚本函数的变量吧,而你在脚本函数也没有将thetase这个变量return,所以有些怀疑,不过还是非常鼓励你这种分享精神啦,可以继续讨论一下,也许是GrADS的规则更新了说不定。
密码修改失败请联系qq:
在线时间 小时
密码修改失败请联系qq:
在线时间 小时
楼主威武!
密码修改失败请联系qq:
在线时间 小时
回去试一试,谢谢分享啦
密码修改失败请联系qq:(window.slotbydup=window.slotbydup || []).push({
id: '2397579',
container: s,
size: '680,60',
display: 'inlay-fix'
《NBA 2K16》小技巧GS设置及修改方法
发表时间: 11:51:26|
编辑:小鲜肉
《NBA 2K16》GS如何设置呢?下面为大家带来玩家“wxh5303194”分享的《NBA 2K16》GS设置及修改方法,一起来看看吧。之前用的GS是我14一直用的,好多朋友说防守太不 我一直玩的内线没怎么感觉出来 这几天每个位置都试了
感觉防守确实有些过了(不过14太好得分了所以防守要弄高一点)经过几天的调较 终于调出了我感觉目前用的最好用16的GS设置了。这个GS攻守比较
我打的MC马刺队现在进季后赛了,和雷霆队打平均每场得分每个队友都是100分左右;命中率40%-48%;三分 40%左右;犯规数25个左右而且进攻也很流畅,对面威少各种单打突分感觉非常真实,好多时候我为队友挡拆
队友都会去单打(帕克,吉诺比利之类的。)总之闲得无聊分享给大家,希望大家都能爽玩2K16进攻这里设置 用户和电脑一样防守用户电脑
分页:1/4页
1、如果您未安装91盒子,请选择“游戏高速下载”。2、安装好91盒子客户端后,请重启浏览器,点击“高速下载”按钮盒子将自动下载游戏。
专业的单机游戏下载网站 91 () 打造不一样的 单机游戏下载基地I'm trying to add a structure to a singly linked list with the function g_slist_append(list, &structure). This seems to work (it's adding the pointer), however I can't seem to find a way to view the elements in the structure when reading the linked list.
My structure looks like this:
struct customstruct
char *string_1;
Then, I make a list: GSList *list = NULL;
Then, I append one instance of the structure like this:
struct customstruct list_
list_entry.var1 = 1;
list_entry.var2 = 2;
list_entry.string_1 = "String";
list = g_slist_append(list, &entry);
printf("Entry var1 = %d\n", list-&data-&var1);
That last line fails because var1 can't be found (request for member in something not a struct or union).
I think I need to cast it to the right type but I don't know how. Anyone?
解决方案 I'm guessing the data member of the GSList structure is a void pointer, i.e. a pointer that can point to anything but doesn't have any other type info.
This means you have to use type-casting:
((struct customstruct *) list-&data)-&var1
本文地址: &
我想一个结构添加到与功能g_slist_append(列表,和放大器;结构)的单链表。这似乎工作(它的加入指针),但是我似乎无法找到一种方法读取链表时查看该结构中的元素。我的结构是这样的: 结构customstruct {
字符* STRING_1; } 然后,我做一个列表: GSList *名单= NULL;
然后,我追加结构的一个实例是这样的: 结构customstruct LIST_ENTRY; list_entry.var1 = 1; list_entry.var2 = 2; list_entry.string_1 =“字符串”; 清单= g_slist_append(列表,和放大器;输入); 的printf(“进入VAR1 =%d个\\ N”列表 - &GT;数据 - &GT; VAR1); 由于 VAR1 无法找到(在一些会员的要求不是一个结构或联合)。这是最后一行失败我想我需要它转换为正确的类型,但我不知道怎么办。有人吗?解决方案 我猜数据的成员 GSList 结构是一个无效指针,即可以指向任何东西,但没有任何其他类型信息的指针。这意味着你必须使用类型强制转换: ((结构customstruct *)列表 - &GT;数据) -
本文地址: &
扫一扫关注官方微信

我要回帖

更多关于 广汽传祺gs8使用手册 的文章

 

随机推荐