GetILUDP
This routine computes ILUDP preconditioner: incomplete LU factorization with standard droppoing strategy.
Interface
- 📝 Interface 1
- Interface 2
- ◉ Close
INTERFACE
MODULE SUBROUTINE GetILUDP(obj, ALU, JLU, JU, alpha, droptol, &
& permtol, mbloc, IPERM)
TYPE(CSRMatrix_), INTENT(INOUT) :: obj
REAL(DFP), ALLOCATABLE, INTENT(INOUT) :: ALU(:)
INTEGER(I4B), ALLOCATABLE, INTENT(INOUT) :: JLU(:)
INTEGER(I4B), ALLOCATABLE, INTENT(INOUT) :: JU(:)
REAL(DFP), INTENT(IN) :: alpha
REAL(DFP), INTENT(IN) :: droptol
REAL(DFP), INTENT(IN) :: permtol
INTEGER(I4B), INTENT(IN) :: mbloc
INTEGER(I4B), ALLOCATABLE, INTENT(INOUT) :: IPERM(:)
END SUBROUTINE GetILUDP
END INTERFACE
droptolis the tolerance used for dropping elements in L and U. elements are dropped if they are .lt. norm(row) x droptol row = row being eliminatedpermtolis the tolerance ratio used for determning whether to permute two columns. Two columns are permuted only whenabs(a(i,j))*permtol .gt. abs(a (i,i))
permtol = 0 means never permute, and a good values 0.1 to 0.01]
-
mbloc, if desired, permuting can be done only within the diagonal blocks of size mbloc. Useful for PDE problems with several degrees of freedom. If feature not wanted take mbloc=n. -
ipermcontains the permutation arrays,iperm(1:n)old numbers of unknowns,iperm(n+1:2\*n)reverse permutation for new unknowns. -
abs(a(i,j)) < droptol, that is, average magnitude of elements in row i of A -
alphais diagonal compensation parameter, alph*(sum of all dropped out elements in a given row) is added to the diagonal element of U of the factorization- alph = 0 means the scheme is ILU with threshold,
- alph = 1 means the scheme is MILU with threshold.
-
droptolis Threshold parameter for dropping small terms in the factorization. During the elimination, a term a(i,j) is dropped wheneverabs (a(i,j)) .lt. droptol -
objmatrix stored in Compressed Sparse Row format. -
ALU,JLU, matrix stored in Modified Sparse Row (MSR) Format containing the L and U factors together. The diagonal (stored in ALU(1:n) ) is inverted. Each ith row of the ALU,JLU matrix contains the ith row of L (excluding the diagonal entry=1) followed by the ith row of U. -
JUinteger array of length n containing the pointers to the beginning of each row of U in the matrixALU,JLU. -
Theresholding in L and U as set by
droptol. Any element whose MAGNITUDE is less than some tolerance (relative to the abs value of diagonal element in U) is dropped.
INTERFACE
MODULE SUBROUTINE GetILUDP(obj, Pmat, alpha, droptol, &
& permtol, mbloc, IPERM)
TYPE(CSRMatrix_), INTENT(INOUT) :: obj
TYPE(CSRMatrix_), INTENT(INOUT) :: Pmat
REAL(DFP), INTENT(IN) :: alpha
REAL(DFP), INTENT(IN) :: droptol
REAL(DFP), INTENT(IN) :: permtol
INTEGER(I4B), INTENT(IN) :: mbloc
INTEGER(I4B), ALLOCATABLE, INTENT(INOUT) :: IPERM(:)
END SUBROUTINE GetILUDP
END INTERFACE
This routine is similar to interface 1, but in this interface ILU factorization is returned as an instance of CSRMatrix_.