dbcsr_iterator Derived Type

type, public :: 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.


Components

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()

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 = 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