爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 17617|回复: 2

[脚本编辑] GrADS用re调整到经纬度格点,并计算速度势

[复制链接]

新浪微博达人勋

发表于 2020-9-3 14:48:55 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 伽蓝鸟 于 2020-9-3 15:41 编辑

        之前主要用的是再分析资料,它们基本上是规整的经纬度网格。
        最近在看PDO对亚洲季风的影响,器测数据的长度不够,就挑了MPI-ESM的piControl来对比着看。
        然后,在计算速度势的时候,遇到了点麻烦。
        GrADS有内置函数可以去算速度势,其中fish这一系列函数应该是迭代法解的,而shfilt这一系列函数是用球谐函数解的。
        但是这俩族函数都只能用在规整的经纬度坐标上,这对于再分析资料来说没啥问题,可是模式输出经常是在谱网格上。
        所以直接用的话,会出现这之类的报错:
ga-> d fish_chi(ua.1,va.2)
Error from UADV (VADV):  Nonlinear U/V grids
                   Both xdef and ydef should be linear
Operation Error:  Error from madvu function
Operation Error:  Error from fish function
Operation Error:  Error from fish_chi function

        以及
ga-> d sh_chi(ua.1,va.2)
Error from UADV (VADV):  Nonlinear U/V grids
                   Both xdef and ydef should be linear
Operation Error:  Error from madvu function
Operation Error:  Error from sh_fish function
Operation Error:  Error from sh_chi function


        GrADS倒是可以去做插值,比如lterp这个函数,其具体说明可以在这个网址上找到http://cola.gmu.edu/grads/gadoc/gadocindex.html (这里有GrADS很多命令的解释)
        但是lterp需要弄俩ctl,也就是模板的ctl也得有,稍微有点麻烦。
        所以我一开始是用MATLAB的interp2函数插值到经纬度坐标,然后再写成dat和ctl,让GrADS算速度势。
        (不直接用MATLAB解泊松方程,是因为这是个球面上的泊松方程,跟直角坐标不一样。但我记得气象家园有帖子说怎么用MATLAB计算速度势辐散风,这是另一种解决问题的方法啦)
        fish的介绍里,提到了它要求是全球且均匀的经纬度网格,也提到了如果资料不满足条件,可以用re这个函数去插值到规整的经纬度网格。感觉这样做会比较简单,因为不需要在不同软件(GrADS和MATLAB)之间倒腾来倒腾去。
        re的用法挺简单的,例如说我想从T62(192x94)的高斯网格插值到2.5x2.5的经纬度网格,这一句就够了
        define var25=re(varT62 , 2.5 )
        这个函数还有一些参数可以设定,截个图吧,具体的不说了,看它的解释文件就好了
微信截图_20200903144227.png
        插值之后还有一个小坑,计算速度势的时候,直接用fish_chi(uu,vv)是不行的,其中uu和vv是插值之后的风场。会报错如下:
ga-> d fish_chi(uu,vv)
Error in gagchk: axis sizes are not the same
Error from UADV (VADV, WADV):  Incompatable grids
                   Dimension ranges unequal
Operation Error:  Error from madvu function
Operation Error:  Error from fish function
Operation Error:  Error from fish_chi function

        嗯,应该是用fish对uu和vv的散度来求解泊松方程,得到速度势。
        代码见附件,这个问题(用GrADS对谱格点数据求速度势)不难,解决办法也很多(MATLAB或者NCL直接求速度势、GrADS用lterp插值、MATLAB或者NCL插值),我就是想图个省事,就在GrADS里头解决好了。。


re_gaus2lonlat.gs

592 Bytes, 下载次数: 17, 下载积分: 金钱 -5

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

新浪微博达人勋

发表于 2020-9-3 21:06:11 | 显示全部楼层
强大!赞一个
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-8-3 15:31:17 | 显示全部楼层
强大而优秀,收藏备用
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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