を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]
を取得します。
タイプ nm code.o -Wtabsは空白である可能性がありますか?空欄とコードの開始は列7にありますか?それともフリーフォームですか? 私は 'rm a.out'と新鮮な開始します。 – Holmz
すべてのFortran質問にタグfortranを使用します。あなたはもっと注目を集めるでしょう。 –