Documentation for module dbcsr_types

DBCSR data types

source: dbcsr_types.F
Loading...

Forwarded symbols:

dbcsr_datatype_sizeof
dbcsr_data_types::dbcsr_datatype_sizeof
Helper-routine, returns size of given datatype in terms of bytes.
dbcsr_data_area_type
dbcsr_data_types::dbcsr_data_area_type
Stores actual data
dbcsr_data_obj
dbcsr_data_types::dbcsr_data_obj
...
dbcsr_memtype_default
dbcsr_data_types::dbcsr_memtype_default
...
dbcsr_memtype_type
dbcsr_data_types::dbcsr_memtype_type
...
dbcsr_scalar_type
dbcsr_data_types::dbcsr_scalar_type
Stores a scalar in any of the supported data types.
dbcsr_type_complex_4
dbcsr_data_types::dbcsr_type_complex_4
...
dbcsr_type_complex_4_2d
dbcsr_data_types::dbcsr_type_complex_4_2d
...
dbcsr_type_complex_8
dbcsr_data_types::dbcsr_type_complex_8
...
dbcsr_type_complex_8_2d
dbcsr_data_types::dbcsr_type_complex_8_2d
...
dbcsr_type_complex_default
dbcsr_data_types::dbcsr_type_complex_default
...
dbcsr_type_int_4
dbcsr_data_types::dbcsr_type_int_4
...
dbcsr_type_real_4
dbcsr_data_types::dbcsr_type_real_4
...
dbcsr_type_real_4_2d
dbcsr_data_types::dbcsr_type_real_4_2d
...
dbcsr_type_real_8
dbcsr_data_types::dbcsr_type_real_8
...
dbcsr_type_real_8_2d
dbcsr_data_types::dbcsr_type_real_8_2d
...
dbcsr_type_real_default
dbcsr_data_types::dbcsr_type_real_default
...

public Types:

dbcsr_type
The BCSR sparse matrix type.
dbcsr_mp_obj
A processor (process) grid distribution
dbcsr_work_type
Used for assembling a real matrix.
dbcsr_imagedistribution_obj
...
dbcsr_2d_array_obj
A 2-D array of DBCSR matrices
dbcsr_mutable_obj
Object for the mutable data type
dbcsr_mpi_statistics_type
DBCSR MPI statistics
dbcsr_type_p
Pointer to a object.
dbcsr_imagedistribution_type
Image distributions are used to map incompatible processor row and column distributions.
dbcsr_2d_array_type
A 2-d array of DBCSR matrices
dbcsr_1d_array_type
An array of DBCSR matrices
dbcsr_distribution_obj
...
dbcsr_iterator
An iterator over a DBCSR matrix.

Parameters:

