错误:在(1)的赋值中不匹配排名0和1

时间:2016-05-17 05:14:00

标签: fortran

我在不规则网格上使用有限差分方法,这是代码的重要部分:

 IMPLICIT DOUBLE PRECISION (A-Z)
      REAL*16 IPSI,ICORR,POT(20000),VA(20000),delta1(20000),
     $delta2(20000),R(20000),a,b,d
      COMPLEX Y(20000),TY2(50000),Z(20000),PSI0(20000),RES,DPSI,C,
     $CORR,OPK
 DO I=3,NR-1
    delta1=R(I)-R(I-1)
    delta2=R(I+1)-R(I)
    a=(2/(delta1*(delta1+delta2)))
    b=(-2/(delta1*delta2))
    d=(2/(delta2*(delta1+delta2)))
    TY2(I)=((d*Z(I+1))+(b*Z(I))+(a*Z(I-1)))
 ENDDO

当我尝试编译时,我得到错误:对于a,b,d和TY2,在(1)的赋值中不兼容等级0和1。任何解决方案将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:2)

    a=(2/(delta1*(delta1+delta2)))
    b=(-2/(delta1*delta2))

以下行是非法的。右边是数组,左边是标量。

也许你忘了像delta1(I)delta1这样的索引应该是一个标量。我们无法在不了解您的代码的情况下说出来。