爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 23066|回复: 23

[分享资料] 分享一个利用grads扩展功能快速计算露点的方法

[复制链接]

新浪微博达人勋

发表于 2017-10-10 17:45:02 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 river 于 2019-8-21 22:05 编辑

  其实大家使用的基本都是OpenGrADS,并不是GrADS官网上的原原本本的版本。OpenGrADS相当于一个基于原版grads API接口作出的改进版。在制作之初就已经加入了很多扩展功能。比如大家比较熟悉的re(),可以将格点资料插值成不同的分辨率,这个原版是没有的。  OpenGrADS扩展的功能有很多,而且非常实用。比如说计算露点,计算水汽压,计算抬升凝结高度,计算T检验、F检验,计算风切变,计算风暴螺旋度,寻找最低气压中心,还能画卫星轨道图,等等等,真是很多。用法也比较简单,就相当于GrADS里面自带了相应的函数。具体扩展了哪些功能,大家可以去看这个文件夹里的文档,比如我的OpenGrADS安装在默认的C盘,那么在这个文件夹里看C:\OpenGrADS\Contents\Resources\Documentation\opengrads\doc\udxt 。里面相应的文件夹一共有15个,这15个文件夹相当于是以作者或者相关功能分类。打开相应的文件夹打开里面相应的html就可以看到相应的功能和用法,当然是全英文的。每个文件夹下虽然只有一个网页文件,但是里面往往包括好多个功能的介绍,最多的能有二十个以上,所以是非常强大的。建议有能力的同学们打开看看,研究一下,发帖给大家科普一下。

今天我要说的计算露点的功能在saakeskus文件夹下,打开网页文件,复制露点的部分如下:
dewpt(T,RH)
This function computes the dew-point temperature given the Temperature T in Kelvin and the relative humidity RH in percent.

用法很简单,就是直接把dewpt当做函数,把相应的温度和相对湿度的变量填进去就好了。我的脚本如下:

'reinit'
'open /mnt/g/linux/2015/201504.ctl'


'set t 3'
lev.1=850;lev.2=700;lev.3=500
*******图形输出******
zz=1
while(zz<=3)
'set lev 'lev.zz''
'define td=dewpt(TMPprs,RHprs)-273.16'
'set grid off'
'set grads off'
'set parea 2 7 3 7'
'set xlopts 1 4 0.14'
'set ylopts 1 4 0.14'
'set map 0'
* turn off map
'set mpdraw off'
'set lon 85 125'
'set lat 30 55'
'set xlint 5'
'set ylint 5'
'set gxout shaded'
*'set cthick 7'
*'set cstyle 3'
*'set ccolor 2'
*'set cint 5'
'run /mnt/g/GrADS-NCL-colormakerV1.3/output/scripts/14colors.gs'
'd smth9(td)'
'cbarn 0.65 1 7.2 5'
'set gxout contour'
*'set cthick 6'
*'set cint 5'
'set ccolor 1'
*'set cstyle 1'
*'set clopts 1'
*'set clskip 1'
*'set clab masked'
*'set clab forced'
'd smth9(td)'
'draw title Dew Point Temperature at 'lev.zz' [C]'


* draw the map
'set mpdraw on'
'set mpdset cnworld'
'set map 15 1 3'
'draw map'
'huanghe.gs'
'gxprint /mnt/g/linux/2015/pic/Td'lev.zz'.png white'
'c'
zz=zz+1
endwhile
;
出来的图如下:
Td500.png Td700.png Td850.png
是不是很简单。有些人可能发现这个图和我另一个讨论计算露点温度的贴子里的一种方法画出来的图一模一样。没错,他这里用到的算法,在那个贴子里其实介绍过了。
在这不细说,直接上个公式吧

Calculated for 2m above ground
tc2m = temperature 2m above ground [°C]
rh2m = relative humidity 2m above ground [%]
'define dewp2m = tc2m-((14.55+0.114*tc2m)*(1-0.01*rh2m)+pow((2.5+0.007*tc2m)*(1-0.01*rh2m),3)+(15.9+0.117*tc2m)*pow((1*-0.01*rh2m),14))'

所以GrADS还是很强大的,大家也可以根据自己需求来给GrADS扩展功能。具体的规则请看官网文档http://cola.gmu.edu/grads/gadoc/gadocindex.html  [size=13.3333px]User-Defined Functions 里面的内容。





评分

参与人数 3金钱 +35 贡献 +8 收起 理由
DILIDILI + 5
mofangbao + 15 + 3
尽头的尽头 + 15 + 5

查看全部评分

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

新浪微博达人勋

发表于 2017-10-11 05:43:47 | 显示全部楼层
厉害了我的江江
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-10-11 08:22:59 | 显示全部楼层

你抢到了沙发哎!本来想抛砖引玉,让大家去发掘一下那些扩展功能的,但没什么人关注···
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-10-11 13:48:53 | 显示全部楼层
太厉害了,先收藏了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-10-11 16:38:32 | 显示全部楼层
river 发表于 2017-10-11 08:22
你抢到了沙发哎!本来想抛砖引玉,让大家去发掘一下那些扩展功能的,但没什么人关注···

哈哈,用grads的人越来越少了,最近也不是写论文的时候,不过grads其实蛮好用的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-10-12 04:27:57 | 显示全部楼层
尽头的尽头 发表于 2017-10-11 16:38
哈哈,用grads的人越来越少了,最近也不是写论文的时候,不过grads其实蛮好用的

  用习惯了啊。最近在学习linux和NCL,但是从头开始确实挺难的。我照着兰溪的NCL教程一步一步来,还是卡在了读二进制数据那儿。我照着他的fortran程序写出来的数据,运行结果就差两个小数位。然后照着他的NCL脚本往出读,数据竟然全是零······不知是什么情况。给他留言他说他基本不用windows,得自己排查·····
  
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-10-12 08:03:15 | 显示全部楼层
river 发表于 2017-10-12 04:27
用习惯了啊。最近在学习linux和NCL,但是从头开始确实挺难的。我照着兰溪的NCL教程一步一步来,还是卡 ...

按照他的一样的程序都不对吗,不应该啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-10-12 08:21:44 | 显示全部楼层
尽头的尽头 发表于 2017-10-12 08:03
按照他的一样的程序都不对吗,不应该啊

是啊,就是按照他的程序,用CVF6.6生成的直接存储的数据,运行结果就比他示例当中少了两位小数。然后用他的NCL脚本来读,都是正常的,就是所有数值都是0。最近没时间,过一段时间再研究一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-10-13 14:25:19 | 显示全部楼层
river 发表于 2017-10-12 08:21
是啊,就是按照他的程序,用CVF6.6生成的直接存储的数据,运行结果就比他示例当中少了两位小数。然后用他 ...

嗯嗯,其实用了ncl没必要太去纠结二进制了,我用ncl都没用它读过二进制
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-10-13 17:26:41 | 显示全部楼层
尽头的尽头 发表于 2017-10-13 14:25
嗯嗯,其实用了ncl没必要太去纠结二进制了,我用ncl都没用它读过二进制

  因为是按照教程一步步来的,而且我感觉我有强迫症,这个弄不出来就没心思看后面的。还好搞定了,是记录长度的的问题,兰溪给的例子里直接用的 1,不知道为啥,但是fortran程序里recl=M*N*4,ncl脚本里把1改成4就对了。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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