我有一个程序,它计算了几个变量,然后这些变量写入输出文件。
是否有可能,当我的程序无法为我的公式获得正确的结果时,它确实会终止?
为了澄清我的所作所为,这是我的代码的一部分,我感兴趣的变量是计算:
dx=x(1,i)-x(nk,i)
dy=y(1,i)-y(nk,i)
dz=z(1,i)-z(nk,i)
call PBC(dx,dy,dz)
r2i=dx*dx+dy*dy+dz*dz
r2=r2+r2i
r2g0=0.0d0
r2gx=0.0d0
dx=x(1,i)-x(2,i)
call PBC(dx,dy,dz)
rspani=dsqrt(dx*dx)
do ii=1,nk-1
rx=x(ii,i)
ry=y(ii,i)
rz=z(ii,i)
do jj=ii+1,nk
dx=x(jj,i)-rx
dy=y(jj,i)-ry
dz=z(jj,i)-rz
call PBC(dx,dy,dz)
r21=dx*dx+dy*dy+dz*dz
r21x=dx*dx
r2g=r2g+r21
r2gx=r2gx+r21x
r2g0=r2g0+r21
rh=rh+1.0d0/dsqrt(r21)
rh1=rh1+1.0d0
ir21=dnint(dsqrt(r21)/dr)
p(ir21)=p(ir21)+2.0D0
dxs=dsqrt(r21x)
if(dxs.gt.rspani) rspani=dxs
end do
然后在输出中我只写下这些变量:
write(12,870)r2i,sqrt(r2i),r2g0,r2gx/(nk*nk)
870格式(3(f15.7,3x),f15.7)
x,y,z通过随机数生成器实际生成。
问题是我的输出包含了457行的正确值,然后一行只是" *********"当我使用mc viewer然后输出继续正确的值时,但是让我们说12个步骤形成循环,计算这些变量是缺失的。
所以我的问题是基本的:
是否有可能,我的程序无法获得正确的数字,这就是为什么结果没有写入程序的原因?
或 这可能是由于错误的输出格式化或与格式化相关的事情造成的吗?
感谢您提出任何建议
答案 0 :(得分:2)
*********
几乎肯定是尝试为格式字符串中指定的字段编写一个太大的数字。
例如,指定为f15.7
的字段将占用小数点1个点,前导符号为1个点(-
将始终打印,如果需要,+
可能是如果设置了选项,则打印),小数位数为7,数字的整个部分留有6位数字。因此,可能存在这样的情况:该程序不适合该字段并且将打印15 *
s。
使用最新的Fortran编译器编译的程序如果遇到代表IEEE特殊值之一的浮点数,则会编写一个字符串,如NaN
或-Inf