An iterator over a DBCSR matrix.
Note
This is briefly changed to allow being included in the dbcsr_type type What is written here is what the structure should be and not what it is.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(dbcsr_type), | public, | POINTER | :: | matrix | => | Null() |
the matrix |
type(dbcsr_block_buffer_obj), | public | :: | buffer_2d | = | dbcsr_block_buffer_obj() |
Buffers for repointing 2d pointers (1 per thread) |
|
integer, | public | :: | pos | = | -1 |
Current position (per thread) |
|
integer, | public | :: | row | = | -1 |
Current row (per thread) |
|
integer, | public | :: | row_size | = | -1 |
Size of current row |
|
integer, | public | :: | row_offset | = | -1 | ||
integer, | public, | DIMENSION(:), POINTER | :: | rbs | => | Null() |
Pointer to row size array |
integer, | public, | DIMENSION(:), POINTER | :: | cbs | => | Null() |
Pointer to column size array |
integer, | public, | DIMENSION(:), POINTER | :: | roff | => | Null() |
Pointer to row offset array |
integer, | public, | DIMENSION(:), POINTER | :: | coff | => | Null() |
Pointer to column offset array |
logical, | public | :: | local_indexing | = | .FALSE. |
The matrix has local indexing |
|
logical, | public | :: | contiguous_pointers | = | .FALSE. |
Whether pointers to data should be contiguous in memory. |
|
logical, | public | :: | transpose | = | .FALSE. | ||
logical, | public | :: | read_only | = | .FALSE. | ||
logical, | public | :: | shared | = | .FALSE. |
Iterators share matrix |
|
logical, | public | :: | dynamic | = | .FALSE. |
Ignores the thread distribution (FCFS by block) |
|
logical, | public | :: | dynamic_byrows | = | .FALSE. |
Ignores the thread distribution (FCFS by row) |
|
integer, | public, | POINTER | :: | common_pos | => | Null() |
Position when in mixed mode (row or block depending in dynamic_byrows |
integer, | public | :: | nblks | = | -1 | ||
integer, | public | :: | nblkrows_total | = | -1 | ||
integer, | public, | DIMENSION(:), POINTER | :: | row_p | => | Null() | |
integer, | public, | DIMENSION(:), POINTER | :: | col_i | => | Null() | |
integer, | public, | DIMENSION(:), POINTER | :: | blk_p | => | Null() | |
integer, | public, | DIMENSION(:), POINTER, CONTIGUOUS | :: | tdist | => | Null() | |
integer, | public, | DIMENSION(:), POINTER, CONTIGUOUS | :: | local_rows | => | Null() |
Mapping of local rows to global rows (if local indexing is enabled) |
integer, | public, | DIMENSION(:), POINTER, CONTIGUOUS | :: | global_rows | => | Null() |
Mapping of global rows to local rows (if local indexing is enabled) |
type(dbcsr_data_obj), | public | :: | data_area | = | dbcsr_data_obj() |
TYPE dbcsr_iterator !! An iterator over a DBCSR matrix. !! @note This is briefly changed to allow being included in the dbcsr_type type !! What is written here is what the structure should be and not what it !! is. !! @endnote TYPE(dbcsr_type), POINTER :: matrix => Null() !! the matrix TYPE(dbcsr_block_buffer_obj) :: buffer_2d = dbcsr_block_buffer_obj() !! Buffers for repointing 2d pointers (1 per thread) INTEGER :: pos = -1 !! Current position (per thread) INTEGER :: row = -1 !! Current row (per thread) INTEGER :: row_size = -1 !! Size of current row INTEGER :: row_offset = -1 INTEGER, DIMENSION(:), POINTER :: rbs => Null() !! Pointer to row size array INTEGER, DIMENSION(:), POINTER :: cbs => Null() !! Pointer to column size array INTEGER, DIMENSION(:), POINTER :: roff => Null() !! Pointer to row offset array INTEGER, DIMENSION(:), POINTER :: coff => Null() !! Pointer to column offset array LOGICAL :: local_indexing = .FALSE. !! The matrix has local indexing LOGICAL :: contiguous_pointers = .FALSE. !! Whether pointers to data should be contiguous in memory. LOGICAL :: transpose = .FALSE. LOGICAL :: read_only = .FALSE. LOGICAL :: shared = .FALSE. !! Iterators share matrix LOGICAL :: dynamic = .FALSE. !! Ignores the thread distribution (FCFS by block) LOGICAL :: dynamic_byrows = .FALSE. !! Ignores the thread distribution (FCFS by row) INTEGER, POINTER :: common_pos => Null() !! Position when in mixed mode (row or block depending in dynamic_byrows ! Copies from the matrix. INTEGER :: nblks = -1 INTEGER :: nblkrows_total = -1 INTEGER, DIMENSION(:), POINTER :: row_p => Null() INTEGER, DIMENSION(:), POINTER :: col_i => Null() INTEGER, DIMENSION(:), POINTER :: blk_p => Null() INTEGER, DIMENSION(:), POINTER, CONTIGUOUS :: tdist => Null() INTEGER, DIMENSION(:), POINTER, CONTIGUOUS :: local_rows => Null() !! Mapping of local rows to global rows (if local indexing is enabled) INTEGER, DIMENSION(:), POINTER, CONTIGUOUS :: global_rows => Null() !! Mapping of global rows to local rows (if local indexing is enabled) TYPE(dbcsr_data_obj) :: data_area = dbcsr_data_obj() END TYPE dbcsr_iterator