Documentation for module dbcsr_iterator_operations

DBCSR iterator operations

source: dbcsr_iterator_operations.F
Loading...

Generic procedures:

dbcsr_iterator_next_block

public Subroutines/Functions:

FUNCTION
LOGICAL PURE
dbcsr_iterator_blocks_left (iterator)
Returns whether there any blocks left in the iterator.
Sets up an iterator
Stops up an iterator

Generic procedure dbcsr_iterator_next_block

...

INTENT(inout)
:: iterator × × × × × × × × × ×
INTEGER,
INTENT(out)
:: row × × × × × × × × × ×
INTEGER,
INTENT(out)
:: column × × × × × × × × × ×
INTEGER,
INTENT(out)
:: blk ×
LOGICAL,
INTENT(out),
OPTIONAL
:: transposed ×
LOGICAL,
INTENT(out)
:: transposed × × × × × × × × ×
INTEGER,
INTENT(out),
OPTIONAL
:: blk_p ×
INTEGER,
INTENT(out),
OPTIONAL
:: row_size × × × × × × × × × ×
INTEGER,
INTENT(out),
OPTIONAL
:: col_size × × × × × × × × × ×
INTEGER,
INTENT(out),
OPTIONAL
:: row_offset × × × × × × × × × ×
INTEGER,
INTENT(out),
OPTIONAL
:: col_offset × × × × × × × × × ×
INTENT(inout)
:: block ×
REAL(real_8),
POINTER
:: block(:,:) ×
REAL(real_4),
POINTER
:: block(:,:) ×
COMPLEX(real_4),
POINTER
:: block(:,:) ×
COMPLEX(real_8),
POINTER
:: block(:,:) ×
REAL(real_8),
POINTER
:: block(:) ×
REAL(real_4),
POINTER
:: block(:) ×
COMPLEX(real_4),
POINTER
:: block(:) ×
COMPLEX(real_8),
POINTER
:: block(:) ×
INTEGER,
INTENT(out),
OPTIONAL
:: block_number × × × × × × × × ×

PURE FUNCTIONdbcsr_iterator_blocks_left(iterator)

Returns whether there any blocks left in the iterator.

Return Value ::
LOGICAL
Arguments:
INTENT(in)
:: iterator the iterator

SUBROUTINEdbcsr_iterator_start(iterator, matrix, shared, dynamic, dynamic_byrows, contiguous_pointers, read_only)

Sets up an iterator

Arguments:
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.
LOGICAL,
INTENT(in),
OPTIONAL
:: dynamic Threads are given blocks regardless of the thread distribution; default is .FALSE.
LOGICAL,
INTENT(in),
OPTIONAL
:: dynamic_byrows Threads are given blocks regardless of the thread distribution, but still grouped by rows; default is .FALSE.
LOGICAL,
INTENT(in),
OPTIONAL
:: contiguous_pointers Whether returned pointers need to be contiguous; default is FALSE.
LOGICAL,
INTENT(in),
OPTIONAL
:: read_only User promises not to change returned data; default is FALSE

SUBROUTINEdbcsr_iterator_stop(iterator)

Stops up an iterator

Arguments:
INTENT(inout)
:: iterator the iterator

SUBROUTINEiterator_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:
INTENT(inout)
:: iterator the iterator
INTEGER,
INTENT(out)
:: row row of the data block
INTEGER,
INTENT(out)
:: column column of the data block
INTEGER,
INTENT(out)
:: blk block number
LOGICAL,
INTENT(out),
OPTIONAL
:: transposed whether block is transposed
INTEGER,
INTENT(out),
OPTIONAL
:: blk_p index into block data array
INTEGER,
INTENT(out),
OPTIONAL
:: row_size logical row size of block
INTEGER,
INTENT(out),
OPTIONAL
:: col_size logical column size of block
INTEGER,
INTENT(out),
OPTIONAL
:: row_offset logical row offset of block
INTEGER,
INTENT(out),
OPTIONAL
:: col_offset logical column offset of block

