|  | 
 
| 小弟最近采用一个fortran语言的代码进行计算,遇到一些困难,请教各位大神。 采用VMware 15.5+CentOS7.6构建的linux虚拟机,采用Intel fortran(最新的2022)以及Openmpi4.1.4进行编译和并行计算。
 由于代码比较老,预计是F77,虽然后缀是.f90。
 根据代码作者的说明,首先采用makefile对多个文件进行编译,但出现了部分编译错误和警告。
 如:
 1.应该是由于单行代码过长,超出识别范围,故而在makefile文件中加入-ffree-line-length-none解决了该问题。
 2.由于版本问题,无法编译 if(LSOLVE(4).OR.LSOLVE(5).OR.LSOLVE(6).EQ.1) then,应该是由于逻辑关系问题,故改为if((LSOLVE(4).EQ.1).OR.(LSOLVE(5).EQ.1).OR.(LSOLVE(6).EQ.1)) then  ,不知道这里的更改是否正确?
 3.出现如下警告
 cklib.f:11106.41:
 
 CALL CKRATX (NII, NKK, MXSP, MXTB, T, RCKWRK(NcK1),
 1
 Warning: Rank mismatch in argument 't' at (1) (scalar and rank-1)
 
 
 CoFlame_v1_7_1.f90:3030.3:
 
 'slopePC',7x,'slopeA5',7x,'time',7x,'TimeAvg',7x,'TimeBal')
 1
 Warning: Extension: Tab character in format at (1)
 CoFlame_v1_7_1.f90:737.19:
 
 DO J=3,YEXPANDSTART
 1
 Warning: Deleted feature: End expression in DO loop at (1) must be integer
 
 由于不敢乱改代码,故而忽略。我也百度查阅了这几个警告的原因,主要是老版本代码不严谨,新编译器更严格所导致。
 
 最终,我采用编译好的代码进行了案例测试计算,得到了和作者不一样的结果。
 我的问题是:1.我对于代码的改动(第2点)是否有误?从而影响计算结果。
 2.编译过程中忽略以上警告会不会导致我计算出现错误?
 
 主要是原作者没有回我的信息,我也不知道是测试例子有误还是我编译或者改动的问题,恳请各位大神指教,非常感谢!
 
 | 
 |