【发布时间】:2016-05-17 05:13:59
【问题描述】:
我在不规则网格上使用有限差分法,这是代码的重要部分:
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
当我尝试编译时,我得到了错误:在 (1) 的 a、b、d 和 TY2 的赋值中不兼容排名 0 和 1。任何解决方案将不胜感激。谢谢!
【问题讨论】:
-
如果你把这样的代码写成新代码,我强烈建议你改变你的风格。这不是 1982 年。您的索引是隐含的两倍。您正在混合单一复数、双重和四重实数。一团糟。
-
我回滚到现有答案所基于的原始问题。您的新代码完全不同。如果您根据答案更改代码但仍有问题,您应该提出一个新问题。但是,在提出新问题之前,请确保使用
IMPLICIT NONE。在没有IMPLICIT NONE的情况下尝试发布这么长的代码是毫无价值的。这是必不可少的。
标签: fortran