dbcsr_types Module

DBCSR data types



Contents


Variables

Type Visibility Attributes Name Initial
character(len=*), private, parameter :: moduleN = 'dbcsr_types'
integer, public, parameter :: dbcsr_filter_frobenius = 1
integer, public, parameter :: dbcsr_norm_frobenius = 1
integer, public, parameter :: dbcsr_norm_maxabsnorm = 2
integer, public, parameter :: dbcsr_norm_gershgorin = 3
integer, public, parameter :: dbcsr_norm_column = 4
character, public, parameter :: dbcsr_type_invalid = '0'
character, public, parameter :: dbcsr_type_no_symmetry = 'N'
character, public, parameter :: dbcsr_type_symmetric = 'S'
character, public, parameter :: dbcsr_type_antisymmetric = 'A'
character, public, parameter :: dbcsr_type_hermitian = 'H'
character, public, parameter :: dbcsr_type_antihermitian = 'K'
character, public, parameter :: dbcsr_no_transpose = 'N'
character, public, parameter :: dbcsr_transpose = 'T'
character, public, parameter :: dbcsr_conjugate_transpose = 'C'
character, public, parameter :: dbcsr_repl_none = 'N'
character, public, parameter :: dbcsr_repl_row = 'R'
character, public, parameter :: dbcsr_repl_col = 'C'
character, public, parameter :: dbcsr_repl_full = 'A'
integer, public, parameter :: dbcsr_func_inverse = 0
integer, public, parameter :: dbcsr_func_tanh = 1
integer, public, parameter :: dbcsr_func_dtanh = 2
integer, public, parameter :: dbcsr_func_ddtanh = 3
integer, public, parameter :: dbcsr_func_artanh = 4
integer, public, parameter :: dbcsr_func_inverse_special = 5
integer, public, parameter :: dbcsr_func_spread_from_zero = 6
integer, public, parameter :: dbcsr_func_sin = 7
integer, public, parameter :: dbcsr_func_dsin = 8
integer, public, parameter :: dbcsr_func_ddsin = 9
integer, public, parameter :: dbcsr_func_asin = 10
integer, public, parameter :: dbcsr_func_cos = 11
integer, public, parameter :: dbcsr_func_truncate = 12
integer, public, parameter :: dbcsr_slot_size = 1

Size of the assigned values in the index array.

integer, public, parameter :: dbcsr_slot_nblks = 2
integer, public, parameter :: dbcsr_slot_nze = 3
integer, public, parameter :: dbcsr_slot_dense = 4
integer, public, parameter :: dbcsr_slot_nblkrows_total = 5
integer, public, parameter :: dbcsr_slot_nblkcols_total = 6
integer, public, parameter :: dbcsr_slot_nfullrows_total = 7
integer, public, parameter :: dbcsr_slot_nfullcols_total = 8
integer, public, parameter :: dbcsr_slot_nblkrows_local = 9
integer, public, parameter :: dbcsr_slot_nblkcols_local = 10
integer, public, parameter :: dbcsr_slot_nfullrows_local = 11
integer, public, parameter :: dbcsr_slot_nfullcols_local = 12
integer, public, parameter :: dbcsr_slot_type = 13
integer, public, parameter :: dbcsr_slot_home_prow = 14
integer, public, parameter :: dbcsr_slot_home_pcol = 15
integer, public, parameter :: dbcsr_slot_home_rowi = 16
integer, public, parameter :: dbcsr_slot_home_coli = 17
integer, public, parameter :: dbcsr_slot_home_vprow = 18
integer, public, parameter :: dbcsr_slot_home_vpcol = 19
integer, public, parameter :: dbcsr_meta_size = 19

The number of meta fields. Its value should be the index of the last slot listed above.

integer, public, parameter :: dbcsr_slot_row_p = dbcsr_meta_size+2
integer, public, parameter :: dbcsr_slot_col_i = dbcsr_meta_size+4
integer, public, parameter :: dbcsr_slot_blk_p = dbcsr_meta_size+6
integer, public, parameter :: dbcsr_slot_thr_c = dbcsr_meta_size+8
integer, public, parameter :: dbcsr_slot_coo_l = dbcsr_meta_size+10
integer, public, parameter :: dbcsr_num_slots = dbcsr_meta_size+11
integer(kind=int_8), public, parameter, DIMENSION(6) :: dbcsr_mpi_size_limits = (/2**7, 2**13, 2**15, 2**17, 2**22, 2**24/)

MPI message size limits (in bytes): 128, 8192, 32KB, 128KB, 4MB, 16MB


Derived Types

type, private ::  dbcsr_mp_type

A processor (process) grid distribution

Components

Type Visibility Attributes Name Initial
integer, public :: mynode = -1

my processor/node (process) number

