12345678910111213141516171819202122232425262728293031323334353637383940 |
- SUBROUTINE MATINV(A,NLD,NB)
- C ======================================================
- C COMPUTES THE INVERSE OF A MATRIX A
- C
- C PARAMETERS:
- C -----------
- C A (INPUT/OUTPUT): ON INPUT THE MATRIX TO INVERSE
- C AND ON OUTPUT THE RESULT
- C NB (INPUT): THE DIMENSION OF MATRXI A IS NB x NB
- C NLD: LEADING DIMENSION OF A
- C
- C NOTE : USES LAPACK SUBROUTINES "DGETRF" AND "DGETRI"
- C ======================================================
- INTEGER IPIV,INFO,LDA
- REAL*8 WORK
- INTEGER I,J,NB
- REAL*8 A(NLD,*)
- PARAMETER(IWORK=1000)
- DIMENSION WORK(IWORK)
- DIMENSION IPIV(NB)
- LDA=NB
- C ****************
- C LU decomposition
- C DGETRF : a lapack subroutine
- C ****************
- CALL DGETRF(NB,NB,A,NLD,IPIV,INFO)
- IF (INFO.NE.0) THEN
- PRINT *, "Echec dans la décomposition LU"
- ENDIF
- C *****************************************
- C Invert from LU decomposition
- C DGETRI: a lapack subroutine
- C *****************************************
- CALL DGETRI(NB,A,NLD,IPIV,WORK,IWORK,INFO)
- IF (INFO.NE.0) THEN
- PRINT *, "Echec dans l'inversion de la matrice"
- ENDIF
- RETURN
- ENDSUBROUTINE
|