dgesv (1)

2
INTEGER N,NRHS PARAMETER (N=5,NRHS=3) INTEGER LDA,LDB PARAMETER (LDA=N,LDB=N) INTEGER INFO INTEGER IPIV(N) DOUBLE PRECISION A (LDA,N),B(LDB,NRHS) EXTERNAL DGESV EXTERNAL PRINT_MATRIX,PRINT_INT_VECTOR WRITE (*,*) 'DGESV EXAMPLE PROGRAM RESULTS' CALL DGESV (N,NRHS,A,LDA,IPIV,B,LD B,INFO) IF (INFO.GT.0) then  WRITE (*,*) 'THE DIAGNOL ELEMENT OF THE TRIANGULAR FACTOR OF A,'  WRITE (*,*) 'U(',INFO,',',INFO,')I S ZERO, SO THAT'  WRITE (*,*) 'A IS SINGULAR;THE SOLUTION COULD NOT BE COMPUTED.'  stop  END if  CALL PRINT_MATRIX('SOLUTION',N ,NRHS,B,LDB)  CALL PRINT_MATRIX('DETAILS OF LU FACTORIZATION',N,N,A,LDA)  CALL PRINT_INT_VECTOR ('PIVOT INDICES',N,IPIV)  stop  end  SUBROUTINE PRINT_MATRIX (DESC,M,N,A,LDA)  CHARACTER *(*) DESC  INTEGER M,N,LDA  DOUBLE PRECISION A(LDA,*)  INTEGER I,J  WRITE (*,*)  WRITE (*,*) DESC  DO I=1,M WRITE (*,9998) (A(I,J),J=1,N)  END do  9998 FORMAT (11(:1X,F6.2))  return  END  SUBROUTINE PRINT_INT_VECTOR (DESC,N,A)  CHARACTER *(*) DESC  INTEGER N  INTEGER A(N)  INTEGER I  WRITE (*,*)  WRITE (*,*) DESC  WRITE (*,9999) (A(I),I=1,N)  9999 FORMAT (11(:,1X,I6))  return  end

Upload: paramarraj333

Post on 06-Mar-2016

3 views

Category:

Documents


0 download

DESCRIPTION

Contains the code to solve heat equation in 1 d and this type of code is generally used in fortran software and it makes the coding shorter and easier to run and less time consuming................................................................................................................

TRANSCRIPT

7/21/2019 dgesv (1)

http://slidepdf.com/reader/full/dgesv-1 1/1

INTEGER N,NRHSPARAMETER (N=5,NRHS=3)INTEGER LDA,LDBPARAMETER (LDA=N,LDB=N)

INTEGER INFOINTEGER IPIV(N)DOUBLE PRECISION A (LDA,N),B(LDB,NRHS)

EXTERNAL DGESVEXTERNAL PRINT_MATRIX,PRINT_INT_VECTORWRITE (*,*) 'DGESV EXAMPLE PROGRAM RESULTS'

CALL DGESV (N,NRHS,A,LDA,IPIV,B,LDB,INFO)IF (INFO.GT.0) then  WRITE (*,*) 'THE DIAGNOL ELEMENT OF THE TRIANGULAR FACTOR OF A,'  WRITE (*,*) 'U(',INFO,',',INFO,')IS ZERO, SO THAT'  WRITE (*,*) 'A IS SINGULAR;THE SOLUTION COULD NOT BE COMPUTED.'  stop  END if

  CALL PRINT_MATRIX('SOLUTION',N,NRHS,B,LDB)  CALL PRINT_MATRIX('DETAILS OF LU FACTORIZATION',N,N,A,LDA)  CALL PRINT_INT_VECTOR ('PIVOT INDICES',N,IPIV)

  stop  end

  SUBROUTINE PRINT_MATRIX (DESC,M,N,A,LDA)  CHARACTER *(*) DESC  INTEGER M,N,LDA  DOUBLE PRECISION A(LDA,*)

  INTEGER I,J  WRITE (*,*)  WRITE (*,*) DESC  DO I=1,M  WRITE (*,9998) (A(I,J),J=1,N)

  END do  9998 FORMAT (11(:1X,F6.2))  return  END SUBROUTINE PRINT_INT_VECTOR (DESC,N,A)  CHARACTER *(*) DESC  INTEGER N  INTEGER A(N)  INTEGER I

  WRITE (*,*)  WRITE (*,*) DESC  WRITE (*,9999) (A(I),I=1,N)

  9999 FORMAT (11(:,1X,I6))  return  end