Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r64), | intent(in) | :: | X(4) | |||
integer, | intent(in) | :: | LM(2) | |||
integer, | intent(in) | :: | IK(NetworkNumOfNodes+1) | |||
real(kind=r64), | intent(inout) | :: | AU(IK(NetworkNumOfNodes+1)) | |||
real(kind=r64), | intent(inout) | :: | AD(NetworkNumOfNodes) | |||
integer, | intent(in) | :: | FLAG |
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 FILSKY(X,LM,IK,AU,AD,FLAG)
! SUBROUTINE INFORMATION:
! AUTHOR George Walton
! DATE WRITTEN Extracted from AIRNET
! MODIFIED Lixing Gu, 2/1/04
! Revised the subroutine to meet E+ needs
! MODIFIED Lixing Gu, 6/8/05
!
! RE-ENGINEERED This subroutine is revised from FILSKY developed by George Walton, NIST
! PURPOSE OF THIS SUBROUTINE:
! This subroutine adds element array "X" to the sparse skyline matrix [A]
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! na
! USE STATEMENTS:
! na
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: LM(2) ! location matrix
INTEGER, INTENT(IN) :: IK(NetworkNumOfNodes+1) ! pointer to the top of column/row "K"
INTEGER, INTENT(IN) :: FLAG ! mode of operation
REAL(r64), INTENT(IN) :: X(4) ! element array (row-wise sequence)
! noel, GNU says the AU is indexed above its upper bound
!REAL(r64), INTENT(INOUT) :: AU(IK(NetworkNumOfNodes+1)-1) ! the upper triangle of [A] before and after factoring
REAL(r64), INTENT(INOUT) :: AU(IK(NetworkNumOfNodes+1)) ! the upper triangle of [A] before and after factoring
REAL(r64), INTENT(INOUT) :: AD(NetworkNumOfNodes) ! the main diagonal of [A] before and after factoring
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER J, K, L
! FLOW:
! K = row number, L = column number.
IF(FLAG.GT.1) THEN
K = LM(1)
L = LM(2)
IF(FLAG.EQ.4) THEN
AD(K) = AD(K)+X(1)
IF(K.LT.L) THEN
J = IK(L+1)-L+K
AU(J) = AU(J)+X(2)
ELSE
J = IK(K+1)-K+L
AU(J) = AU(J)+X(3)
END IF
AD(L) = AD(L)+X(4)
ELSE IF(FLAG.EQ.3) THEN
AD(L) = AD(L)+X(4)
ELSE IF(FLAG.EQ.2) THEN
AD(K) = AD(K)+X(1)
END IF
END IF
!
RETURN
END SUBROUTINE FILSKY