Я совершенно новый в Фортране, и только что получил программу от PhD. Он используется для подсчета количества бусинок на определенных гистограммах. Вот код:Fortran 90 rank несоответствие
program xrdf
implicit none
include 'currentconf.fi'
real drdf,rdf12(200)
real xni12, Zface
integer ibead,iconf,ii,io,i,j,k,linecount
integer mchains, iendbead, nstart
logical ifend
Zface=1.5
mchains=49
drdf=0.1
xni12=0.
io=10
nstart=12636
open(file='pcushion.tr.xmol',unit=io)
do i=1,200
rdf12(i)=0.0
end do
ifend=.false.
do iconf=1,1000000
! reading current frame
ii=iconf
call readconf(io,ii,linecount,ifend)
write(*,*)' conf ',iconf,' N=',n
if (ifend) go to 777
! if trajectory ended, exit loop
ibead=0
do i=1,mchains
iendbead=nstart+i*45
dz=abs(Zface-z(iendbead))
ii=int(dz/drdf)+1
rdf12(ii)=rdf12(ii)+1
xni12=xni12+1.0
end do
end do !iconf
777 write(*,*)' total ',iconf-1,' frames '
write(*,*)' r rho(z) '
do i=1,200
write(*,'(f10.4,e15.7)')(i-0.5)*drdf,rdf12(i)/xni12
end do
close(io)
stop
end
Потому что я действительно не знаю, какая часть не так, поэтому я просто пропустил весь код здесь. Когда я компилирую эту программу, наступает ошибка:
i=int(dz/drdf)+1
1
Error: Incompatible ranks 0 and 1 in assignment at (1)
Как я могу отредактировать программу, чтобы ее исправить?
@ user814064 кандидатской сказал мне, программа будет автоматически считывать эти данные в файле pcushion.tr.xmol. Предположим, что'z (10) ', то программа найдет конкретное значение из этого файла. –
Вы объявляете 'implicit none' в начале программы, что означает, что все переменные должны быть объявлены, но я не вижу, где объявлен массив' z() 'или где объявлен' dz'. Я что-то упускаю? –
@PeterM: мое предположение заключается в том, что оно содержится в строке 'include 'currentconf.fi''. –