Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r64) | :: | A(NP,NP) | ||||
integer | :: | n | ||||
integer | :: | np | ||||
integer | :: | INDX(N) | ||||
real(kind=r64) | :: | B(N) |
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
SUBROUTINE LUBKSB(A,N,NP,INDX,B)
! SUBROUTINE INFORMATION:
! AUTHOR <author>
! DATE WRITTEN <date_written>
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine performs back substitution of a LU matrix.
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! na
! USE STATEMENTS:
! na
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
integer n,np
REAL(r64) A(NP,NP),B(N)
INTEGER INDX(N)
! na
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
! na
integer j,i,ii,LL
REAL(r64) sum
II=0
DO I=1,N
LL=INDX(I)
SUM=B(LL)
B(LL)=B(I)
IF (II.NE.0)THEN
DO J=II,I-1
SUM=SUM-A(I,J)*B(J)
ENDDO
ELSE IF (SUM.NE.0.0d0) THEN
II=I
ENDIF
B(I)=SUM
ENDDO
DO I=N,1,-1
SUM=B(I)
IF(I.LT.N)THEN
DO J=I+1,N
SUM=SUM-A(I,J)*B(J)
ENDDO
ENDIF
B(I)=SUM/A(I,I)
ENDDO
RETURN
END SUBROUTINE LUBKSB