<no value =“”>出现在idb中</no>

时间:2013-07-27 09:37:18

标签: debugging fortran90

我正在为我的毕业论文写作的课程有问题。

我正在使用一个计算一些流问题的代码,现在我正在添加一个应用程序。

为此我需要一个矩阵并从旧代码中获取它。

这称为AA_save_SPreal(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

希望有人可以帮助我!

1 个答案:

答案 0 :(得分:0)

谢谢,我找到了解决方案。我刚插入:matrix_solve(1:n,1:2 * n)= 0.在matrix_solve之前(1:n,1:n)= matrix_in(1:n,1:n)

现在它有效,我不知道为什么我必须首先将零写入矩阵,但它有效......