GAMIT中的C文件生成或读取错误

错误现象

现象一
前面一切正常,运行csh bxxxxx.bat后,在GMAIT.fatal中出现:

[code lang=text]
Error reading one or more cfiles
[/code]

现象二
在前面一切正常,运行csh bxxxxx.bat后,在GMAIT.fatal中出现:

[code lang=text]
IOSat: Error reading cfiles
[/code]

而且这两种情况出现似乎没有什么规律,一会儿好一会坏。

解决方案

如果单进程运行(当前的操作环境没有其它进程或用户在运行gamit处理数据),那么只需要检查一下/tmp中的临时c-file(以c开头的文件),然后将这些文件删除,再重新运行csh bxxxxx.bat,即可。

如果单线程没有问题,而多进程运行(同时运行多个csh bxxxxx.bat)就会出错,那么我建议修改一下model配置文件中的临时目录,将不同进程的临时文件放到不同的目录下。model配置文件(每个x-file都会对应一个配置文件,所以都修改一下)内容如下所示:

[code lang=text]
S Static Mode
pchan5.001 Print file
ine015.001 Station clock polynomial (I-) file
lfile. Coordinates (L) file
xchan5.001 Input X, C, or S file
cchan5.001 /tmp Output C-file / Scratch directory
N Delete input C-file?
tigsf5.001 T-file
NONE Ionosphere source
RINEX met file
Z-file
jbrdc5.001 Satellite clock polynomial (J-) file
0 31 11 IERS03 N N Datum / Tides applied / SP EOP / E-tide model / Atm load / Hydrol load
AZEL ELEV Use site-specific antenna model (Y/N) / antenna model / SV antenna model
3 yigsft.001 Clock model / Yaw file
GPT 50 Met options (source hierarchy + humidity) or P T H
SAAS SAAS GMFH GMFW Met models (dryzen wetzen drymap wetmap)
[/code]

只需要将/tmp修改一下即可(注意,这个目录必须存在,否则也会运行出错)。

原因

GAMIT的C-file是数据分析的主要文件,包含了观测值、近似残差、偏导数以及附属信息。该文件与X-file(GAMIT观测值文件)相对应,由modle从X-file创建,同时可以作为autcln,cview,solve的输入文件。

model首先读取相应的配置文件,对于批处理来说,这个文件一般命名为bexpty.num,如bexpt5.002,其中num代表批处理文件的顺序。一般情况下002之后的几个批处理配置文件都是由model处理(详细的可以看看bexpty.bat内部的代码)。

model 在生成C-file过程中,会不断在”Scratch directory”(临时目录,默认情况下为/tmp)生成临时c-file,这个临时文件使用五位数的PID+五位数UID作为尾辍,所以一般情况下也避开了重复现象,而正常运行的话会出将这个临时删除,所以一般情况下不会出错。但是在一些特别的情形下,则会运行出错。

1. 强行中止model(批处理)程序,导致临时c-file没有删除
2. model在生成c-file的时候没有获取到PID(使用"*****"代替PIkD)

这两种情况下均有可能会导致临时c-file重复,而在并行运算的时候,第二情况往往会出错。只需要解决可能会存在的重复现象,自然就能解决错误。

此条目发表在GAMIT, GNSS, LINUX分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据