program height_sand
implicit none
integer tmax, nmax
real zmax, maxx
parameter (nmax=200000)
real x1(nmax),y1(nmax),z1(nmax),teta
!real d, zmax, xmax
integer t,ntot
integer i, j, id, tip(nmax)
open(unit=1,file='vmdfile.xyz')
open(unit=3,file='height.dat')
ntot=3000
tmax=51
maxx=0
zmax=0
do t=1,tmax
read(1,*)
read(1,*)
do i=1,ntot
read(1,*)tip(id),x1(id),y1(id),z1(id)
if (z1(id).gt.zmax) then
zmax=z1(id)
end if
if (x1(id).gt.maxx) then
maxx=x1(id)
end if
end do
teta=zmax/maxx
write(3,*)t,zmax,teta
end do
!110 format(I8, f15.6)
END
答案 0 :(得分:1)
这一行
read(1,*)tip(id),x1(id),y1(id),z1(id)
可能是您报告的错误的来源。在执行时id
没有给出值。如果你假设它会自动设置为0
,那么(a)你假设错了,(b)tip(0)
无论如何都是一个无效的数组元素引用,因为Fortran索引从{{1}开始(除非你专门将它们设置为显示的代码没有的另一个起始值)。
我强烈怀疑你向我们展示了一个半生不熟的代码,因为循环控制变量(1
和tmax
)没有在循环中使用。