Fortran Coder

标题: 变量值变成NaN的原因 [打印本页]

作者: yonggc    时间: 2020-4-9 18:20
标题: 变量值变成NaN的原因
模拟粒子产生的程序,不知为什么有时程序将粒子的动量赋值为NaN? 见程序的2362行:      if(isnan(e1))write(*,*) P(1,I1),P(2,I1),P(3,I1),
     &                        lb(i1)。 输出结果出现NaN.没找到原因?第一次发帖,请求大神帮助。多谢!

artnew3.f

978.03 KB, 下载次数: 6

源程序

input.dat

14.78 KB, 下载次数: 1

输入量


作者: vvt    时间: 2020-4-9 21:53
NaN 产生的原因一般是数学错误,分母为零,log取负数等等。

你可以下断点,单步调试分析一下,检查原因。

关于单步调试,你可以参考本站文章: http://debug.w.fcode.cn 获视频教程 http://v.fcode.cn/video-debugger.html
作者: necrohan    时间: 2020-4-10 17:09
我把 MAXSTR=8000000 都改为 300,没有出现问题
作者: yonggc    时间: 2020-4-12 17:04
vvt 发表于 2020-4-9 21:53
NaN 产生的原因一般是数学错误,分母为零,log取负数等等。

你可以下断点,单步调试分析一下,检查原因。

多谢指点

作者: yonggc    时间: 2020-4-12 17:05
necrohan 发表于 2020-4-10 17:09
我把 MAXSTR=8000000 都改为 300,没有出现问题

谢谢指点,但是,但是那个数不能太小。
作者: necrohan    时间: 2020-4-13 08:00
yonggc 发表于 2020-4-12 17:05
谢谢指点,但是,但是那个数不能太小。

太大我的计算机不支持。小的数没问题说明程序逻辑有问题。
作者: wawewen    时间: 2020-4-15 16:45
回旋加速器?




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2