SUBROUTINEiterator_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:
INTENT(inout)
:: iterator the iterator
INTEGER,
INTENT(out)
:: row row of the data block
INTEGER,
INTENT(out)
:: column column of the data block
INTENT(inout)
:: block encapsulated data
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
INTEGER,
INTENT(out),
OPTIONAL
:: col_size logical column size of block
INTEGER,
INTENT(out),
OPTIONAL
:: row_offset logical row offset of block
INTEGER,
INTENT(out),
OPTIONAL
:: col_offset logical column offset of block

SUBROUTINEiterator_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:
INTENT(inout)
:: iterator the iterator
INTEGER,
INTENT(out)
:: row row of the data block
INTEGER,
INTENT(out)
:: column column of the data block
REAL(real_8),
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
INTEGER,
INTENT(out),
OPTIONAL
:: col_size logical column size of block
INTEGER,
INTENT(out),
OPTIONAL
:: row_offset ...
INTEGER,
INTENT(out),
OPTIONAL
:: col_offset ...

SUBROUTINEiterator_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:
INTENT(inout)
:: iterator the iterator
INTEGER,
INTENT(out)
:: row row of the data block
INTEGER,
INTENT(out)
:: column column of the data block
REAL(real_4),
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
INTEGER,
INTENT(out),
OPTIONAL
:: col_size logical column size of block
INTEGER,
INTENT(out),
OPTIONAL
:: row_offset ...
INTEGER,
INTENT(out),
OPTIONAL
:: col_offset ...

SUBROUTINEiterator_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:
INTENT(inout)
:: iterator the iterator
INTEGER,
INTENT(out)
:: row row of the data block
INTEGER,
INTENT(out)
:: column column of the data block
COMPLEX(real_4),
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
INTEGER,
INTENT(out),
OPTIONAL
:: col_size logical column size of block
INTEGER,
INTENT(out),
OPTIONAL
:: row_offset ...
INTEGER,
INTENT(out),
OPTIONAL
:: col_offset ...

SUBROUTINEiterator_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:
INTENT(inout)
:: iterator the iterator
INTEGER,
INTENT(out)
:: row row of the data block
INTEGER,
INTENT(out)
:: column column of the data block
COMPLEX(real_8),
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
INTEGER,
INTENT(out),
OPTIONAL
:: col_size logical column size of block
INTEGER,
INTENT(out),
OPTIONAL
:: row_offset ...
INTEGER,
INTENT(out),
OPTIONAL
:: col_offset ...

SUBROUTINEiterator_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:
INTENT(inout)
:: iterator the iterator
INTEGER,
INTENT(out)
:: row row of the data block
INTEGER,
INTENT(out)
:: column column of the data block
REAL(real_8),
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
INTEGER,
INTENT(out),
OPTIONAL
:: col_size logical column size of block
INTEGER,
INTENT(out),
OPTIONAL
:: row_offset ...
INTEGER,
INTENT(out),
OPTIONAL
:: col_offset ...

SUBROUTINEiterator_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:
INTENT(inout)
:: iterator the iterator
INTEGER,
INTENT(out)
:: row row of the data block
INTEGER,
INTENT(out)
:: column column of the data block
REAL(real_4),
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
INTEGER,
INTENT(out),
OPTIONAL
:: col_size logical column size of block
INTEGER,
INTENT(out),
OPTIONAL
:: row_offset ...
INTEGER,
INTENT(out),
OPTIONAL
:: col_offset ...

SUBROUTINEiterator_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:
INTENT(inout)
:: iterator the iterator
INTEGER,
INTENT(out)
:: row row of the data block
INTEGER,
INTENT(out)
:: column column of the data block
COMPLEX(real_4),
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
INTEGER,
INTENT(out),
OPTIONAL
:: col_size logical column size of block
INTEGER,
INTENT(out),
OPTIONAL
:: row_offset ...
INTEGER,
INTENT(out),
OPTIONAL
:: col_offset ...

SUBROUTINEiterator_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:
INTENT(inout)
:: iterator the iterator
INTEGER,
INTENT(out)
:: row row of the data block
INTEGER,
INTENT(out)
:: column column of the data block
COMPLEX(real_8),
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
INTEGER,
INTENT(out),
OPTIONAL
:: col_size logical column size of block
INTEGER,
INTENT(out),
OPTIONAL
:: row_offset ...
INTEGER,
INTENT(out),
OPTIONAL
:: col_offset ...