Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 错误:(1)处数组引用中的秩不匹配(2/1)_Fortran - Fatal编程技术网

Fortran 错误:(1)处数组引用中的秩不匹配(2/1)

Fortran 错误:(1)处数组引用中的秩不匹配(2/1),fortran,Fortran,我恳请您在我不断得到的代码上给予帮助 错误:数组引用在(1)(2/1)处的秩不匹配。。我的目标是通过立方体中的每个点(p=i+(j-1)*N+(k-1)NN)并计算沿每个轴的电势梯度(gradphi_x,gradphi_y,gradphi_z) 您已将x、y和z声明为一维数组,但通过output@Talonies一直使用二维索引非常感谢您,在通过帮助整型、维度(N3,3)确定排名后:x整型、维度(N3,3)::y整型、维度(N**3,3)::z它运行,但给出了一种新的错误:非法指令。我正在努力修

我恳请您在我不断得到的代码上给予帮助 错误:
数组引用在(1)(2/1)处的秩不匹配。
。我的目标是通过立方体中的每个点(p=i+(j-1)*N+(k-1)NN)并计算沿每个轴的电势梯度(
gradphi_x
gradphi_y
gradphi_z


您已将
x
y
z
声明为一维数组,但通过
output

@Talonies一直使用二维索引非常感谢您,在通过帮助整型、维度(N3,3)确定排名后:x整型、维度(N3,3)::y整型、维度(N**3,3)::z它运行,但给出了一种新的错误:非法指令。我正在努力修复它。干杯!
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