create a vector containing the number of non-zero elements in each row of a CSR matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(csr_type), | intent(in) | :: | csr_mat |
CSR matrix |
||
integer, | intent(inout), | DIMENSION(:), POINTER | :: | nzerow |
number of non-zero elements in each row |
SUBROUTINE csr_create_nzerow(csr_mat, nzerow)
!! create a vector containing the number of non-zero elements in each
!! row of a CSR matrix
TYPE(csr_type), INTENT(IN) :: csr_mat
!! CSR matrix
INTEGER, DIMENSION(:), INTENT(INOUT), POINTER :: nzerow
!! number of non-zero elements in each row
CHARACTER(LEN=*), PARAMETER :: routineN = 'csr_create_nzerow'
INTEGER :: handle, k
CALL timeset(routineN, handle)
IF (.NOT. csr_mat%valid) &
DBCSR_ABORT("CSR matrix must be created.")
DO k = 1, csr_mat%nrows_local
nzerow(k) = csr_mat%rowptr_local(k + 1) - csr_mat%rowptr_local(k)
END DO
CALL timestop(handle)
END SUBROUTINE csr_create_nzerow