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

sol*_*ito 5

我有一些编写fortran代码的经验,但我从未见过这样的东西.

我正在使用大型HPC代码(~10K行),我在其中修改子程序.我使用print语句验证一切都已正确完成并在必要时进行调试.当我用PRINT我使用的最后一个语句运行我的代码时,代码到处都给我实数.一旦我评论了最后一个PRINT语句,代码就是给我NaN一些变量.由于我的代码太大,我显然不能在这里发布,但我会发表PRINT声明:

PRINT*, "outletBC up1    ", SUM(ABS(up(nptsx,:,:)))
Run Code Online (Sandbox Code Playgroud)

哪里up是一些速度阵列.

题:

怎么可能?PRINT语句如何可能影响任何变量?

小智 1

我认为这表明代码中存在其他一些错误(例如内存损坏)。我不确定你使用了什么调试标志。但是,请尝试编译标志“-check all”(针对 intel fortran 编译器)。该标志检查多个可能的错误。有关更多详细信息,您可以参考https://software.intel.com/sites/default/files/m/f/8/5/8/0/6366-ifort.txt