integer, public :: numnodes = -1

number of processors/nodes (processes)

integer, public :: myprow = -1

my process grid row

integer, public :: mypcol = -1

my process grid column

integer, public :: mp_group = -1

message-passing group ID

integer, public, DIMENSION(:, :), POINTER, CONTIGUOUS :: pgrid => Null()

processor grid

integer, public :: refcount = 0

reference counter

logical, public :: subgroups_defined = .FALSE.

whether the subgroups are defined

integer, public :: prow_group = -1

per-process-row communicator

integer, public :: pcol_group = -1

pre-process-column communicator

integer, public :: source = -1

type, public ::  dbcsr_mp_obj

Wrapper for the dbcsr_mp_type

Components

Type Visibility Attributes Name Initial
type(dbcsr_mp_type), public, POINTER :: mp => Null()

pointer to a dbcsr_mp_type instance

type, private ::  dbcsr_distribution_type

Matrix distribution on the processor grid

Components

Type Visibility Attributes Name Initial
type(array_i1d_obj), public :: row_dist_block

standard row distributions of matrix elements' rows into processor grid rows standard column distributions of matrix elements' columns into processor grid columns

type(array_i1d_obj), public :: col_dist_block

standard row distributions of matrix elements' rows into processor grid rows standard column distributions of matrix elements' columns into processor grid columns

type(array_i1d_obj), public :: local_rows

list of rows local to the processor grid row list of columns local to the processor grid column

type(array_i1d_obj), public :: local_cols

list of rows local to the processor grid row list of columns local to the processor grid column

integer, public :: max_row_dist
integer, public :: max_col_dist
type(array_i1d_obj), public, DIMENSION(:), POINTER :: other_l_rows => Null()

local rows for each process row

type(array_i1d_obj), public, DIMENSION(:), POINTER :: other_l_cols => Null()

local columns for each process column

logical, public :: has_other_l_rows = .FALSE.

other_rows is defined

logical, public :: has_other_l_cols = .FALSE.

other_cols is defined

type(array_i1d_obj), public :: global_row_map

mapping from rows to sequence in local rows (global to local mapping)

type(array_i1d_obj), public :: global_col_map

mapping from rows to sequence in local columns (global to local mapping)

logical, public :: has_global_row_map = .FALSE.

whether other_row_map is defined

logical, public :: has_global_col_map = .FALSE.

whether other_col_map is defined

type(array_i1d_obj), public :: row_map

distribution map for rows

type(array_i1d_obj), public :: col_map

distribution map for columns

logical, public :: has_thread_dist = .FALSE.
type(array_i1d_obj), public :: thread_dist

thread distribution (of the rows)

integer, public :: num_threads = -1

number of threads in the environment

type(dbcsr_mp_obj), public :: mp_env

multiprocessor environment on which the distribution is based

integer, public :: refcount = 0

reference counter

type, public ::  dbcsr_distribution_obj

Components

Type Visibility Attributes Name Initial
type(dbcsr_distribution_type), public, POINTER :: d => Null()

type, public ::  dbcsr_imagedistribution_type

Image distributions are used to map incompatible processor row and column distributions. Used to ease storage or transfer between two different-sizes sets. For example, if there are 4 real processor rows that are mapped to 8 "virtual" processor rows, then there are two images for every real processor row.

Components

Type Visibility Attributes Name Initial
type(dbcsr_distribution_obj), public :: main

the main distribution

type(array_i1d_obj), public :: row_image

distribution of matrix elements' rows into image rows

type(array_i1d_obj), public :: col_image

distribution of matrix elements' columns into image columns

integer, public :: row_decimation = -1

Number of imaged rows mapped to a real row

integer, public :: col_decimation = -1

Number of imaged columns mapped to a real column

integer, public :: row_multiplicity = -1

Number of real rows mapped to a virtual row

integer, public :: col_multiplicity = -1

Number of real columns mapped to a virtual column

type(array_i1d_obj), public :: vrow_dist
type(array_i1d_obj), public :: vcol_dist
type(array_i1d_obj), public, DIMENSION(:), POINTER :: other_vl_rows => Null()
type(array_i1d_obj), public, DIMENSION(:), POINTER :: other_vl_cols => Null()
type(array_i1d_obj), public :: global_vrow_map
type(array_i1d_obj), public :: global_vcol_map
logical, public :: has_other_vl_rows = .FALSE.
logical, public :: has_other_vl_cols = .FALSE.
logical, public :: has_global_vrow_map = .FALSE.
logical, public :: has_global_vcol_map = .FALSE.
integer, public :: id = -1
integer, public :: refcount = 0

count of references

type, public ::  dbcsr_imagedistribution_obj

Components

Type Visibility Attributes Name Initial
type(dbcsr_imagedistribution_type), public, POINTER :: i => Null()

