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

错误现象

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

Error reading one or more cfiles

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

IOSat: Error reading cfiles

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

解决方案

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

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

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)

只需要将/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分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

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