添加/删除 PRINT 语句会更改变量



我有一些编写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

最新更新