1
このコードで助けを要求しています: エラー:(1)(2/1)の配列参照のランクミスマッチ。そして、私の目的は、立方体(p = i +(j-1)* N +(k-1)* N * N)内の各点を通過し、各軸に沿った電位の勾配(gradphi_x、gradphi_y、gradphi_z )。エラー:配列参照のランクミスマッチが(1)(2/1)
PROGRAM sub_rho_phi
integer, parameter:: N=3
real, dimension(N):: gradphi_x, gradphi_y, gradphi_z
call output(gradphi_x, gradphi_y, gradphi_z)
open(unit=1,file="grad_phi.dat")
l = 0
do
l=l+1
write(1,*) gradphi_x(l),gradphi_y(l),gradphi_z(l)
if (l == N**3) then
exit
end if
end do
END
SUBROUTINE output(gradphi_x, gradphi_y, gradphi_z)
real, parameter:: h=0.7,G=6.67,M=1.98892*(10**3)!!in(10**15) kg
integer, parameter:: N=3
real, dimension(N):: r, gradphi_x,gradphi_y,gradphi_z
integer, dimension(N**3):: x,y,z
integer:: p
real:: a
a=500/h !in kpc
do i=0, N
do j=0, N
do k=0, N
p = i+(j-1)*N + (k-1)*N*N
x(p,1)=i
y(p,2)=j
z(p,3)=k
r(p)=sqrt(x(p,1)*x(p,1)+y(p,2)*y(p,2)+z(p,3)*z(p,3))
gradphi_x(p)=(G*M)*x(p,1)/r(p)*(r(p)+a)**2
gradphi_y(p)=(G*M)*y(p,2)/r(p)*(r(p)+a)**2
gradphi_z(p)=(G*M)*z(p,3)/r(p)*(r(p)+a)**2
enddo
enddo
enddo
return
END
@ talonmies非常に、ヘルプ整数、次元(N ** 3,3):: x 整数、次元(N ** 3,3):: y 整数、次元(N ** 3,3):: z 実行されますが、新しい種類のエラーが発生します。不正な命令。私はこれを修正するために取り組んでいます。乾杯! – user1132506