Count actual data storage used for matrix data.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_type), | intent(in) | :: | matrix |
Count data of this matrix |
Data size used by matrix
FUNCTION dbcsr_get_data_size_used(matrix) RESULT(data_size) !! Count actual data storage used for matrix data. TYPE(dbcsr_type), INTENT(IN) :: matrix !! Count data of this matrix INTEGER :: data_size !! Data size used by matrix CHARACTER(len=*), PARAMETER :: routineN = 'dbcsr_get_data_size_used' INTEGER :: blk, col, error_handle, nze, row INTEGER, DIMENSION(:), POINTER :: col_blk_sizes, row_blk_sizes !type(dbcsr_iterator_type) :: iter ! --------------------------------------------------------------------------- CALL timeset(routineN, error_handle) row_blk_sizes => dbcsr_row_block_sizes(matrix) col_blk_sizes => dbcsr_col_block_sizes(matrix) data_size = 0 !$OMP DO DO row = 1, matrix%nblkrows_total DO blk = matrix%row_p(row) + 1, matrix%row_p(row + 1) col = matrix%col_i(blk) IF (matrix%blk_p(blk) .NE. 0) THEN nze = row_blk_sizes(row)*col_blk_sizes(col) data_size = data_size + nze END IF END DO END DO !$OMP END DO CALL timestop(error_handle) END FUNCTION dbcsr_get_data_size_used