type, private ::  dbcsr_block_buffer_type

Buffer for blocks

Components

Type Visibility Attributes Name Initial
integer, public :: refcount = 0

Reference counter

logical, public, DIMENSION(:), POINTER :: dirty => Null()

Whether any buffers are dirty

type(dbcsr_data_obj), public, DIMENSION(:), POINTER :: buffers => Null()

Buffers

integer, public, DIMENSION(:, :), POINTER :: rcb => Null()

Row and column and offset and dimensions of data in the buffer

type(dbcsr_data_obj), public :: main

Main memory

type(dbcsr_data_obj), public, DIMENSION(:), POINTER :: backing => Null()

Backing memory (in lieu of main memory)

integer, public :: data_type = -1

Data type used for the buffers

type, private ::  dbcsr_block_buffer_obj

Object for the buffer of blocks

Components

Type Visibility Attributes Name Initial
type(dbcsr_block_buffer_type), public, POINTER :: b => Null()

Block buffer

type, public ::  dbcsr_iterator

An iterator over a DBCSR matrix.

Read more…

Components

Type Visibility Attributes Name Initial
type(dbcsr_type), public, POINTER :: matrix => Null()

the matrix

type(dbcsr_block_buffer_obj), public :: buffer_2d

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

type, private ::  dbcsr_mutable_type

Data area with random access reads, insertions, and deletions.

Components

Type Visibility Attributes Name Initial
type(btree_i8_sp2d), public :: btree_s

Data types for the various types

type(btree_i8_dp2d), public :: btree_d

Data types for the various types

type(btree_i8_cp2d), public :: btree_c

Data types for the various types

type(btree_i8_zp2d), public :: btree_z

Data types for the various types

integer, public :: refcount = 0

Reference counter

integer, public :: data_type = -1

The data type that is stored

type, public ::  dbcsr_mutable_obj

Object for the mutable data type

Components

Type Visibility Attributes Name Initial
type(dbcsr_mutable_type), public, POINTER :: m => Null()

type, public ::  dbcsr_work_type

Used for assembling a real matrix.

Components

Type Visibility Attributes Name Initial
type(dbcsr_data_obj), public :: data_area

holds actual values.

integer, public, DIMENSION(:), POINTER, CONTIGUOUS :: row_i => Null()

the row index of all of the blocks.

integer, public, DIMENSION(:), POINTER, CONTIGUOUS :: col_i => Null()

the column index of all of the blocks.

integer, public, DIMENSION(:), POINTER, CONTIGUOUS :: blk_p => Null()

the pointer into the data array of this block.

integer, public :: lastblk = -1

index of the last block entered into the row_i, col_i, and blk_p data structures

integer, public :: datasize = -1

the actual size of data present in the data element

integer, public :: datasize_after_filtering = -1

tree used to index data blocks (alternative to the row_i, col_i, and blk_p indices when index is scattered).

type(dbcsr_mutable_obj), public :: mutable

the final bcsr matrix

type, public ::  dbcsr_type

The BCSR sparse matrix type.

Read more…

Components

Type Visibility Attributes Name Initial
integer, public :: serial_number = -1

a unique number of each created matrix

logical, public :: valid = .FALSE.

whether the matrix is valid (consistent)

character(len=default_string_length), public :: name = ""

name of the matrix

type(dbcsr_data_obj), public :: data_area = dbcsr_data_obj()
integer, public, DIMENSION(:), POINTER, CONTIGUOUS :: index => Null()

agglomeration of the indices and offsets of pointers into this array.

integer, public, DIMENSION(:), POINTER :: row_p => Null()

points into the col_i and blk_p arrays, each element (1:nblkrows_total+1) points to the previous row's last element. So each rows has elements row_p(row)+1:row_p(row+1).

integer, public, DIMENSION(:), POINTER :: col_i => Null()

the global blocked column number of this block.

integer, public, DIMENSION(:), POINTER :: blk_p => Null()

the pointer into the data array of this block.

integer, public, DIMENSION(:), POINTER :: thr_c => Null()

elements/thread for list index

integer, public, DIMENSION(:), POINTER :: coo_l => Null()

coordinate list (used for direct indexing)

type(array_i1d_obj), public :: row_blk_size = array_i1d_obj()

sizes (rows in a block) of blocked rows

type(array_i1d_obj), public :: col_blk_size = array_i1d_obj()

sizes (columns in a block) of blocked columns

type(array_i1d_obj), public :: row_blk_offset = array_i1d_obj()

row offset (size = nrow+1)

type(array_i1d_obj), public :: col_blk_offset = array_i1d_obj()

col offset (size = ncol+1)

type(array_i1d_obj), public :: local_rows = array_i1d_obj()

