Как записать данные результатов в массив из этого кода Fortran - PullRequest
0 голосов
/ 21 декабря 2018

Я могу получить данные из этого кода, но мне нужно получить их в массиве для построения графика поверхности.Итак, я пытаюсь получить 101X101 на основе приведенного ниже кода, данные, которые я хочу записать, являются данными (i, j).

program test
implicit none
! --- [local entities]
      real*8            :: rrr,th,U0,amp,alp,Ndiv
      real*8            :: pi,alpR,NR,Rmin,Rmax,z, data(101:101)
      integer           :: ir, i, j


OPEN(UNIT=10, FORM='unformatted', FILE="data")
do i=1, 101
  do j=1, 101
      th=atan2(real(i-51,kind(0d0)),real(j-51,kind(0d0)))
      pi=atan(1.d0)*4.d0
!
      Ndiv= 24.d0            !! Number of circumferential division
      alp = 90.d0/180.d0*pi  !! phase [rad]
      U0  = 11.4d0           !! average velocity
      amp = 0.5d0            !! amplitude of velocity
      Rmin = 10              !! [m] 
      Rmax = 50              !! [m]
      NR = 6.d0              !! Number of radial division
!
      rrr=sqrt(real(i-51,kind(0d0))**2+real(j-51,kind(0d0))**2)
      ir=int((rrr-Rmin)/(Rmax-Rmin)*NR)
      alpR=2.d0*pi/dble(Ndiv)*dble(mod(ir,2))
      data(i,j)=U0*(1.d0+amp*dsin(0.5d0*Ndiv*th+alp+alpR))
      write(10) data(i,j)
   end do
end do

stop
end program test

, но есть какая-то ошибка, я не мог понять, какчтобы решить это.

test.f90:27.10:

      data(i,j)=z
          1
Error: Rank mismatch in array reference at (1) (2/1)
test.f90:28.20:

      write(10) data(i,j)
                    1
Error: Rank mismatch in array reference at (1) (2/1)
klogin7$ gfortran test.f90
test.f90:27.10:

      data(i,j)=z
          1
Error: Rank mismatch in array reference at (1) (2/1)
test.f90:28.20:

      write(10) data(i,j)
                    1
Error: Rank mismatch in array reference at (1) (2/1)
...