Skip to main content

SuperluLinSolve

Interface

INTERFACE
MODULE SUBROUTINE LinSolve1(X, A, B, isTranspose, isFactored, &
& ColPerm, Equil, IterRefine, PivotGrowth, DiagPivotThresh, &
& ConditionNumber, SymmetricMode, PrintStat, info)
REAL(DFP), INTENT(INOUT) :: X(:)
!! Solution
TYPE(CSRMatrix_), INTENT(INOUT) :: A
!! CSRMatrix
REAL(DFP), INTENT(IN) :: B(:)
!! RHS, it will not be modified, we will make a copy of it
LOGICAL(LGT), OPTIONAL, INTENT(IN) :: isTranspose
!! Should we solve `A*X=B` or `transpose(A)*X=B`
LOGICAL(LGT), OPTIONAL, INTENT(IN) :: isFactored
!! is A already factored
INTEGER(I4B), OPTIONAL, INTENT(IN) :: ColPerm
!! Colperm_t%NATURAL
!! Colperm_t%MMD_ATA
!! Colperm_t%MMD_AT_PLUS_A
!! Colperm_t%COLAMD
!! Colperm_t%MY_PERMC
INTEGER(I4B), OPTIONAL, INTENT(IN) :: Equil
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(IN) :: IterRefine
!! IterRefine_t%NO
!! IterRefine_t%SLU_SINGLE
!! IterRefine_t%SLU_DOUBLE
!! IterRefine_t%SLU_EXTRA
INTEGER(I4B), OPTIONAL, INTENT(IN) :: PivotGrowth
!! yes_no_t%YES
!! yes_no_t%NO
REAL(DFP), OPTIONAL, INTENT(IN) :: DiagPivotThresh
!! between 0 and 1
INTEGER(I4B), OPTIONAL, INTENT(IN) :: ConditionNumber
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(IN) :: SymmetricMode
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(IN) :: PrintStat
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(OUT) :: info
!! if info equal to zero then success, else failure
END SUBROUTINE LinSolve1
END INTERFACE
INTERFACE
MODULE SUBROUTINE LinSolve2(X, A, B, isTranspose, isFactored, &
& ColPerm, Equil, IterRefine, PivotGrowth, DiagPivotThresh, &
& ConditionNumber, SymmetricMode, PrintStat, info)
REAL(DFP), INTENT(INOUT) :: X(:, :)
!! Solution
TYPE(CSRMatrix_), INTENT(INOUT) :: A
!! CSRMatrix
REAL(DFP), INTENT(IN) :: B(:, :)
!! RHS, it will not be modified, we will make a copy of it
LOGICAL(LGT), OPTIONAL, INTENT(IN) :: isTranspose
!! Should we solve `A*X=B` or `transpose(A)*X=B`
LOGICAL(LGT), OPTIONAL, INTENT(IN) :: isFactored
!! is A already factored
INTEGER(I4B), OPTIONAL, INTENT(IN) :: ColPerm
!! Colperm_t%NATURAL
!! Colperm_t%MMD_ATA
!! Colperm_t%MMD_AT_PLUS_A
!! Colperm_t%COLAMD
!! Colperm_t%MY_PERMC
INTEGER(I4B), OPTIONAL, INTENT(IN) :: Equil
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(IN) :: IterRefine
!! IterRefine_t%NO
!! IterRefine_t%SLU_SINGLE
!! IterRefine_t%SLU_DOUBLE
!! IterRefine_t%SLU_EXTRA
INTEGER(I4B), OPTIONAL, INTENT(IN) :: PivotGrowth
!! yes_no_t%YES
!! yes_no_t%NO
REAL(DFP), OPTIONAL, INTENT(IN) :: DiagPivotThresh
!! between 0 and 1
INTEGER(I4B), OPTIONAL, INTENT(IN) :: ConditionNumber
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(IN) :: SymmetricMode
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(IN) :: PrintStat
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(OUT) :: info
!! if info equal to zero then success, else failure
END SUBROUTINE LinSolve2
END INTERFACE

