获得确切的位置

时间:2017-04-22 14:55:10

标签: fortran output

我有一个用标准FORTRAN 77编写的简单代码,用于数值积分运动方程。集成循环如下

  yant=x0(2)
  DO i=1,n-1
    ti=t0+DBLE(i-1)*tstep
    t=ti
    CALL bstoer8(t,tstep,x,ndimf,ierr,derivs)
    IF(x(2)*yant.LT.0d0)THEN
      WRITE(52,'(7(F16.8))')t,x
    ENDIF  
    yant=x(2)
  ENDDO

bstoer8模块包含标准的Bulirsh-Stoer积分器,可以找到它here

正如我们所看到的,当y = 0时,我想打印外部数据文件的时间和所有六个向量元素(x,y,z,p_x,p_y,p_z)。

然而,当y = 0时,我没有得到确切的时间。我得到的是最接近的时间步长。例如,数据文件中的一行是以下

 -0.17000000     10.45572291      0.00264921     -0.83321521     -0.21271715     45.32160003     -1.24830046

我们观察到y非常小(0.00264921)但不完全等于零。此外,时间t仅包含两位小数,因为数值积分的时间步长等于0.01。

所以,我的问题如下:如何获得y = 0的确切时间?换句话说,我怎样才能使y等于0(八位十进制数字)和相应的八位十进制数字?

非常感谢提前!

0 个答案:

没有答案