CHARACTER
:: dbcsr_conjugate_transpose = 'c'
INTEGER
:: dbcsr_filter_frobenius = 1
INTEGER
:: dbcsr_func_artanh = 4
INTEGER
:: dbcsr_func_asin = 10
INTEGER
:: dbcsr_func_cos = 11
INTEGER
:: dbcsr_func_ddsin = 9
INTEGER
:: dbcsr_func_ddtanh = 3
INTEGER
:: dbcsr_func_dsin = 8
INTEGER
:: dbcsr_func_dtanh = 2
INTEGER
:: dbcsr_func_inverse = 0
INTEGER
:: dbcsr_func_inverse_special = 5
INTEGER
:: dbcsr_func_sin = 7
INTEGER
:: dbcsr_func_spread_from_zero = 6
INTEGER
:: dbcsr_func_tanh = 1
INTEGER
:: dbcsr_func_truncate = 12
INTEGER
:: dbcsr_meta_size = 19
INTEGER(int_8)
:: dbcsr_mpi_size_limits(6) = (/2**7,2**13,2**15,2**17,2**22,2**24/)
INTEGER
:: dbcsr_norm_column = 4
INTEGER
:: dbcsr_norm_frobenius = 1
INTEGER
:: dbcsr_norm_gershgorin = 3
INTEGER
:: dbcsr_norm_maxabsnorm = 2
CHARACTER
:: dbcsr_no_transpose = 'n'
INTEGER
:: dbcsr_num_slots = dbcsr_meta_size+11
CHARACTER
:: dbcsr_repl_col = 'c'
CHARACTER
:: dbcsr_repl_full = 'a'
CHARACTER
:: dbcsr_repl_none = 'n'
CHARACTER
:: dbcsr_repl_row = 'r'
INTEGER
:: dbcsr_slot_blk_p = dbcsr_meta_size+6
INTEGER
:: dbcsr_slot_col_i = dbcsr_meta_size+4
INTEGER
:: dbcsr_slot_coo_l = dbcsr_meta_size+10
INTEGER
:: dbcsr_slot_dense = 4
INTEGER
:: dbcsr_slot_home_coli = 17
INTEGER
:: dbcsr_slot_home_pcol = 15
INTEGER
:: dbcsr_slot_home_prow = 14
INTEGER
:: dbcsr_slot_home_rowi = 16
INTEGER
:: dbcsr_slot_home_vpcol = 19
INTEGER
:: dbcsr_slot_home_vprow = 18
INTEGER
:: dbcsr_slot_nblkcols_local = 10
INTEGER
:: dbcsr_slot_nblkcols_total = 6
INTEGER
:: dbcsr_slot_nblkrows_local = 9
INTEGER
:: dbcsr_slot_nblkrows_total = 5
INTEGER
:: dbcsr_slot_nblks = 2
INTEGER
:: dbcsr_slot_nfullcols_local = 12
INTEGER
:: dbcsr_slot_nfullcols_total = 8
INTEGER
:: dbcsr_slot_nfullrows_local = 11
INTEGER
:: dbcsr_slot_nfullrows_total = 7
INTEGER
:: dbcsr_slot_nze = 3
INTEGER
:: dbcsr_slot_row_p = dbcsr_meta_size+2
INTEGER
:: dbcsr_slot_size = 1
INTEGER
:: dbcsr_slot_thr_c = dbcsr_meta_size+8
INTEGER
:: dbcsr_slot_type = 13
CHARACTER
:: dbcsr_transpose = 't'
CHARACTER
:: dbcsr_type_antihermitian = 'k'
CHARACTER
:: dbcsr_type_antisymmetric = 'a'
CHARACTER
:: dbcsr_type_hermitian = 'h'
CHARACTER
:: dbcsr_type_invalid = '0'
CHARACTER
:: dbcsr_type_no_symmetry = 'n'
CHARACTER
:: dbcsr_type_symmetric = 's'

public Types:

TYPE :: dbcsr_1d_array_type

An array of DBCSR matrices


TYPE(dbcsr_type),
DIMENSION(:), POINTER :: mats => NULL() the matrices
:: image_dist image distribution

TYPE :: dbcsr_2d_array_obj

A 2-D array of DBCSR matrices


DIMENSION(:,:), POINTER :: mats => NULL() ...

TYPE :: dbcsr_2d_array_type

A 2-d array of DBCSR matrices


TYPE(dbcsr_type),
DIMENSION(:,:), POINTER :: mats => NULL() the matrices
:: image_dist image distribution

TYPE :: dbcsr_distribution_obj

...


POINTER :: d => NULL() ...

TYPE :: dbcsr_imagedistribution_obj

...


POINTER :: i => NULL() ...

TYPE :: dbcsr_imagedistribution_type

Image distributions are used to map incompatible processor row and column distributions.


:: main the main distribution
:: row_image ...
:: col_image ...
INTEGER
:: row_decimation = -1 ...
INTEGER
:: col_decimation = -1 ...
INTEGER
:: row_multiplicity = -1 ...
INTEGER
:: col_multiplicity = -1 ...
:: vrow_dist ...
:: vcol_dist ...
DIMENSION(:), POINTER :: other_vl_rows => NULL() ...
DIMENSION(:), POINTER :: other_vl_cols => NULL() ...
:: global_vrow_map ...
:: global_vcol_map ...
LOGICAL
:: has_other_vl_rows = .FALSE. ...
LOGICAL
:: has_other_vl_cols = .FALSE. ...
LOGICAL
:: has_global_vrow_map = .FALSE. ...
LOGICAL
:: has_global_vcol_map = .FALSE. ...
INTEGER
:: id = -1 ...
INTEGER
:: refcount = 0 count of references

TYPE :: dbcsr_iterator

An iterator over a DBCSR matrix.


