|
小弟最近采用一个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.编译过程中忽略以上警告会不会导致我计算出现错误?
主要是原作者没有回我的信息,我也不知道是测试例子有误还是我编译或者改动的问题,恳请各位大神指教,非常感谢!
|
|