1
我正在爲我的畢業論文寫作的程序有問題。<no value>出現在IDB
我正在使用一個代碼來計算一些流量問題,現在我正在給它添加一個應用程序。
爲此,我需要一個矩陣並從舊代碼中獲取它。
這叫做AA_save_SP
,是real(sp)
。
我想反轉矩陣並將其作爲matrix_in
(也ral(sp)
和size(n,n)
)作爲子程序。
在該子程序中,我定義了一個名爲matrix_solve的新矩陣,它是real(sp)
,其大小爲(n,2*n)
。
從idb中,我收到消息:"Program received signal SIGSEGV"
,如果我查找Matrix中的值,他們是<no value>
。
所以我沒有做任何與矩陣和所有其他時間我定義了一個變量,它工作正常,我從來沒有這個問題。
子程序:
SUBROUTINE BL3D_LIB_invert_matrix(matrix_in,n,matrix_invert)
! Parameter
! Arguments
REAL , INTENT(IN ) :: matrix_in(n,n)
INTEGER , INTENT(IN ) :: n
REAL , INTENT( OUT) :: matrix_invert(n,n)
! Locals
REAL :: matrix_solve(n,2*n)
INTEGER :: k, i
matrix_solve(1:n,1:n) = matrix_in(1:n,1:n)
matrix_solve(1:n,n+1:2*n) = 0.
DO i = 1, n
matrix_solve(i,n+i) = -1.
END DO
call math_solve(matrix_solve,n,n,k,1.e-12_sp)
IF (k.eq.0) THEN
matrix_invert(1:n,1:n) = matrix_solve(1:n,n+1:2*n)
ELSE
WRITE (*,*) "Fehler beim invertieren der Koeff.-Matrix."
END IF
END SUBROUTINE BL3D_LIB_invert_matrix
希望有一個人誰可以幫幫我!
我不能馬上看到你的子程序有什麼問題。告訴我們你是怎樣稱呼它的,最好是發佈儘可能少的代碼,這是可編譯的,哪些(重新)產生錯誤。 –
嘗試在'call math_solve(...)'之前和之後嘗試打印'matrix_solve'來查看是否可能導致了這個子程序的問題。但肯定會有更多的信息需要。 –