关于GROOPS软件使用的一些基本认识

近期有同学问我关于GROOPS的操作方法,包括循环、变量以及文件路径等。不过我最近的学习主要在理论方面,对GROOPS软件操作的了解不是十分深入,以下仅分享我的拙见,需要的同学可以浏览一下。(GROOPS官方说明文档 https://groops-devs.github.io/groops/html/index.html)

1.GROOPS的架构

1.1 GROOPS控制文件

GROOPS是由控制文件控制的,该文件为自己设置的名称.xml,每当我们打开GROOPS,并手动添加了成员(变量、子程序模块),并进行运行前,都会提示你:
在这里插入图片描述
这个xml文件就是成员按照一定方式组合,并按照你添加子程序的顺序进行编排的控制文件,简单来说,可以简单看作成一个不唯一的main函数(控制文件可以有多个),通过这个控制文件,可以执行里边包含的所有程序。
控制文件路径设置(在工作目录下):
在这里插入图片描述
当你设置好路径并完成自己的控制文件(处理策略),会在设置的工作目录下看到你的xml文件(可以有多个控制文件,每一个代表一套处理策略):
在这里插入图片描述

1.2 控制文件的执行

点击图中绿色按钮,出现执行选项框,勾选控制文件中你需要执行的部分,执行顺序由上到下。
在这里插入图片描述如果是window用于,在Command line选择groops(windows)。勾选Use logfile将会在控制文件所在的文件目录下生成一个记录文件,程序运行的状况将被记录在内,用以检查程序出错或是不合理的地方。

2.GROOPS的变量与解析器

2.1全局变量

学过编程的都知道,全局变量是适用范围是包含全局变量的整个程序,在GROOPS中,全局变量适用范围是每一个控制文件的范围。设置全局变量:
在这里插入图片描述
点击global中的add,输入变量名以及类型以完成全局变量定义
在这里插入图片描述
GROOPS自己定义的全局变量除了基本的类型(整数,浮点,布尔。无符号整数,字符串)外,还有很多其他类型,我只看了需要的个别变量:
time
以简化儒略日的格式存储,设置这个变量是为了处理一个时间段的数据时,避免反复手动输入时间的麻烦。
filename
存储文件路径,一般设置为工作目录(一个工作目录下应包含数据文件夹,结果文件夹,控制文件等),官方给出的说明文档中{groopsDir}啥的都是这个类型。
looptype
相当于将一个循环函数,在该函数内设置自己要进行循环的内容。如获取卫星的prn号:
在这里插入图片描述
上图采用从Ascii文件逐行读取prn号并赋值给变量prn(variableLoopstring)。
全局变量中循环的用法一:
在这里插入图片描述
我们会注意到,identifier右侧出现了loop=loopprn(loopprn是我设置全局loop变量的名称)的字样,它的功能也即对单个变量进行循环赋值,通过右键需要进行循环赋值的变量(图中identifier),点击”set loop“,并且选择全局中设置好的循环即可。

全局变量中循环的用法二:见第3节。

2.2局部变量

局部变量比较好理解,即在GROOPS单个子程序中适用的变量,出了这个子程序就无法使用,这点在loopProgram中时常体现。这里不做赘述,详情看第3节。

2.3 文本解析器

GROOPS中,我们难免会用变量替代文本路径中的一些内容以达到简化的目的。
如:我们在循环中要输出卫星的轨道文件。那么我们会采取以下输出方式更具有效率
在这里插入图片描述
这里只说一下图中的{prn},prn是从文件里提出的变量值,如果要写道路径中,一定要添加 {},功能就是将变量转换为GROOPS可识别的文本模式,不添加就会报错。至于更多文本解析器的操作内容可参看说明文档中的Parser部分。

3.GROOPS中的循环

在2.1中已经介绍了Loop的全局变量,这里介绍一下LoopProgram:
在这里插入图片描述
LoopProgram是一个循环程序,添加的第一个LoopProgram即为主循环,在其中继续添加想要循环的子程序即可构成该子程序的循环。若添加的子程序还为LoopProgram,那么就构成了循环的嵌套。每一个循环都对应着相应的变量,步长与约束条件(相当于for(定义变量; 条件;步长 ))。
循环的类型自己选择,图中循环的类型是timeintervals,它的意思是将某一时间段分割为若干时间段,逐次获取每一个时间段两端的时间值保存在variableLoopTimeStart与variableLoopTimeEnd中,这两个变量即为局部变量,只适用于主循环范围内的子程序中,相应地,嵌套循环的局部变量只适用于嵌套循环的子程序中。我这个示范地主循环程序目的是获取时间变量以便后续操作,设置的开始时间与结束时间为一天的0点与24点,采样间隔为1day,因此主循环只进行一次(具体作用不在赘述,只是为了帮助理解)。

此外,也可使用全局循环变量作为循环类型
在这里插入图片描述
这个作用相当于用全局循环变量替代该循环。

时间有限,分享的只是自己的一些拙见,中间可能有理解不够充分的地方,还望大家指正,本文仅供初学者参考,大佬们就不用看啦。
另外, 本人目前在进行GROOPS网解策略的学习,如有进展会在这里发表一些自己的见解,希望同行可以相互交流。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值