我有一些编写fortran代码的经验,但我从未见过这样的东西。
我正在使用一个大型 HPC 代码(~10K 行),其中我正在修改一个子例程。我使用 print 语句来验证所有操作是否正确完成,并在必要时进行调试。当我使用我使用的最后一个 PRINT
语句运行代码时,代码到处都给我实数。一旦我注释了最后PRINT
语句,代码就会给我NaN
是我的一些变量。由于我的代码太大,我显然不能在这里发布它,但我会发布PRINT
语句:
PRINT*, "outletBC up1 ", SUM(ABS(up(nptsx,:,:)))
其中up
是一些速度阵列。
问题:
这怎么可能?PRINT
语句如何可能影响任何变量?
这表明代码中的其他一些错误(例如内存损坏)。我不确定您使用了什么调试标志。但是,请尝试编译标志"-check all"(适用于英特尔 Fortran 编译器)。此标志检查多个可能的错误。有关更多详细信息,您可以参考 https://software.intel.com/sites/default/files/m/f/8/5/8/0/6366-ifort.txt