GAMIT分步解算北斗时报错“Too many channels in receiver“的解决方法初探

"Too many channels in receiver"的解决方法


在进行GAMIT数据处理时,可能需要解算北斗数据。近期解算北斗数据时,遇到了以下错误:

FATAL:  AUTCLN/readcfdata: Too many channels in receiver.

该错误同时出现在autcln.out中,说明是autcln的过程中出现了问题。该文件中,同时写入了如下信息:

 Maximum number of channels used was 27 Using 26 in current run.

在出现此错误后,进行了一些尝试,省流版中有结论,再下面是尝试过程。

省流版

修改autcln.cmd

* If needed to increase the number of channels (compiled default is now 15)
 max_chan 48

max_chan从26修改为48.

减少北斗观测值的数量

在使用相同版本解算另一组数据集时未发现此问题。经过查看发现,该组数据未接收C01-5几颗卫星的观测值。使用gfzrnx对该组数据进行处理,方法如下:

gfzrnx -finp xxxx3320.22o -f -no_prn C01-5 -fout xxxx3320.22o
gfzrnx -finp yyyy3320.22o -f -no_prn C01-5 -fout yyyy3320.22o
......

此处将测站名隐去。
进行批处理时,可以将观测值文件名输出到文件中。

ls *o > rinex.sh

而后使用vim的Visual block模式向文件名的前后批量添加字符串。但处理较慢,且更改了原始观测值,不推荐。

修改autcln.cmd(推荐)

近期处理另一组数据时,发现将C01-5几颗卫星剔除后,仍然报此错误。于是查看了源码,定位了错误位置,位于kf/ctogobs/ctog_utm.f第498-500行。

      if( actual_max_chan.gt.num_chan ) then
          call report_stat('fatal','autcln','read_cfdata',' ',
     .                      'Too many channels in receiver',0)
      end if

经查询可知,num_chan是一个全局变量,在ctogobs中的第一次赋值在kf/ctogobs/ctog_utils.f第38行。

      num_chan = max_gchannels

max_gchannels定义在头文件kf/includes/kalman_param.h中第769行,

* MOD TAH 061204: Increased to 16 channels (Also can be set with max_chan
*                command)      
      parameter ( max_gchannels = 16)

笔者猜测这里的channel指的就是RINEX文件中的OBS TYPES

C   32 C1X C2I C5X C6I C7D C7I C7Z C8X D1X D2I D5X D6I D7D  SYS / # / OBS TYPES
       D7I D7Z D8X L1X L2I L5X L6I L7D L7I L7Z L8X S1X S2I  SYS / # / OBS TYPES
       S5X S6I S7D S7I S7Z S8X                              SYS / # / OBS TYPES

这里随便找了一个观测值文件,观测类型的数值是对不上的…

可以发现,这里的观测值种类有24种,多于16.
查表可知,北斗总共预计产生48种观测值。
在这里插入图片描述
在这里改为

      parameter ( max_gchannels = 48)

修改后重新编译

make_gamit /opt/gamit gfortran

发现报错依旧…

* MOD TAH 061204: Increased to 16 channels (Also can be set with max_chan
*                command)      
      parameter ( max_gchannels = 16)

注意到上面的注释中写道,该值可被命令max_chan修改,说明autcln.cmd的优先级更高。

~/gg/tables/autcln.cmd中,找到了该命令

* If needed to increase the number of channels (compiled default is now 15)
 max_chan 26 

将这里的max_chan改为48

* If needed to increase the number of channels (compiled default is now 15)
 max_chan 48

错误解决…

p.s. 虽然感觉猜测合理,但27这个数字是来自哪个文件中还没有找到,因为测站实在太多了…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lyre丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值