我遇到以下問題。我有一個文件,我必須:
在fortran中修改數組
- 在細胞分裂創建
NxN
網格; - 計數每個細胞中的粒子;
- 以特定方式編寫結果數字。
的問題是第三點:我必須寫一個N×N的陣列,每個數字代表每個細胞顆粒的總數字,但我不知道如何寫在文件中的NxN
陣列。
program eccen
implicit none
integer, parameter:: grid=200
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='coordXY.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
! create a grid
mval=-15.
Mxval=15.
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='fluxXY.dat')
! counts the paticles in each cell of the grid
allocate(f(grid,grid))
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)
! THIS IS HOW I WRITE THE FILE BUT THIS SHOULD BE CHANGED
write(20,*) f(i,:)
end do
write(20,*)
print *,i
end do
end program eccen
非常感謝您的幫助!
即使在學習你的示例程序之後,我仍然不得不承認在這裏要問什麼。你在問如何表示一個多維數組(矩陣,可以這麼說)以及如何寫出它? – Rook
@ Idigas:是的,網格*網格矩陣(網格是x軸和y軸上的單元格數)。但在我的程序中,單元20中的文件只有3列和很多行。但是,我想要一個帶有網格*網格(列*行)的數組。 –
不知道這三列看起來很難說,但試着用一種明確的格式進行編寫。 – francescalus