ich habe ein kleines Problem mit diesem einfachen FortranprogrammAusgabedatei enthält zusätzliche Nullen
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
Alles scheint gut zu funktionieren, bis ich auf Datei suchen U0.txt
. Diese Datei enthält mein Ergebnis plus andere Zeilen von Nullen (Millionen) mit einer Größe von 6,4 GB. Aber ich verstehe nicht, wo der Fehler liegt, denn wenn ich weniger als 8000 Zeilen lese, verschwindet dieses Problem. Ich bin auf Linux mit Gfortran-Compiler.
Verwenden Sie tag [tag: fortran]. Wählen Sie einen Titel, der Ihr Problem und nicht nur das Thema beschreibt. Das Thema wird durch die Tags beschrieben. –
Da '16589 ** 2' nur nördlich von' 275 * 10 ** 6' liegt, wäre es nicht verwunderlich, wenn das Programm eine sehr große Datei schreibt, wenn die 'if' Anweisungen innerhalb der verschachtelten Schleife zu' .true' ausgewertet werden . Ich komme zu dem Schluss, dass dies ein Datenproblem und kein Programmierproblem ist. –
Haben Sie Zugang zu einem modernen Fortran Compiler (2008+)? Wenn dies der Fall ist, verwenden Sie bitte den 'newunit'-Spezifizierer anstelle von hartkodierenden Datei-ID-Einheiten. – jlokimlin