DAPPLY_ILU_UDIA_L (job, plu, iplu, ndim, nz, x, y, n)
job integer*4 On entry, defines the operation to be performed: job = 0 : y = inverse(L) * x job = 1 : y = inverse(transp(L)) * x where the incomplete factorization is calculated as L * U. L and U are lower and upper triangular matrices, respectively. On exit, job is unchanged. plu real*8 On entry, a two-dimensional array with dimensions ndim by nz, containing information for use by the ILU preconditioner. On exit, plu is unchanged. iplu integer*4 On entry, a one-dimensional array of length at least nz, containing the distances of the diagonals of PLU from the main diagonal. On exit, iplu is unchanged. ndim integer*4 On entry, the leading dimension of array A, as declared in the calling subprogram; ndim >= n. On exit, ndim is unchanged. nz integer*4 On entry, the number of diagonals stored in array PLU. On exit, nz is unchanged. x real*8 On entry, a one-dimensional array of length at least n, containing the elements of vector x, accessed with unit increment. On exit, x is unchanged. y real*8 On entry, a one-dimensional array of length at least n. On exit, array Y is overwritten by the output vector y. The elements of array Y are accessed with unit increment. n integer*4 On entry, the order of the matrix A. On exit, n is unchanged.
DAPPLY_ILU_UDIA_L applies the Incomplete LU preconditioner (lower triangular part) for a sparse matrix stored using the unsymmetric diagonal storage scheme. The input arrays, PLU and IPLU, contain information for use by the routine. These arrays are generated by a call to the routine DCREATE_ILU_UDIA prior to a call to one of the solvers with Incomplete LU preconditioning. Depending on the value of the input parameter job, DAPPLY_ILU_UDIA_L operates on either the matrix or its transpose.