[英]write in array format in fortran
我嘗試以nxn矩陣格式編寫輸出file.dat。
我編寫代碼,但輸出是值f的列。
現在的問題是:如何更改要寫入的文件的輸出格式?
來自:1 2 4 5 ...
到:1,2,3,4 // 5,6,8,.. //
program eccen
implicit none
integer, parameter:: grid=800
integer::i,j,k,n,m
real*8,allocatable::f(:,:)
real*8::xx(grid),yy(grid),mval,Mxval
real*8,allocatable::x(:),y(:)
open(10,file='3d_disk.txt')
n=0
DO
READ(10,*,END=100)
n=n+1
END DO
100 continue
rewind(10)
allocate(x(n),y(n))
do i=1, n
read(10,*) x(i),y(i)
end do
mval=-20.
Mxval=20.
do i=1, grid
xx(i) = mval + ((Mxval - mval)*(i-1))/(grid-1)
yy(i) = mval + ((Mxval - mval)*(i-1))/(grid-1)
end do
open(20,file='3d_map.dat')
allocate(f(n,n))
f=0
do i=1,grid
do j=1,grid
m=0.
do k=1, n
if (x(k) > xx(i) .and. x(k) < xx(i+1) .and. &
& y(k) > yy(j) .and. y(k) < yy(j+1)) then
m=m+1 ! CONTA IL NUMERO DI PARTICELLE
end if
end do
f(i,j)=float(m+1)
我認為修改必須來自此:
write(20,*) f(i,j)
end do
write(20,*)
print *,i
end do
end program eccen
至:
do i=1,grid
do j=1,grid
write(20,*) f(i,j)
end do
end do
end do
write(20,*)
print *,i
end do
end program eccen
這個說法
write(20,*) f(i,j)
將寫入f(i,j)
的值,然后移至下一行,因此您獲取的文件正是您的代碼所指定的。 如果您希望文件包含n
行,每行具有n
值,請嘗試
write(20,*) f(i,:)
這應該在將數組的整個行i
寫入輸出文件中的一行時起到很好的作用。 當然,這會使j
的循環變得多余,因此可以將其刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.