INTERFACE
MODULE SUBROUTINE LinSolve3(A, B, isTranspose, isFactored, &
& ColPerm, Equil, IterRefine, PivotGrowth, DiagPivotThresh, &
& ConditionNumber, SymmetricMode, PrintStat, info)
TYPE(CSRMatrix_), INTENT(INOUT) :: A
!! CSRMatrix
REAL(DFP), INTENT(INOUT) :: B(:)
!! RHS, it will not be modified, we will make a copy of it
LOGICAL(LGT), OPTIONAL, INTENT(IN) :: isTranspose
!! Should we solve `A*X=B` or `transpose(A)*X=B`
LOGICAL(LGT), OPTIONAL, INTENT(IN) :: isFactored
!! is A already factored
INTEGER(I4B), OPTIONAL, INTENT(IN) :: ColPerm
!! Colperm_t%NATURAL
!! Colperm_t%MMD_ATA
!! Colperm_t%MMD_AT_PLUS_A
!! Colperm_t%COLAMD
!! Colperm_t%MY_PERMC
INTEGER(I4B), OPTIONAL, INTENT(IN) :: Equil
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(IN) :: IterRefine
!! IterRefine_t%NO
!! IterRefine_t%SLU_SINGLE
!! IterRefine_t%SLU_DOUBLE
!! IterRefine_t%SLU_EXTRA
INTEGER(I4B), OPTIONAL, INTENT(IN) :: PivotGrowth
!! yes_no_t%YES
!! yes_no_t%NO
REAL(DFP), OPTIONAL, INTENT(IN) :: DiagPivotThresh
!! between 0 and 1
INTEGER(I4B), OPTIONAL, INTENT(IN) :: ConditionNumber
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(IN) :: SymmetricMode
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(IN) :: PrintStat
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(OUT) :: info
!! if info equal to zero then success, else failure
END SUBROUTINE LinSolve3
END INTERFACE
INTERFACE
MODULE SUBROUTINE LinSolve4(A, B, isTranspose, isFactored, &
& ColPerm, Equil, IterRefine, PivotGrowth, DiagPivotThresh, &
& ConditionNumber, SymmetricMode, PrintStat, info)
TYPE(CSRMatrix_), INTENT(INOUT) :: A
!! CSRMatrix
REAL(DFP), INTENT(INOUT) :: B(:, :)
!! RHS, it will be modified on return, solution is in B
LOGICAL(LGT), OPTIONAL, INTENT(IN) :: isTranspose
!! Should we solve `A*X=B` or `transpose(A)*X=B`
LOGICAL(LGT), OPTIONAL, INTENT(IN) :: isFactored
!! is A already factored
INTEGER(I4B), OPTIONAL, INTENT(IN) :: ColPerm
!! Colperm_t%NATURAL
!! Colperm_t%MMD_ATA
!! Colperm_t%MMD_AT_PLUS_A
!! Colperm_t%COLAMD
!! Colperm_t%MY_PERMC
INTEGER(I4B), OPTIONAL, INTENT(IN) :: Equil
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(IN) :: IterRefine
!! IterRefine_t%NO
!! IterRefine_t%SLU_SINGLE
!! IterRefine_t%SLU_DOUBLE
!! IterRefine_t%SLU_EXTRA
INTEGER(I4B), OPTIONAL, INTENT(IN) :: PivotGrowth
!! yes_no_t%YES
!! yes_no_t%NO
REAL(DFP), OPTIONAL, INTENT(IN) :: DiagPivotThresh
!! between 0 and 1
INTEGER(I4B), OPTIONAL, INTENT(IN) :: ConditionNumber
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(IN) :: SymmetricMode
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(IN) :: PrintStat
!! yes_no_t%YES
!! yes_no_t%NO
INTEGER(I4B), OPTIONAL, INTENT(OUT) :: info
!! if info equal to zero then success, else failure
END SUBROUTINE LinSolve4
END INTERFACE