dbcsr_iterator_operations Module

DBCSR iterator operations



Variables

Type Visibility Attributes Name Initial
character(len=*), private, parameter :: moduleN = 'dbcsr_iterator_operations'
integer, private, POINTER, SAVE :: common_int_pointer
logical, private, parameter :: careful_mod = .FALSE.
integer, private, parameter :: rpslot_owner = 1
integer, private, parameter :: rpslot_addblks = 2
integer, private, parameter :: rpslot_addoffset = 3
integer, private, parameter :: rpslot_oldblks = 4
integer, private, parameter :: rpslot_oldoffset = 5
integer, private, parameter :: rpslot_totaloffset = 6
integer, private, parameter :: rpnslots = 6
logical, private, parameter :: detailed_timing = .FALSE.

Interfaces

public interface dbcsr_iterator_next_block

  • private subroutine iterator_next_block_index(iterator, row, column, blk, transposed, blk_p, row_size, col_size, row_offset, col_offset)

    Gets the index information of the next block, no data.

    Arguments

    Type IntentOptional Attributes Name
    type(dbcsr_iterator), intent(inout) :: iterator

    the iterator

    integer, intent(out) :: row

    row of the data block column of the data block block number

    integer, intent(out) :: column

    row of the data block column of the data block block number

    integer, intent(out) :: blk

    row of the data block column of the data block block number

    logical, intent(out), optional :: transposed

    whether block is transposed

    integer, intent(out), optional :: blk_p

    index into block data array logical row size of block logical column size of block logical row offset of block logical column offset of block

    integer, intent(out), optional :: row_size

    index into block data array logical row size of block logical column size of block logical row offset of block logical column offset of block

    integer, intent(out), optional :: col_size

    index into block data array logical row size of block logical column size of block logical row offset of block logical column offset of block

    integer, intent(out), optional :: row_offset

    index into block data array logical row size of block logical column size of block logical row offset of block logical column offset of block

    integer, intent(out), optional :: col_offset

    index into block data array logical row size of block logical column size of block logical row offset of block logical column offset of block

  • private subroutine iterator_next_area_block(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

    Gets the next data block encapsulated in an object.

    Arguments

    Type IntentOptional Attributes Name
    type(dbcsr_iterator), intent(inout) :: iterator

    the iterator

    integer, intent(out) :: row

    row of the data block column of the data block

    integer, intent(out) :: column

    row of the data block column of the data block

    type(dbcsr_data_obj), intent(inout) :: block

    encapsulated data

    logical, intent(out) :: transposed

    whether the block data is transposed

    integer, intent(out), optional :: block_number

    block number logical row size of block logical column size of block logical row offset of block logical column offset of block

    integer, intent(out), optional :: row_size

    block number logical row size of block logical column size of block logical row offset of block logical column offset of block

    integer, intent(out), optional :: col_size

    block number logical row size of block logical column size of block logical row offset of block logical column offset of block

    integer, intent(out), optional :: row_offset

    block number logical row size of block logical column size of block logical row offset of block logical column offset of block

    integer, intent(out), optional :: col_offset

    block number logical row size of block logical column size of block logical row offset of block logical column offset of block

  • private subroutine iterator_next_2d_block_d(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

    Gets the next data block, single/double precision real/complex

    Arguments

    Type IntentOptional Attributes Name
    type(dbcsr_iterator), intent(inout) :: iterator

    the iterator

    integer, intent(out) :: row

    row of the data block column of the data block

    integer, intent(out) :: column

    row of the data block column of the data block

    real(kind=real_8), DIMENSION(:, :), POINTER :: block

    pointer to the data block

    logical, intent(out) :: transposed

    whether the block data is transposed

    integer, intent(out), optional :: block_number

    block number

    integer, intent(out), optional :: row_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: row_offset

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_offset

    logical row size of block logical column size of block

  • private subroutine iterator_next_2d_block_s(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

    Gets the next data block, single/double precision real/complex

    Arguments

    Type IntentOptional Attributes Name
    type(dbcsr_iterator), intent(inout) :: iterator

    the iterator

    integer, intent(out) :: row

    row of the data block column of the data block

    integer, intent(out) :: column

    row of the data block column of the data block

    real(kind=real_4), DIMENSION(:, :), POINTER :: block

    pointer to the data block

    logical, intent(out) :: transposed

    whether the block data is transposed

    integer, intent(out), optional :: block_number

    block number

    integer, intent(out), optional :: row_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: row_offset

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_offset

    logical row size of block logical column size of block

  • private subroutine iterator_next_2d_block_c(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

    Gets the next data block, single/double precision real/complex

    Arguments

    Type IntentOptional Attributes Name
    type(dbcsr_iterator), intent(inout) :: iterator

    the iterator

    integer, intent(out) :: row

    row of the data block column of the data block

    integer, intent(out) :: column

    row of the data block column of the data block

    complex(kind=real_4), DIMENSION(:, :), POINTER :: block

    pointer to the data block

    logical, intent(out) :: transposed

    whether the block data is transposed

    integer, intent(out), optional :: block_number

    block number

    integer, intent(out), optional :: row_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: row_offset

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_offset

    logical row size of block logical column size of block

  • private subroutine iterator_next_2d_block_z(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

    Gets the next data block, single/double precision real/complex

    Arguments

    Type IntentOptional Attributes Name
    type(dbcsr_iterator), intent(inout) :: iterator

    the iterator

    integer, intent(out) :: row

    row of the data block column of the data block

    integer, intent(out) :: column

    row of the data block column of the data block

    complex(kind=real_8), DIMENSION(:, :), POINTER :: block

    pointer to the data block

    logical, intent(out) :: transposed

    whether the block data is transposed

    integer, intent(out), optional :: block_number

    block number

    integer, intent(out), optional :: row_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: row_offset

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_offset

    logical row size of block logical column size of block

  • private subroutine iterator_next_1d_block_d(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

    Gets the next data block, single/double precision real/complex

    Arguments

    Type IntentOptional Attributes Name
    type(dbcsr_iterator), intent(inout) :: iterator

    the iterator

    integer, intent(out) :: row

    row of the data block column of the data block

    integer, intent(out) :: column

    row of the data block column of the data block

    real(kind=real_8), DIMENSION(:), POINTER :: block

    pointer to the data block

    logical, intent(out) :: transposed

    whether the block data is transposed

    integer, intent(out), optional :: block_number

    block number

    integer, intent(out), optional :: row_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: row_offset

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_offset

    logical row size of block logical column size of block

  • private subroutine iterator_next_1d_block_s(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

    Gets the next data block, single/double precision real/complex

    Arguments

    Type IntentOptional Attributes Name
    type(dbcsr_iterator), intent(inout) :: iterator

    the iterator

    integer, intent(out) :: row

    row of the data block column of the data block

    integer, intent(out) :: column

    row of the data block column of the data block

    real(kind=real_4), DIMENSION(:), POINTER :: block

    pointer to the data block

    logical, intent(out) :: transposed

    whether the block data is transposed

    integer, intent(out), optional :: block_number

    block number

    integer, intent(out), optional :: row_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: row_offset

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_offset

    logical row size of block logical column size of block

  • private subroutine iterator_next_1d_block_c(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

    Gets the next data block, single/double precision real/complex

    Arguments

    Type IntentOptional Attributes Name
    type(dbcsr_iterator), intent(inout) :: iterator

    the iterator

    integer, intent(out) :: row

    row of the data block column of the data block

    integer, intent(out) :: column

    row of the data block column of the data block

    complex(kind=real_4), DIMENSION(:), POINTER :: block

    pointer to the data block

    logical, intent(out) :: transposed

    whether the block data is transposed

    integer, intent(out), optional :: block_number

    block number

    integer, intent(out), optional :: row_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: row_offset

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_offset

    logical row size of block logical column size of block

  • private subroutine iterator_next_1d_block_z(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

    Gets the next data block, single/double precision real/complex

    Arguments

    Type IntentOptional Attributes Name
    type(dbcsr_iterator), intent(inout) :: iterator

    the iterator

    integer, intent(out) :: row

    row of the data block column of the data block

    integer, intent(out) :: column

    row of the data block column of the data block

    complex(kind=real_8), DIMENSION(:), POINTER :: block

    pointer to the data block

    logical, intent(out) :: transposed

    whether the block data is transposed

    integer, intent(out), optional :: block_number

    block number

    integer, intent(out), optional :: row_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_size

    logical row size of block logical column size of block

    integer, intent(out), optional :: row_offset

    logical row size of block logical column size of block

    integer, intent(out), optional :: col_offset

    logical row size of block logical column size of block


Derived Types

type, private ::  block_parameters

Components

Type Visibility Attributes Name Initial
logical, public :: tr = .FALSE.
integer, public :: logical_rows = -1
integer, public :: logical_cols = -1
integer, public :: offset = -1
integer, public :: nze = -1

type, private ::  dgemm_join

Components

Type Visibility Attributes Name Initial
integer, public :: p_a = -1
integer, public :: p_b = -1
integer, public :: p_c = -1
integer, public :: last_k = -1
integer, public :: last_n = -1
type(dbcsr_scalar_type), public :: alpha = dbcsr_scalar_type()
type(dbcsr_scalar_type), public :: beta = dbcsr_scalar_type()

Functions

public pure function dbcsr_iterator_blocks_left(iterator) result(blocks_left)

Returns whether there any blocks left in the iterator.

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(in) :: iterator

the iterator

Return Value logical


Subroutines

public subroutine dbcsr_iterator_start(iterator, matrix, shared, dynamic, dynamic_byrows, contiguous_pointers, read_only)

Sets up an iterator

Read more…

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(out) :: iterator

the iterator

type(dbcsr_type), intent(in) :: matrix

DBCSR matrix

logical, intent(in), optional :: shared

The matrix is shared between several iterators. Default is .TRUE. Threads are given blocks regardless of the thread distribution; default is .FALSE. Threads are given blocks regardless of the thread distribution, but still grouped by rows; default is .FALSE. Whether returned pointers need to be contiguous; default is FALSE. User promises not to change returned data; default is FALSE

logical, intent(in), optional :: dynamic

The matrix is shared between several iterators. Default is .TRUE. Threads are given blocks regardless of the thread distribution; default is .FALSE. Threads are given blocks regardless of the thread distribution, but still grouped by rows; default is .FALSE. Whether returned pointers need to be contiguous; default is FALSE. User promises not to change returned data; default is FALSE

logical, intent(in), optional :: dynamic_byrows

The matrix is shared between several iterators. Default is .TRUE. Threads are given blocks regardless of the thread distribution; default is .FALSE. Threads are given blocks regardless of the thread distribution, but still grouped by rows; default is .FALSE. Whether returned pointers need to be contiguous; default is FALSE. User promises not to change returned data; default is FALSE

logical, intent(in), optional :: contiguous_pointers

The matrix is shared between several iterators. Default is .TRUE. Threads are given blocks regardless of the thread distribution; default is .FALSE. Threads are given blocks regardless of the thread distribution, but still grouped by rows; default is .FALSE. Whether returned pointers need to be contiguous; default is FALSE. User promises not to change returned data; default is FALSE

logical, intent(in), optional :: read_only

The matrix is shared between several iterators. Default is .TRUE. Threads are given blocks regardless of the thread distribution; default is .FALSE. Threads are given blocks regardless of the thread distribution, but still grouped by rows; default is .FALSE. Whether returned pointers need to be contiguous; default is FALSE. User promises not to change returned data; default is FALSE

public subroutine dbcsr_iterator_stop(iterator)

Stops up an iterator

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

private pure subroutine find_first_valid_block(pos, maxpos, blk_p)

Finds the first valid block, inclusive from the current position. If there is no valid block, pos is set to 0

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: pos

input: current position; output: next valid position or 0

integer, intent(in) :: maxpos

maximal allowed position

integer, intent(in), DIMENSION(:) :: blk_p

block pointers, used to check validity

private pure subroutine find_proper_row(pos, row, maxrows, row_p)

Finds the row to which the current block belongs If there is no valid block, pos is set to 0

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: pos

current position

integer, intent(inout) :: row

input: current row; output: the row corresponding to the position

integer, intent(in) :: maxrows

maxmimum row

integer, intent(in), DIMENSION(:) :: row_p

row pointers

private pure subroutine find_proper_position(pos, row, maxpos, maxrows, blk_p, row_p, tdist, tid, local2global)

Finds the next proper position accounting for threads First time: pos and row are set to 0. If there is no valid block, pos is set to 0

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: pos

current position and updated position input: current row; output: the row corresponding to the next proper position

integer, intent(inout) :: row

current position and updated position input: current row; output: the row corresponding to the next proper position

integer, intent(in) :: maxpos

maximum allowable position maxmimum row

integer, intent(in) :: maxrows

maximum allowable position maxmimum row

integer, intent(in), DIMENSION(:) :: blk_p

block pointercs row pointers

integer, intent(in), DIMENSION(:) :: row_p

block pointercs row pointers

integer, intent(in), optional, DIMENSION(1:maxrows) :: tdist

thread distribution

integer, intent(in), optional :: tid

my thread number

integer, intent(in), optional, DIMENSION(1:*) :: local2global

private subroutine iterator_advance(iterator)

Advances to the next block

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

private subroutine find_proper_position_caller(iterator, use_ithread)

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator
integer, intent(in), optional :: use_ithread

private pure subroutine update_row_info(iterator)

Updates the row info stored in the iterator

Read more…

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

private subroutine dbcsr_iterator_seek(iterator, row)

Places the iterator to the desired row.

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

integer, intent(in) :: row

seek to this row

private subroutine iterator_next_block_index(iterator, row, column, blk, transposed, blk_p, row_size, col_size, row_offset, col_offset)

Gets the index information of the next block, no data.

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

integer, intent(out) :: row

row of the data block column of the data block block number

integer, intent(out) :: column

row of the data block column of the data block block number

integer, intent(out) :: blk

row of the data block column of the data block block number

logical, intent(out), optional :: transposed

whether block is transposed

integer, intent(out), optional :: blk_p

index into block data array logical row size of block logical column size of block logical row offset of block logical column offset of block

integer, intent(out), optional :: row_size

index into block data array logical row size of block logical column size of block logical row offset of block logical column offset of block

integer, intent(out), optional :: col_size

index into block data array logical row size of block logical column size of block logical row offset of block logical column offset of block

integer, intent(out), optional :: row_offset

index into block data array logical row size of block logical column size of block logical row offset of block logical column offset of block

integer, intent(out), optional :: col_offset

index into block data array logical row size of block logical column size of block logical row offset of block logical column offset of block

private subroutine iterator_next_area_block(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

Gets the next data block encapsulated in an object.

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

integer, intent(out) :: row

row of the data block column of the data block

integer, intent(out) :: column

row of the data block column of the data block

type(dbcsr_data_obj), intent(inout) :: block

encapsulated data

logical, intent(out) :: transposed

whether the block data is transposed

integer, intent(out), optional :: block_number

block number logical row size of block logical column size of block logical row offset of block logical column offset of block

integer, intent(out), optional :: row_size

block number logical row size of block logical column size of block logical row offset of block logical column offset of block

integer, intent(out), optional :: col_size

block number logical row size of block logical column size of block logical row offset of block logical column offset of block

integer, intent(out), optional :: row_offset

block number logical row size of block logical column size of block logical row offset of block logical column offset of block

integer, intent(out), optional :: col_offset

block number logical row size of block logical column size of block logical row offset of block logical column offset of block

private subroutine iterator_next_1d_block_d(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

Gets the next data block, single/double precision real/complex

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

integer, intent(out) :: row

row of the data block column of the data block

integer, intent(out) :: column

row of the data block column of the data block

real(kind=real_8), DIMENSION(:), POINTER :: block

pointer to the data block

logical, intent(out) :: transposed

whether the block data is transposed

integer, intent(out), optional :: block_number

block number

integer, intent(out), optional :: row_size

logical row size of block logical column size of block

integer, intent(out), optional :: col_size

logical row size of block logical column size of block

integer, intent(out), optional :: row_offset

logical row size of block logical column size of block

integer, intent(out), optional :: col_offset

logical row size of block logical column size of block

private subroutine iterator_next_2d_block_d(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

Gets the next data block, single/double precision real/complex

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

integer, intent(out) :: row

row of the data block column of the data block

integer, intent(out) :: column

row of the data block column of the data block

real(kind=real_8), DIMENSION(:, :), POINTER :: block

pointer to the data block

logical, intent(out) :: transposed

whether the block data is transposed

integer, intent(out), optional :: block_number

block number

integer, intent(out), optional :: row_size

logical row size of block logical column size of block

integer, intent(out), optional :: col_size

logical row size of block logical column size of block

integer, intent(out), optional :: row_offset

logical row size of block logical column size of block

integer, intent(out), optional :: col_offset

logical row size of block logical column size of block

private subroutine iterator_next_1d_block_s(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

Gets the next data block, single/double precision real/complex

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

integer, intent(out) :: row

row of the data block column of the data block

integer, intent(out) :: column

row of the data block column of the data block

real(kind=real_4), DIMENSION(:), POINTER :: block

pointer to the data block

logical, intent(out) :: transposed

whether the block data is transposed

integer, intent(out), optional :: block_number

block number

integer, intent(out), optional :: row_size

logical row size of block logical column size of block

integer, intent(out), optional :: col_size

logical row size of block logical column size of block

integer, intent(out), optional :: row_offset

logical row size of block logical column size of block

integer, intent(out), optional :: col_offset

logical row size of block logical column size of block

private subroutine iterator_next_2d_block_s(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

Gets the next data block, single/double precision real/complex

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

integer, intent(out) :: row

row of the data block column of the data block

integer, intent(out) :: column

row of the data block column of the data block

real(kind=real_4), DIMENSION(:, :), POINTER :: block

pointer to the data block

logical, intent(out) :: transposed

whether the block data is transposed

integer, intent(out), optional :: block_number

block number

integer, intent(out), optional :: row_size

logical row size of block logical column size of block

integer, intent(out), optional :: col_size

logical row size of block logical column size of block

integer, intent(out), optional :: row_offset

logical row size of block logical column size of block

integer, intent(out), optional :: col_offset

logical row size of block logical column size of block

private subroutine iterator_next_1d_block_z(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

Gets the next data block, single/double precision real/complex

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

integer, intent(out) :: row

row of the data block column of the data block

integer, intent(out) :: column

row of the data block column of the data block

complex(kind=real_8), DIMENSION(:), POINTER :: block

pointer to the data block

logical, intent(out) :: transposed

whether the block data is transposed

integer, intent(out), optional :: block_number

block number

integer, intent(out), optional :: row_size

logical row size of block logical column size of block

integer, intent(out), optional :: col_size

logical row size of block logical column size of block

integer, intent(out), optional :: row_offset

logical row size of block logical column size of block

integer, intent(out), optional :: col_offset

logical row size of block logical column size of block

private subroutine iterator_next_2d_block_z(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

Gets the next data block, single/double precision real/complex

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

integer, intent(out) :: row

row of the data block column of the data block

integer, intent(out) :: column

row of the data block column of the data block

complex(kind=real_8), DIMENSION(:, :), POINTER :: block

pointer to the data block

logical, intent(out) :: transposed

whether the block data is transposed

integer, intent(out), optional :: block_number

block number

integer, intent(out), optional :: row_size

logical row size of block logical column size of block

integer, intent(out), optional :: col_size

logical row size of block logical column size of block

integer, intent(out), optional :: row_offset

logical row size of block logical column size of block

integer, intent(out), optional :: col_offset

logical row size of block logical column size of block

private subroutine iterator_next_1d_block_c(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

Gets the next data block, single/double precision real/complex

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

integer, intent(out) :: row

row of the data block column of the data block

integer, intent(out) :: column

row of the data block column of the data block

complex(kind=real_4), DIMENSION(:), POINTER :: block

pointer to the data block

logical, intent(out) :: transposed

whether the block data is transposed

integer, intent(out), optional :: block_number

block number

integer, intent(out), optional :: row_size

logical row size of block logical column size of block

integer, intent(out), optional :: col_size

logical row size of block logical column size of block

integer, intent(out), optional :: row_offset

logical row size of block logical column size of block

integer, intent(out), optional :: col_offset

logical row size of block logical column size of block

private subroutine iterator_next_2d_block_c(iterator, row, column, block, transposed, block_number, row_size, col_size, row_offset, col_offset)

Gets the next data block, single/double precision real/complex

Arguments

Type IntentOptional Attributes Name
type(dbcsr_iterator), intent(inout) :: iterator

the iterator

integer, intent(out) :: row

row of the data block column of the data block

integer, intent(out) :: column

row of the data block column of the data block

complex(kind=real_4), DIMENSION(:, :), POINTER :: block

pointer to the data block

logical, intent(out) :: transposed

whether the block data is transposed

integer, intent(out), optional :: block_number

block number

integer, intent(out), optional :: row_size

logical row size of block logical column size of block

integer, intent(out), optional :: col_size

logical row size of block logical column size of block

integer, intent(out), optional :: row_offset

logical row size of block logical column size of block

integer, intent(out), optional :: col_offset

logical row size of block logical column size of block