An iterator over a DBCSR matrix.
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.
the matrix Buffers for repointing 2d pointers (1 per thread) Current position (per thread) Current row (per thread) Size of current row Pointer to row size array Pointer to column size array Pointer to row offset array Pointer to column offset array The matrix has local indexing Whether pointers to data should be contiguous in memory. Iterators share matrix Ignores the thread distribution (FCFS by block) Ignores the thread distribution (FCFS by row) Position when in mixed mode (row or block depending in dynamic_byrows Mapping of local rows to global rows (if local indexing is enabled) Mapping of global rows to local rows (if local indexing is enabled)
Components
Type
Visibility Attributes
Name
Initial
type(dbcsr_type),
public,
POINTER
::
matrix
=>
Null()
type(dbcsr_block_buffer_obj),
public
::
buffer_2d
integer,
public
::
pos
=
-1
integer,
public
::
row
=
-1
integer,
public
::
row_size
=
-1
integer,
public
::
row_offset
=
-1
integer,
public,
DIMENSION(:), POINTER
::
rbs
=>
Null()
integer,
public,
DIMENSION(:), POINTER
::
cbs
=>
Null()
integer,
public,
DIMENSION(:), POINTER
::
roff
=>
Null()
integer,
public,
DIMENSION(:), POINTER
::
coff
=>
Null()
logical,
public
::
local_indexing
=
.FALSE.
logical,
public
::
contiguous_pointers
=
.FALSE.
logical,
public
::
transpose
=
.FALSE.
logical,
public
::
read_only
=
.FALSE.
logical,
public
::
shared
=
.FALSE.
logical,
public
::
dynamic
=
.FALSE.
logical,
public
::
dynamic_byrows
=
.FALSE.
integer,
public,
POINTER
::
common_pos
=>
Null()
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()
integer,
public,
DIMENSION(:), POINTER, CONTIGUOUS
::
global_rows
=>
Null()
type(dbcsr_data_obj),
public
::
data_area
Source Code
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
!! 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
END TYPE dbcsr_iterator