TYPE(dbcsr_type),
POINTER :: matrix => NULL() the matrix
:: 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() ...
INTEGER,
DIMENSION(:), POINTER :: cbs => NULL() ...
INTEGER,
DIMENSION(:), POINTER :: roff => NULL() ...
INTEGER,
DIMENSION(:), POINTER :: coff => NULL() ...
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
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 :: tdist => NULL() ...
INTEGER,
DIMENSION(:), POINTER :: local_rows => NULL() Mapping of local rows to global rows (if local indexing is enabled)
INTEGER,
DIMENSION(:), POINTER :: global_rows => NULL() Mapping of global rows to local rows (if local indexing is enabled)
:: data_area ...

TYPE :: dbcsr_mpi_statistics_type

DBCSR MPI statistics


INTEGER
:: last_mpi_ranks_used = -1 ...
INTEGER
:: nimages = -1 ...
INTEGER
:: nexchanged = -1 ...
INTEGER
:: nfiltered = -1 ...
REAL,
DIMENSION(2,3) :: data_size = 0.0 ...
INTEGER(int_8),
DIMENSION(SIZE(DBCSR_MPI_SIZE_LIMITS)+1,2,2) :: data_size_breakdown = -1 ...

TYPE :: dbcsr_mp_obj

A processor (process) grid distribution


POINTER :: mp => NULL() ...

TYPE :: dbcsr_mutable_obj

Object for the mutable data type


POINTER :: m => NULL() ...

TYPE :: dbcsr_type

The BCSR sparse matrix type.


INTEGER
:: serial_number = -1 a unique number of each created matrix
LOGICAL
:: valid = .FALSE. whether the matrix is valid (consistent)
:: name = "" name of the matrix
:: data_area = DBCSR_DATA_OBJ() ...
INTEGER,
DIMENSION(:), POINTER :: index => NULL() (:) agglomeration of the indices and offsets of pointers into this array.
INTEGER,
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,
DIMENSION(:), POINTER :: col_i => NULL() the global blocked column number of this block.
INTEGER,
DIMENSION(:), POINTER :: blk_p => NULL() the pointer into the data array of this block.
INTEGER,
DIMENSION(:), POINTER :: thr_c => NULL() elements/thread for list index
INTEGER,
DIMENSION(:), POINTER :: coo_l => NULL() coordinate list (used for direct indexing)
:: row_blk_size = ARRAY_I1D_OBJ() sizes (rows in a block) of blocked rows
:: col_blk_size = ARRAY_I1D_OBJ() sizes (columns in a block) of blocked columns
:: row_blk_offset = ARRAY_I1D_OBJ() row offset (size = nrow+1)
:: col_blk_offset = ARRAY_I1D_OBJ() col offset (size = ncol+1)
:: local_rows = ARRAY_I1D_OBJ() Map of global to local rows when local indexing is enabled
:: global_rows = ARRAY_I1D_OBJ() ...
:: local_cols = ARRAY_I1D_OBJ() ...
:: global_cols = ARRAY_I1D_OBJ() ...
LOGICAL
:: has_local_rows = .FALSE. ...
LOGICAL
:: has_global_rows = .FALSE. ...
LOGICAL
:: has_local_cols = .FALSE. ...
LOGICAL
:: has_global_cols = .FALSE. ...
INTEGER
:: max_rbs = -1 ...
INTEGER
:: max_cbs = -1 ...
INTEGER
:: sparsity_id = -1 ...
INTEGER
:: id_nr = -1 ...
INTEGER
:: nblks = -1 number of blocks locally present
INTEGER
:: nze = -1 number of non-zero elements locally present
INTEGER
:: nblkrows_total = -1 ...
INTEGER
:: nblkcols_total = -1 ...
INTEGER
:: nfullrows_total = -1 ...
INTEGER
:: nfullcols_total = -1 ...
INTEGER
:: nblkrows_local = -1 ...
INTEGER
:: nblkcols_local = -1 ...
INTEGER
:: nfullrows_local = -1 ...
INTEGER
:: nfullcols_local = -1 ...
INTEGER
:: data_type = -1 'r'/'R' for single/double precision real or 'c'/'C' for single/double precision complex data
CHARACTER
:: replication_type = "" multi-process replication used in the matrix
LOGICAL
:: symmetry = .FALSE. matrix has symmetry
LOGICAL
:: negate_real = .FALSE. symmetry is realized by negating the real part
LOGICAL
:: negate_imaginary = .FALSE. symmetry is realized by negating complex part (i.e., antisymmetric)
LOGICAL
:: bcsc = .FALSE. ...
LOGICAL
:: local_indexing = .FALSE. Local indexing of rows instead of global indexing.
LOGICAL
:: list_indexing = .FALSE. ...
:: data_memory_type = DBCSR_MEMTYPE_TYPE() memory type for data
:: index_memory_type = DBCSR_MEMTYPE_TYPE() memory type for the index
:: buffers = DBCSR_BLOCK_BUFFER_OBJ() Block buffers
DIMENSION(:), POINTER :: wms => NULL() ...
:: dist = DBCSR_DISTRIBUTION_OBJ() distribution used by this matrix
INTEGER
:: refcount = 0 reference count
LOGICAL
:: work_mutable = .FALSE. uses the mutable data for working and not the append-only data