Map of global to local rows when local indexing is enabled

type(array_i1d_obj), public :: global_rows = array_i1d_obj()
type(array_i1d_obj), public :: local_cols = array_i1d_obj()
type(array_i1d_obj), public :: global_cols = array_i1d_obj()
logical, public :: has_local_rows = .FALSE.
logical, public :: has_global_rows = .FALSE.
logical, public :: has_local_cols = .FALSE.
logical, public :: has_global_cols = .FALSE.
integer, public :: max_rbs = -1

maximal row sizes

integer, public :: max_cbs = -1

maximal column sizes

integer, public :: sparsity_id = -1
integer, public :: id_nr = -1
integer, public :: nblks = -1

number of blocks locally present

integer, public :: nze = -1

number of non-zero elements locally present

integer, public :: nblkrows_total = -1

size of entire matrix in blocked rows

integer, public :: nblkcols_total = -1

size of entire matrix in blocked columns

integer, public :: nfullrows_total = -1

size of entire matrix in full rows

integer, public :: nfullcols_total = -1

size of entire matrix in full columns

integer, public :: nblkrows_local = -1

size of local part of matrix in blocked rows

integer, public :: nblkcols_local = -1

size of local part of matrix in blocked columns

integer, public :: nfullrows_local = -1

size of local part of matrix in full rows

integer, public :: nfullcols_local = -1

size of local part of matrix in full columns

integer, public :: data_type = -1

'r'/'R' for single/double precision real or 'c'/'C' for single/double precision complex data

character, public :: replication_type = ""

multi-process replication used in the matrix

logical, public :: symmetry = .FALSE.

matrix has symmetry

logical, public :: negate_real = .FALSE.

symmetry is realized by negating the real part

logical, public :: negate_imaginary = .FALSE.

symmetry is realized by negating complex part (i.e., antisymmetric)

logical, public :: bcsc = .FALSE.

BCS Column instead of BCS Row

logical, public :: local_indexing = .FALSE.

Local indexing of rows instead of global indexing.

logical, public :: list_indexing = .FALSE.
type(dbcsr_memtype_type), public :: data_memory_type = dbcsr_memtype_type()

memory type for data

type(dbcsr_memtype_type), public :: index_memory_type = dbcsr_memtype_type()

memory type for the index

type(dbcsr_block_buffer_obj), public :: buffers = dbcsr_block_buffer_obj()

Block buffers

type(dbcsr_work_type), public, DIMENSION(:), POINTER :: wms => Null()
type(dbcsr_distribution_obj), public :: dist = dbcsr_distribution_obj()

distribution used by this matrix

integer, public :: refcount = 0

reference count

logical, public :: work_mutable = .FALSE.

uses the mutable data for working and not the append-only data

type, private ::  dbcsr_work_type_p

Pointer to a work matrix.

Components

Type Visibility Attributes Name Initial
type(dbcsr_work_type), public, POINTER :: w => Null()

the work matrix

type, public ::  dbcsr_type_p

Pointer to a object.

Components

Type Visibility Attributes Name Initial
type(dbcsr_type), public, POINTER :: matrix => Null()

the dbcsr_typeect

type, private ::  dbcsr_1d_array_obj

A 1-D array of DBCSR matrices

Components

Type Visibility Attributes Name Initial
type(dbcsr_type_p), public, DIMENSION(:), POINTER :: mats => Null()

the array of matrices

type, public ::  dbcsr_2d_array_obj

A 2-D array of DBCSR matrices

Components

Type Visibility Attributes Name Initial
type(dbcsr_type_p), public, DIMENSION(:, :), POINTER :: mats => Null()

the array of matrices

type, public ::  dbcsr_1d_array_type

An array of DBCSR matrices

Components

Type Visibility Attributes Name Initial
type(dbcsr_type), public, DIMENSION(:), POINTER :: mats => Null()

the matrices

type(dbcsr_imagedistribution_obj), public :: image_dist

image distribution

type, public ::  dbcsr_2d_array_type

A 2-d array of DBCSR matrices

Components

Type Visibility Attributes Name Initial
type(dbcsr_type), public, DIMENSION(:, :), POINTER :: mats => Null()

the matrices

type(dbcsr_imagedistribution_obj), public :: image_dist

image distribution

type, public ::  dbcsr_mpi_statistics_type

DBCSR MPI statistics

Components

Type Visibility Attributes Name Initial
integer, public :: last_mpi_ranks_used = -1
integer, public :: nimages = -1
integer, public :: nexchanged = -1
integer, public :: nfiltered = -1
real, public, DIMENSION(2, 3) :: data_size = 0.0
integer(kind=int_8), public, DIMENSION(SIZE(dbcsr_mpi_size_limits) + 1, 2, 2) :: data_size_breakdown = -1