我不知道为什么一个变量数组在循环

时间:2018-02-27 01:50:17

标签: arrays types fortran

请看下面的代码,

program hw1

implicit none

real, parameter :: G =1.4
integer :: i, j 
real :: Mii
real, dimension(3) :: cf
real, dimension(96,3):: L_D
real, dimension(96) :: Mi
real :: test
cf=(/0.003,0.004,0.005/)
Mii=0.5
i=0

do while (Mii .le. 10.1)
    Mi(i)=Mii
    i=i+1
    Mii=Mii+0.1
end do 

10 format(f2.1, 5x, f2.5)
open (unit =1,file="L_D_1.txt")
do i=0,2
    do j=0,size(Mi)-1
    print *, Mi(j)
    L_D(j,i)=((1-Mi(j)**2))!/(G*Mi(j)**2)+(G+1)/(2*G)*log((G+1)*Mi(j)**2/(2+(G-1)*Mi(j)**2)))/(4*cf(i))
    end do
end do
end program hw1

如果你看一下包含L_D的行,它基本上只是在从Mi数组值计算其值后更新L_D数组。问题是Mi阵列在第一个第i个循环之后以某种方式得到更新,即使我没有更新Mi阵列本身的任何行。例如,当j = 0时,我应该得到Mi = 0.5,当j = 1时,Mi = 0.6,依此类推。但是在第一个第i个循环(i = 0)之后,当i变为1时,Mi数组得到更新,Mi(0)(对应于j = 0)以某种方式变为0.75。

我可以用其他语言编写代码,但是为什么它不能用于fortran。

0 个答案:

没有答案