我在不规则网格上使用有限差分方法,这是代码的重要部分:
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。任何解决方案将不胜感激。谢谢!
答案 0 :(得分:2)
a=(2/(delta1*(delta1+delta2)))
b=(-2/(delta1*delta2))
以下行是非法的。右边是数组,左边是标量。
也许你忘了像delta1(I)
或delta1
这样的索引应该是一个标量。我们无法在不了解您的代码的情况下说出来。