2016-08-24 16 views
-1

をI次のサブルーチンを持っている:私はコマンドを使用して、次のサブルーチンを使用してそれを呼び出すプログラムはシグナルSIGABRTを受けた:プロセスが中止信号

SUBROUTINE UNITARYEVOLUTION(X,Z) 
IMPLICIT NONE 
COMPLEX(KIND = DBL), DIMENSION(DIMMAT,1), INTENT(IN) :: X 
COMPLEX(KIND = DBL),DIMENSION(DIMMAT,1),INTENT(OUT)::Z 
COMPLEX(KIND = DBL), DIMENSION(DIMSYS,DIMSYS) :: TEMP1 
COMPLEX(KIND = DBL), DIMENSION(DIMSYS,DIMSYS) :: TEMP2 
COMPLEX(KIND = DBL), DIMENSION(DIMSYS,DIMSYS) :: TEMP3 
COMPLEX(KIND = DBL), DIMENSION(DIMSYS,DIMSYS) :: TEMP4 
COMPLEX(KIND = DBL), DIMENSION(DIMSYS,DIMSYS) :: TEMP5 
COMPLEX(KIND = DBL), DIMENSION(DIMSYS,DIMSYS) :: TEMP6 
COMPLEX(KIND = DBL), DIMENSION(DIMSYS,DIMSYS) :: TEMP7 
COMPLEX(KIND = DBL), DIMENSION(DIMSYS,DIMSYS) :: TEMP8 
COMPLEX(KIND = DBL), DIMENSION(DIMSYS,DIMSYS) :: UNITARY 
COMPLEX(KIND = DBL), DIMENSION(DIMSYS,DIMSYS) :: UNITARYCONJ 
REAL(KIND = DBL) :: T 
INTEGER :: E,F,G,H,I,J 
REAL(KIND = DBL) :: ALPHA = SQRT(2.0D0**2.0D0 + 2.0D0**2.0D0) 
TEMP1 = COS((ALPHA*T)/2)*ID 
TEMP2 = SIN((ALPHA*T)/2)*(ENERGYGAP/ALPHA)*SIGMAZ 
TEMP3 = SIN((ALPHA*T)/2)*(DELTA/ALPHA)*SIGMAX 
TEMP4 = TEMP2 + TEMP3 
UNITARY = TEMP1 - IMU*TEMP4 
UNITARYCONJ = TEMP1 + IMU*TEMP4 
DO E = 1, DIMMAT 
CALL INDEXCONVERTER(E,F,G) 
TEMP5(F,G) = X(E,1) 
END DO 
TEMP6 = matmul(UNITARYCONJ,TEMP5) 
TEMP7 = matmul(TEMP6,UNITARY) 
DO H = 1, DIMSYS 
    DO I = 1, DIMSYS 
     CALL INVERSE(H,I,J) 
     TEMP8(J,1) = TEMP7(H,I) 
    END DO 
    END DO 
    Z = TEMP8 
    END SUBROUTINE UNITARYEVOLUTION 

CALL UNITARYEVOLUTION(X,Z) 

私は次のエラーを取得:

Program received signal SIGABRT: Process abort signal. 

Backtrace for this error: 
#0 0xFFFFFFFFFFFFFFFF 
#1 0xFFFFFFFFFFFFFFFF 
#2 0xFFFFFFFFFFFFFFFF 
#3 0xFFFFFFFFFFFFFFFF 
#4 0xFFFFFFFFFFFFFFFF 
#5 0xFFFFFFFFFFFFFFFF 
#6 0xFFFFFFFFFFFFFFFF 
#7 0xFFFFFFFFFFFFFFFF 
#8 0xFFFFFFFFFFFFFFFF 
#9 0xFFFFFFFFFFFFFFFF 
#10 0xFFFFFFFFFFFFFFFF 
#11 0xFFFFFFFFFFFFFFFF 
Aborted (core dumped) 

コードは正しくコンパイルされますが、./a.exe comを実行するとマンド私はこれらのエラーを取得します。考えられるエラーの原因は?

CALL UNITARYEVOLUTION(X,Z),を削除すると、すべて正しくコンパイルされます。


編集:

私は-Wall -fcheck=all,gfortranを実行すると、私はエラーにコード内のほぼすべての行の

Nonconforming tab character at (1) [-Wtabs]

を取得します。

+0

タイプ nm code.o -Wtabsは空白である可能性がありますか?空欄とコードの開始は列7にありますか?それともフリーフォームですか? 私は 'rm a.out'と新鮮な開始します。 – Holmz

+0

すべてのFortran質問にタグfortranを使用します。あなたはもっと注目を集めるでしょう。 –

答えて

-1

Nonconforming tab character at (1) [-Wtabs]は、コードに挿入したタブを表します。 Fortranはタブを空白として認識しません。 -Wtabsオプションでコンパイルしてみるか、タブを削除して代わりに空白を入れてください。

+2

私はOPがクラッシュをより心配していたと思う。 –

関連する問題