输出文件包含额外的零

时间:2016-08-09 10:03:01

标签: file-io fortran fortran90 gfortran

我对这个简单的Fortran程序有一点问题

PROGRAM Calc_U0
Implicit None
real, dimension(:,:), allocatable :: x,y
integer :: n=16589,m=9,nm=6,I,J,r

open (unit = 7, file = "U0.txt")
open (unit=99, file='slice06.txt', status='old', action='read')

allocate(x(n,m))
allocate(y(n,nm))

do I=1,n
  read(99,*,END=71) x(I,:)
enddo

71 do I=1,n
  print*,I
  do J=1,n
     if(I/=J) then
       !! if(x(I,1)==x(J,1)) then
         if(x(I,2)==x(J,2)) then
           if(x(I,3)==-x(J,3)) then
              y(I,1)=x(I,1)
              y(I,2)=x(I,2)
              y(I,3)=x(I,3)
              y(I,4)=(x(I,7)+x(J,7))/2
              y(I,5)=(x(I,8)+x(J,8))/2
              y(I,6)=(x(I,9)+x(J,9))/2
              write(7,*) (y(I,r),r=1,6)
           endif
         endif
       !!endif
     endif

  enddo

enddo

END PROGRAM Calc_U0

在查看文件U0.txt之前,一切似乎都运行正常。此文件包含我的结果以及其他零(数百万)行,大小为6.4 GB。但是我不明白这个bug在哪里,因为如果我读不到8000行,这个问题就会消失。我在Linux上使用gfortran编译器。

1 个答案:

答案 0 :(得分:1)

你阅读的行数并不重要;你的循环仍然从1到16589.也许你应该将这些循环中的n更改为你读取的实际行数。