TYPE :: dbcsr_type_p

Pointer to a object.


TYPE(dbcsr_type),
POINTER :: matrix => NULL() the dbcsr_typeect

TYPE :: dbcsr_work_type

Used for assembling a real matrix.


:: data_area holds actual values.
INTEGER,
DIMENSION(:), POINTER :: row_i => NULL() the row index of all of the blocks.
INTEGER,
DIMENSION(:), POINTER :: col_i => NULL() the column index of all of the blocks.
INTEGER,
DIMENSION(:), POINTER :: blk_p => NULL() the pointer into the data array of this block.
INTEGER
:: lastblk = -1 index of the last block entered into the row_i, col_i, and blk_p data structures
INTEGER
:: datasize = -1 the actual size of data present in the data element
:: mutable ...


private Parameters/Types:

private Types:

TYPE :: dbcsr_block_buffer_obj

Object for the buffer of blocks


POINTER :: b => NULL() ...

TYPE :: dbcsr_block_buffer_type

Buffer for blocks


INTEGER
:: refcount = 0 Reference counter
LOGICAL,
DIMENSION(:), POINTER :: dirty => NULL() Whether any buffers are dirty
DIMENSION(:), POINTER :: buffers => NULL() Buffers
INTEGER,
DIMENSION(:,:), POINTER :: rcb => NULL() Row and column and offset and dimensions of data in the buffer
:: main Main memory
DIMENSION(:), POINTER :: backing => NULL() Backing memory (in lieu of main memory)
INTEGER
:: data_type = -1 Data type used for the buffers

TYPE :: dbcsr_distribution_type

Matrix distribution on the processor grid


:: row_dist_block ...
:: col_dist_block ...
:: local_rows list of rows local to the processor grid row
:: local_cols list of columns local to the processor grid column
:: row_dist_cluster ...
:: col_dist_cluster ...
INTEGER
:: max_row_dist ...
INTEGER
:: max_col_dist ...
DIMENSION(:), POINTER :: other_l_rows => NULL() local rows for each process row
DIMENSION(:), POINTER :: other_l_cols => NULL() local columns for each process column
LOGICAL
:: has_other_l_rows = .FALSE. other_rows is defined
LOGICAL
:: has_other_l_cols = .FALSE. other_cols is defined
:: global_row_map mapping from rows to sequence in local rows (global to local mapping)
:: global_col_map mapping from rows to sequence in local columns (global to local mapping)
LOGICAL
:: has_global_row_map = .FALSE. whether other_row_map is defined
LOGICAL
:: has_global_col_map = .FALSE. whether other_col_map is defined
:: row_map distribution map for rows
:: col_map distribution map for columns
LOGICAL
:: has_thread_dist = .FALSE. ...
:: thread_dist thread distribution (of the rows)
INTEGER
:: num_threads = -1 ...
:: mp_env mulitprocessor environment on which the distribution is based
INTEGER
:: refcount = 0 reference counter

TYPE :: dbcsr_mp_type

A processor (process) grid distribution


INTEGER
:: mynode = -1 ...
INTEGER
:: numnodes = -1 ...
INTEGER
:: myprow = -1 ...
INTEGER
:: mypcol = -1 ...
INTEGER
:: mp_group = -1 message-passing group ID
INTEGER,
DIMENSION(:,:), POINTER :: pgrid => NULL() processor grid
INTEGER
:: refcount = 0 reference counter
LOGICAL
:: subgroups_defined = .FALSE. whether the subgroups are defined
INTEGER
:: prow_group = -1 per-process-row communicator
INTEGER
:: pcol_group = -1 pre-process-column communicator

TYPE :: dbcsr_mutable_type

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


:: btree_s ...
:: btree_d ...
:: btree_c ...
:: btree_z ...
INTEGER
:: refcount = 0 Reference counter
INTEGER
:: data_type = -1 The data type that is stored