2016-05-17 53 views
0

我在一個有限差分法工作的不規則柵格分配1,這是代碼的重要組成部分:錯誤:不兼容的行列0和在(1)

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。任何解決方案將不勝感激。謝謝!

+4

如果你把這樣的代碼寫成新代碼,我強烈建議你改變你的風格。這不是1982年。你的指數隱含地加倍。你正在混合單複雜,雙重和四重實數。一塌糊塗。 –

+0

我回到你原來的問題,現有的答案是基於這個問題。你的新代碼是完全不同的。如果您根據答案更改代碼並仍然存在問題,則應該提出一個新問題。然而,在問一個新問題之前,請確保使用'IMPLICIT NONE'。經過這麼長的代碼,你試圖在沒有「IMPLICIT NONE」的情況下發布是毫無價值的。這是**必不可少**。 –

回答

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

和以下行是非法的。在右邊你有數組,在左邊是一個標量。

也許你忘了一些索引,如delta1(I)delta1應該是一個標量。我們不能不知道更多關於你的代碼。

+0

對不起,我是編程新手。我把其餘的代碼放在問題中。你不知道我多麼感謝你的反饋。謝謝! –

+0

@Kev_mad現在你的代碼是完全不同的,我的回答沒有意義。您更改了聲明部分。你不應該這樣做!閱讀http://meta.stackoverflow.com/a/309245/721644您也不會報告編譯器報告錯誤的哪一行。誰應該找到這樣一個大亂碼? –