我为毕业论文编写的程序有问题。
我正在使用一个计算一些流量问题的代码,现在我正在向它添加一个应用程序。
为此,我需要一个矩阵并从旧代码中获取它。
这被称为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
希望有人可以帮助我!