我在fortran中遇到一个尴尬的错误,这是我需要的代码,以便对固态材料进行仿真
PROGRAM EUCLID
PRINT *, 'A?'
READ *, NA
IF (NA.LE.0) THEN
PRINT *, 'A must be a positive integer.'
STOP
END IF
PRINT *, 'B?'
READ *, NB
IF (NB.LE.0) THEN
PRINT *, 'B must be a positive integer.'
STOP
END IF
PRINT *, 'The GCD of', NA, ' and', NB, ' is', NGCD(NA, NB), '.'
STOP
END
FUNCTION NGCD(NA, NB)
IA = NA
IB = NB
1 IF (IB.NE.0) THEN
ITEMP = IA
IA = IB
IB = MOD(ITEMP, IB)
GOTO 1
END IF
NGCD = IA
RETURN
END
错误提示在(1)处禁用了Coarrays,使用'-fcoarray ='启用|,但是我没有使用任何数组,那我该怎么办?
我正在使用代码块作为编译器,并且与之前编写的某些程序没有问题
答案 0 :(得分:1)
如果您不打算使用协数组并且不打扰线程和图像,只需放弃此自定义init_random_seed
子例程,并用固有的random_seed
子例程替换它即可。从函数参考here:
如果在不带参数的情况下调用RANDOM_SEED,则将其随机植入 从操作系统检索的数据。
否则,如果您打算使用共数组功能并打扰线程和图像(仅建议高级使用),则可以使用新的内在random_init
(如果在编译器中可用)。如果不是,那么建议使用OpenCoarrays之类的库,或者由您自己实现。
答案 1 :(得分:0)
我使用的init_random_seed是用错误的方式实现的,因此我将其完全删除并编辑了代码