13 dbcsr_clear_mempools, dbcsr_clear_prv =>
dbcsr_clear, &
15 dbcsr_convert_offsets_to_sizes, dbcsr_convert_sizes_to_offsets, &
18 dbcsr_csr_dbcsr_blkrow_dist, dbcsr_csr_destroy, dbcsr_csr_eqrow_floor_dist, &
19 dbcsr_csr_p_type, dbcsr_csr_print_sparsity, dbcsr_csr_type, &
20 dbcsr_csr_type_real_8 => dbcsr_type_real_8, dbcsr_csr_write, &
42 dbcsr_no_transpose, dbcsr_print_config, dbcsr_print_statistics, &
46 dbcsr_run_tests, dbcsr_scale_prv =>
dbcsr_scale, dbcsr_set_config, &
49 dbcsr_type_antisymmetric, dbcsr_type_complex_8, dbcsr_type_no_symmetry, &
50 dbcsr_type_prv =>
dbcsr_type, dbcsr_type_real_8, dbcsr_type_symmetric, &
61#include "../base/base_uses.f90"
67 PUBLIC :: dbcsr_type_no_symmetry
68 PUBLIC :: dbcsr_type_symmetric
69 PUBLIC :: dbcsr_type_antisymmetric
70 PUBLIC :: dbcsr_transpose
71 PUBLIC :: dbcsr_no_transpose
80 PUBLIC :: dbcsr_clear_mempools
81 PUBLIC :: dbcsr_init_lib
82 PUBLIC :: dbcsr_finalize_lib
83 PUBLIC :: dbcsr_set_config
84 PUBLIC :: dbcsr_get_default_config
85 PUBLIC :: dbcsr_print_config
86 PUBLIC :: dbcsr_reset_randmat_seed
88 PUBLIC :: dbcsr_print_statistics
146 PUBLIC :: dbcsr_distribution_get_num_images
147 PUBLIC :: dbcsr_convert_offsets_to_sizes
148 PUBLIC :: dbcsr_convert_sizes_to_offsets
149 PUBLIC :: dbcsr_run_tests
150 PUBLIC :: dbcsr_test_mm
154 PUBLIC :: dbcsr_csr_type
155 PUBLIC :: dbcsr_csr_p_type
159 PUBLIC :: dbcsr_csr_destroy
160 PUBLIC :: dbcsr_csr_create
161 PUBLIC :: dbcsr_csr_eqrow_floor_dist
162 PUBLIC :: dbcsr_csr_dbcsr_blkrow_dist
163 PUBLIC :: dbcsr_csr_print_sparsity
164 PUBLIC :: dbcsr_csr_write
166 PUBLIC :: dbcsr_csr_type_real_8
178 TYPE(dbcsr_type_prv) :: dbcsr = dbcsr_type_prv()
184 TYPE(dbcsr_distribution_type_prv) :: dbcsr = dbcsr_distribution_type_prv()
190 TYPE(dbcsr_iterator_type_prv) :: dbcsr = dbcsr_iterator_type_prv()
195 MODULE PROCEDURE dbcsr_create_new, dbcsr_create_template
198 LOGICAL,
PARAMETER,
PRIVATE :: USE_DBCSR_BACKEND = .true.
209 IF (
ASSOCIATED(matrix))
THEN
224 IF (
ASSOCIATED(matrix))
THEN
239 CALL cp_abort(__location__, &
240 'You should not "deallocate" a referenced matrix. '// &
241 'Avoid pointers to DBCSR matrices.')
252 SUBROUTINE dbcsr_add(matrix_a, matrix_b, alpha_scalar, beta_scalar)
255 REAL(kind=
dp),
INTENT(IN) :: alpha_scalar, beta_scalar
257 IF (use_dbcsr_backend)
THEN
258 CALL dbcsr_add_prv(matrix_a%dbcsr, matrix_b%dbcsr, alpha_scalar, beta_scalar)
260 IF (alpha_scalar /= 1.0_dp .OR. beta_scalar /= 1.0_dp) cpabort(
"Not yet implemented for DBM.")
261 CALL dbm_add(matrix_a%dbm, matrix_b%dbm)
272 CHARACTER(len=*),
INTENT(IN) :: filepath
276 IF (use_dbcsr_backend)
THEN
277 CALL dbcsr_binary_read_prv(filepath, distribution%dbcsr, matrix_new%dbcsr)
279 cpabort(
"Not yet implemented for DBM.")
290 CHARACTER(LEN=*),
INTENT(IN) :: filepath
292 IF (use_dbcsr_backend)
THEN
293 CALL dbcsr_binary_write_prv(matrix%dbcsr, filepath)
295 cpabort(
"Not yet implemented for DBM.")
306 IF (use_dbcsr_backend)
THEN
307 CALL dbcsr_clear_prv(matrix%dbcsr)
322 IF (use_dbcsr_backend)
THEN
323 CALL dbcsr_complete_redistribute_prv(matrix%dbcsr, redist%dbcsr)
336 TYPE(dbcsr_csr_type),
INTENT(INOUT) :: csr_mat
338 IF (use_dbcsr_backend)
THEN
339 CALL convert_csr_to_dbcsr_prv(dbcsr_mat%dbcsr, csr_mat)
341 cpabort(
"Not yet implemented for DBM.")
352 TYPE(dbcsr_csr_type),
INTENT(INOUT) :: csr_mat
354 IF (use_dbcsr_backend)
THEN
355 CALL convert_dbcsr_to_csr_prv(dbcsr_mat%dbcsr, csr_mat)
357 cpabort(
"Not yet implemented for DBM.")
369 SUBROUTINE dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
372 CHARACTER(LEN=*),
INTENT(IN),
OPTIONAL :: name
373 LOGICAL,
INTENT(IN),
OPTIONAL :: keep_sparsity, keep_imaginary
375 IF (use_dbcsr_backend)
THEN
376 CALL dbcsr_copy_prv(matrix_b%dbcsr, matrix_a%dbcsr, name=name, &
377 keep_sparsity=keep_sparsity, keep_imaginary=keep_imaginary)
379 IF (
PRESENT(name) .OR.
PRESENT(keep_sparsity) .OR.
PRESENT(keep_imaginary))
THEN
380 cpabort(
"Not yet implemented for DBM.")
382 CALL dbm_copy(matrix_b%dbm, matrix_a%dbm)
397 SUBROUTINE dbcsr_create_new(matrix, name, dist, matrix_type, row_blk_size, col_blk_size, &
398 reuse_arrays, mutable_work)
400 CHARACTER(len=*),
INTENT(IN) :: name
402 CHARACTER,
INTENT(IN) :: matrix_type
403 INTEGER,
DIMENSION(:),
INTENT(INOUT),
POINTER :: row_blk_size, col_blk_size
404 LOGICAL,
INTENT(IN),
OPTIONAL :: reuse_arrays, mutable_work
406 IF (use_dbcsr_backend)
THEN
407 CALL dbcsr_create_prv(matrix=matrix%dbcsr, name=name, dist=dist%dbcsr, &
408 matrix_type=matrix_type, row_blk_size=row_blk_size, &
409 col_blk_size=col_blk_size, nze=0, data_type=dbcsr_type_real_8, &
410 reuse_arrays=reuse_arrays, mutable_work=mutable_work)
412 cpabort(
"Not yet implemented for DBM.")
414 END SUBROUTINE dbcsr_create_new
428 SUBROUTINE dbcsr_create_template(matrix, name, template, dist, matrix_type, &
429 row_blk_size, col_blk_size, reuse_arrays, mutable_work)
431 CHARACTER(len=*),
INTENT(IN),
OPTIONAL :: name
435 CHARACTER,
INTENT(IN),
OPTIONAL :: matrix_type
436 INTEGER,
DIMENSION(:),
INTENT(INOUT),
OPTIONAL, &
437 POINTER :: row_blk_size, col_blk_size
438 LOGICAL,
INTENT(IN),
OPTIONAL :: reuse_arrays, mutable_work
440 IF (use_dbcsr_backend)
THEN
441 IF (
PRESENT(dist))
THEN
442 CALL dbcsr_create_prv(matrix=matrix%dbcsr, name=name, template=template%dbcsr, &
443 dist=dist%dbcsr, matrix_type=matrix_type, &
444 row_blk_size=row_blk_size, col_blk_size=col_blk_size, &
445 nze=0, data_type=dbcsr_type_real_8, reuse_arrays=reuse_arrays, &
446 mutable_work=mutable_work)
448 CALL dbcsr_create_prv(matrix=matrix%dbcsr, name=name, template=template%dbcsr, &
449 matrix_type=matrix_type, &
450 row_blk_size=row_blk_size, col_blk_size=col_blk_size, &
451 nze=0, data_type=dbcsr_type_real_8, reuse_arrays=reuse_arrays, &
452 mutable_work=mutable_work)
455 cpabort(
"Not yet implemented for DBM.")
457 END SUBROUTINE dbcsr_create_template
470 TYPE(dbcsr_csr_type),
INTENT(OUT) :: csr_mat
471 INTEGER :: dist_format
472 TYPE(
dbcsr_type),
INTENT(IN),
OPTIONAL :: csr_sparsity
473 INTEGER,
INTENT(IN),
OPTIONAL :: numnodes
475 IF (use_dbcsr_backend)
THEN
476 IF (
PRESENT(csr_sparsity))
THEN
477 CALL dbcsr_csr_create_from_dbcsr_prv(dbcsr_mat%dbcsr, csr_mat, dist_format, &
478 csr_sparsity%dbcsr, numnodes)
480 CALL dbcsr_csr_create_from_dbcsr_prv(dbcsr_mat%dbcsr, csr_mat, &
481 dist_format, numnodes=numnodes)
484 cpabort(
"Not yet implemented for DBM.")
496 TYPE(
dbcsr_type),
INTENT(IN) :: rmatrix, imatrix
497 TYPE(dbcsr_csr_type),
INTENT(INOUT) :: csr_mat
498 INTEGER :: dist_format
502 IF (use_dbcsr_backend)
THEN
503 CALL dbcsr_create_prv(tmp_matrix%dbcsr, template=rmatrix%dbcsr, data_type=dbcsr_type_complex_8)
504 CALL dbcsr_create_prv(cmatrix%dbcsr, template=rmatrix%dbcsr, data_type=dbcsr_type_complex_8)
505 CALL dbcsr_copy_prv(cmatrix%dbcsr, rmatrix%dbcsr)
506 CALL dbcsr_copy_prv(tmp_matrix%dbcsr, imatrix%dbcsr)
507 CALL dbcsr_add_prv(cmatrix%dbcsr, tmp_matrix%dbcsr,
z_one,
gaussi)
508 CALL dbcsr_release_prv(tmp_matrix%dbcsr)
510 CALL dbcsr_csr_create_from_dbcsr_prv(cmatrix%dbcsr, csr_mat, dist_format)
511 CALL convert_dbcsr_to_csr_prv(cmatrix%dbcsr, csr_mat)
512 CALL dbcsr_release_prv(cmatrix%dbcsr)
514 cpabort(
"Not yet implemented for DBM.")
527 IF (use_dbcsr_backend)
THEN
528 CALL dbcsr_desymmetrize_prv(matrix_a%dbcsr, matrix_b%dbcsr)
530 cpabort(
"Not yet implemented for DBM.")
541 IF (use_dbcsr_backend)
THEN
542 CALL dbcsr_distribute_prv(matrix%dbcsr)
544 cpabort(
"Not yet implemented for DBM.")
569 group, mynode, numnodes, nprows, npcols, myprow, mypcol, &
570 pgrid, subgroups_defined, prow_group, pcol_group)
572 INTEGER,
DIMENSION(:),
OPTIONAL,
POINTER :: row_dist, col_dist
573 INTEGER,
INTENT(OUT),
OPTIONAL :: nrows, ncols
574 LOGICAL,
INTENT(OUT),
OPTIONAL :: has_threads
575 INTEGER,
INTENT(OUT),
OPTIONAL :: group, mynode, numnodes, nprows, npcols, &
577 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: pgrid
578 LOGICAL,
INTENT(OUT),
OPTIONAL :: subgroups_defined
579 INTEGER,
INTENT(OUT),
OPTIONAL :: prow_group, pcol_group
581 IF (use_dbcsr_backend)
THEN
582 CALL dbcsr_distribution_get_prv(dist%dbcsr, row_dist, col_dist, nrows, ncols, has_threads, &
583 group, mynode, numnodes, nprows, npcols, myprow, mypcol, &
584 pgrid, subgroups_defined, prow_group, pcol_group)
586 cpabort(
"Not yet implemented for DBM.")
597 IF (use_dbcsr_backend)
THEN
598 CALL dbcsr_distribution_hold_prv(dist%dbcsr)
600 cpabort(
"Not yet implemented for DBM.")
618 INTEGER,
INTENT(IN),
OPTIONAL :: group
619 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: pgrid
620 INTEGER,
DIMENSION(:),
INTENT(INOUT),
POINTER :: row_dist, col_dist
621 LOGICAL,
INTENT(IN),
OPTIONAL :: reuse_arrays
623 IF (use_dbcsr_backend)
THEN
624 IF (
PRESENT(template))
THEN
625 CALL dbcsr_distribution_new_prv(dist%dbcsr, template%dbcsr, group, pgrid, &
626 row_dist, col_dist, reuse_arrays)
628 CALL dbcsr_distribution_new_prv(dist%dbcsr, group=group, pgrid=pgrid, &
629 row_dist=row_dist, col_dist=col_dist, &
630 reuse_arrays=reuse_arrays)
633 cpabort(
"Not yet implemented for DBM.")
644 IF (use_dbcsr_backend)
THEN
645 CALL dbcsr_distribution_release_prv(dist%dbcsr)
647 cpabort(
"Not yet implemented for DBM.")
658 REAL(
dp),
INTENT(IN) :: eps
660 IF (use_dbcsr_backend)
THEN
661 CALL dbcsr_filter_prv(matrix%dbcsr, eps)
663 cpabort(
"Not yet implemented for DBM.")
674 IF (use_dbcsr_backend)
THEN
675 CALL dbcsr_finalize_prv(matrix%dbcsr)
677 cpabort(
"Not yet implemented for DBM.")
693 INTEGER,
INTENT(IN) :: row, col
694 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: block
695 LOGICAL,
INTENT(OUT) :: found
696 INTEGER,
INTENT(OUT),
OPTIONAL :: row_size, col_size
698 IF (use_dbcsr_backend)
THEN
699 CALL dbcsr_get_block_p_prv(matrix%dbcsr, row, col, block, found, row_size, col_size)
701 cpabort(
"Not yet implemented for DBM.")
717 TYPE(
dbcsr_type),
INTENT(IN),
TARGET :: matrix
718 INTEGER,
INTENT(IN) :: row, col
719 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: block
720 LOGICAL,
INTENT(OUT) :: found
721 INTEGER,
INTENT(OUT),
OPTIONAL :: row_size, col_size
732 IF (use_dbcsr_backend)
THEN
734 CALL dbcsr_get_block_p_prv(matrix_p%dbcsr, row, col, block, found, row_size, col_size)
736 cpabort(
"Not yet implemented for DBM.")
749 INTEGER,
INTENT(IN),
OPTIONAL :: lb, ub
750 REAL(kind=
dp),
DIMENSION(:),
POINTER :: res
752 IF (use_dbcsr_backend)
THEN
753 res => dbcsr_get_data_p_prv(matrix%dbcsr, select_data_type=0.0_dp, lb=lb, ub=ub)
755 cpabort(
"Not yet implemented for DBM.")
768 IF (use_dbcsr_backend)
THEN
769 data_size = dbcsr_get_data_size_prv(matrix%dbcsr)
771 cpabort(
"Not yet implemented for DBM.")
802 nfullrows_total, nfullcols_total, nblkrows_local, nblkcols_local, &
803 nfullrows_local, nfullcols_local, my_prow, my_pcol, &
804 local_rows, local_cols, proc_row_dist, proc_col_dist, &
805 row_blk_size, col_blk_size, row_blk_offset, col_blk_offset, &
806 distribution, name, matrix_type, group)
808 INTEGER,
INTENT(OUT),
OPTIONAL :: nblkrows_total, nblkcols_total, nfullrows_total, &
809 nfullcols_total, nblkrows_local, nblkcols_local, nfullrows_local, nfullcols_local, &
811 INTEGER,
DIMENSION(:),
OPTIONAL,
POINTER :: local_rows, local_cols, proc_row_dist, &
812 proc_col_dist, row_blk_size, col_blk_size, row_blk_offset, col_blk_offset
814 OPTIONAL :: distribution
815 CHARACTER(len=*),
INTENT(OUT),
OPTIONAL :: name
816 CHARACTER,
INTENT(OUT),
OPTIONAL :: matrix_type
819 INTEGER :: group_handle
820 TYPE(dbcsr_distribution_type_prv) :: my_distribution
822 IF (use_dbcsr_backend)
THEN
823 CALL dbcsr_get_info_prv(matrix=matrix%dbcsr, &
824 nblkrows_total=nblkrows_total, &
825 nblkcols_total=nblkcols_total, &
826 nfullrows_total=nfullrows_total, &
827 nfullcols_total=nfullcols_total, &
828 nblkrows_local=nblkrows_local, &
829 nblkcols_local=nblkcols_local, &
830 nfullrows_local=nfullrows_local, &
831 nfullcols_local=nfullcols_local, &
834 local_rows=local_rows, &
835 local_cols=local_cols, &
836 proc_row_dist=proc_row_dist, &
837 proc_col_dist=proc_col_dist, &
838 row_blk_size=row_blk_size, &
839 col_blk_size=col_blk_size, &
840 row_blk_offset=row_blk_offset, &
841 col_blk_offset=col_blk_offset, &
842 distribution=my_distribution, &
844 matrix_type=matrix_type, &
847 IF (
PRESENT(distribution)) distribution%dbcsr = my_distribution
848 IF (
PRESENT(group))
CALL group%set_handle(group_handle)
850 cpabort(
"Not yet implemented for DBM.")
861 CHARACTER :: matrix_type
863 IF (use_dbcsr_backend)
THEN
864 matrix_type = dbcsr_get_matrix_type_prv(matrix%dbcsr)
866 cpabort(
"Not yet implemented for DBM.")
877 INTEGER :: num_blocks
879 IF (use_dbcsr_backend)
THEN
880 num_blocks = dbcsr_get_num_blocks_prv(matrix%dbcsr)
882 cpabort(
"Not yet implemented for DBM.")
893 REAL(kind=
dp) :: occupation
895 IF (use_dbcsr_backend)
THEN
896 occupation = dbcsr_get_occupation_prv(matrix%dbcsr)
898 cpabort(
"Not yet implemented for DBM.")
911 INTEGER,
INTENT(IN) :: row, column
912 INTEGER,
INTENT(OUT) :: processor
914 IF (use_dbcsr_backend)
THEN
915 CALL dbcsr_get_stored_coordinates_prv(matrix%dbcsr, row, column, processor)
917 cpabort(
"Not yet implemented for DBM.")
928 LOGICAL :: has_symmetry
930 IF (use_dbcsr_backend)
THEN
931 has_symmetry = dbcsr_has_symmetry_prv(matrix%dbcsr)
933 cpabort(
"Not yet implemented for DBM.")
944 LOGICAL :: blocks_left
946 IF (use_dbcsr_backend)
THEN
947 blocks_left = dbcsr_iterator_blocks_left_prv(iterator%dbcsr)
949 cpabort(
"Not yet implemented for DBM.")
967 block_number_argument_has_been_removed, &
968 row_size, col_size, &
969 row_offset, col_offset, transposed)
971 INTEGER,
INTENT(OUT),
OPTIONAL :: row, column
972 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: block
973 LOGICAL,
OPTIONAL :: block_number_argument_has_been_removed
974 INTEGER,
INTENT(OUT),
OPTIONAL :: row_size, col_size, row_offset, &
976 LOGICAL,
INTENT(OUT),
OPTIONAL :: transposed
978 INTEGER :: my_column, my_row
979 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: my_block
981 cpassert(.NOT.
PRESENT(block_number_argument_has_been_removed))
983 IF (use_dbcsr_backend)
THEN
984 IF (
PRESENT(transposed))
THEN
985 CALL dbcsr_iterator_next_block_prv(iterator%dbcsr, row=my_row, column=my_column, &
986 block=my_block, row_size=row_size, col_size=col_size, &
987 row_offset=row_offset, col_offset=col_offset, &
988 transposed=transposed)
990 CALL dbcsr_iterator_next_block_prv(iterator%dbcsr, row=my_row, column=my_column, &
991 block=my_block, row_size=row_size, col_size=col_size, &
992 row_offset=row_offset, col_offset=col_offset)
994 IF (
PRESENT(block)) block => my_block
995 IF (
PRESENT(row)) row = my_row
996 IF (
PRESENT(column)) column = my_column
998 cpabort(
"Not yet implemented for DBM.")
1013 LOGICAL,
INTENT(IN),
OPTIONAL :: shared, dynamic, dynamic_byrows
1015 IF (use_dbcsr_backend)
THEN
1016 CALL dbcsr_iterator_start_prv(iterator%dbcsr, matrix%dbcsr, shared, dynamic, dynamic_byrows)
1018 cpabort(
"Not yet implemented for DBM.")
1034 LOGICAL,
INTENT(IN),
OPTIONAL :: shared, dynamic, dynamic_byrows
1036 IF (use_dbcsr_backend)
THEN
1037 CALL dbcsr_iterator_start_prv(iterator%dbcsr, matrix%dbcsr, shared, dynamic, &
1038 dynamic_byrows, read_only=.true.)
1040 cpabort(
"Not yet implemented for DBM.")
1051 IF (use_dbcsr_backend)
THEN
1052 CALL dbcsr_iterator_stop_prv(iterator%dbcsr)
1054 cpabort(
"Not yet implemented for DBM.")
1065 IF (use_dbcsr_backend)
THEN
1066 CALL dbcsr_mp_grid_setup_prv(dist%dbcsr)
1068 cpabort(
"Not yet implemented for DBM.")
1092 matrix_c, first_row, last_row, &
1093 first_column, last_column, first_k, last_k, &
1094 retain_sparsity, filter_eps, flop)
1095 CHARACTER(LEN=1),
INTENT(IN) :: transa, transb
1096 REAL(kind=
dp),
INTENT(IN) :: alpha
1097 TYPE(
dbcsr_type),
INTENT(IN) :: matrix_a, matrix_b
1098 REAL(kind=
dp),
INTENT(IN) :: beta
1100 INTEGER,
INTENT(IN),
OPTIONAL :: first_row, last_row, first_column, &
1101 last_column, first_k, last_k
1102 LOGICAL,
INTENT(IN),
OPTIONAL :: retain_sparsity
1103 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: filter_eps
1104 INTEGER(int_8),
INTENT(OUT),
OPTIONAL :: flop
1106 IF (use_dbcsr_backend)
THEN
1107 CALL dbcsr_multiply_prv(transa, transb, alpha, matrix_a%dbcsr, matrix_b%dbcsr, beta, &
1108 matrix_c%dbcsr, first_row, last_row, first_column, last_column, &
1109 first_k, last_k, retain_sparsity, filter_eps=filter_eps, flop=flop)
1111 cpabort(
"Not yet implemented for DBM.")
1125 INTEGER,
INTENT(IN) :: row, col
1126 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(IN) :: block
1127 LOGICAL,
INTENT(IN),
OPTIONAL :: summation
1129 IF (use_dbcsr_backend)
THEN
1130 CALL dbcsr_put_block_prv(matrix%dbcsr, row, col, block, summation=summation)
1132 cpabort(
"Not yet implemented for DBM.")
1143 IF (use_dbcsr_backend)
THEN
1144 CALL dbcsr_release_prv(matrix%dbcsr)
1146 cpabort(
"Not yet implemented for DBM.")
1157 IF (use_dbcsr_backend)
THEN
1158 CALL dbcsr_replicate_all_prv(matrix%dbcsr)
1160 cpabort(
"Not yet implemented for DBM.")
1172 INTEGER,
DIMENSION(:),
INTENT(IN) :: rows, cols
1174 IF (use_dbcsr_backend)
THEN
1175 CALL dbcsr_reserve_blocks_prv(matrix%dbcsr, rows, cols)
1177 cpabort(
"Not yet implemented for DBM.")
1188 REAL(kind=
dp),
INTENT(IN) :: alpha_scalar
1190 IF (use_dbcsr_backend)
THEN
1191 CALL dbcsr_scale_prv(matrix%dbcsr, alpha_scalar)
1193 CALL dbm_scale(matrix%dbm, alpha_scalar)
1204 REAL(kind=
dp),
INTENT(IN) :: alpha
1206 IF (use_dbcsr_backend)
THEN
1207 CALL dbcsr_set_prv(matrix%dbcsr, alpha)
1209 IF (alpha == 0.0_dp)
THEN
1212 cpabort(
"Not yet implemented for DBM.")
1224 IF (use_dbcsr_backend)
THEN
1225 CALL dbcsr_sum_replicated_prv(matrix%dbcsr)
1227 cpabort(
"Not yet implemented for DBM.")
1241 TYPE(
dbcsr_type),
INTENT(INOUT) :: transposed
1243 LOGICAL,
INTENT(IN),
OPTIONAL :: shallow_data_copy, transpose_distribution
1245 OPTIONAL :: use_distribution
1247 IF (use_dbcsr_backend)
THEN
1248 IF (
PRESENT(use_distribution))
THEN
1249 CALL dbcsr_transposed_prv(transposed%dbcsr, normal%dbcsr, &
1250 shallow_data_copy=shallow_data_copy, &
1251 transpose_distribution=transpose_distribution, &
1252 use_distribution=use_distribution%dbcsr)
1254 CALL dbcsr_transposed_prv(transposed%dbcsr, normal%dbcsr, &
1255 shallow_data_copy=shallow_data_copy, &
1256 transpose_distribution=transpose_distribution)
1259 cpabort(
"Not yet implemented for DBM.")
1270 LOGICAL :: valid_index
1272 IF (use_dbcsr_backend)
THEN
1273 valid_index = dbcsr_valid_index_prv(matrix%dbcsr)
1275 valid_index = .true.
1287 INTEGER,
INTENT(IN),
OPTIONAL :: verbosity
1288 LOGICAL,
INTENT(IN),
OPTIONAL :: local
1290 IF (use_dbcsr_backend)
THEN
1291 CALL dbcsr_verify_matrix_prv(matrix%dbcsr, verbosity, local)
1307 INTEGER,
INTENT(IN),
OPTIONAL :: nblks_guess, sizedata_guess, n
1308 LOGICAL,
INTENT(in),
OPTIONAL :: work_mutable
1310 IF (use_dbcsr_backend)
THEN
1311 CALL dbcsr_work_create_prv(matrix%dbcsr, nblks_guess, sizedata_guess, n, work_mutable)
1324 TYPE(
dbcsr_type),
INTENT(IN) :: matrix_a, matrix_b
1325 REAL(kind=
dp),
INTENT(INOUT) :: result
1327 IF (use_dbcsr_backend)
THEN
1328 CALL dbcsr_dot_prv(matrix_a%dbcsr, matrix_b%dbcsr, result)
1330 cpabort(
"Not yet implemented for DBM.")
subroutine, public dbcsr_verify_matrix(matrix, verbosity, local)
...
subroutine, public dbcsr_transposed(transposed, normal, shallow_data_copy, transpose_distribution, use_distribution)
...
subroutine, public dbcsr_distribution_release(dist)
...
logical function, public dbcsr_has_symmetry(matrix)
...
subroutine, public dbcsr_release_p(matrix)
...
integer function, public dbcsr_get_data_size(matrix)
...
subroutine, public dbcsr_get_readonly_block_p(matrix, row, col, block, found, row_size, col_size)
Like dbcsr_get_block_p() but with matrix being INTENT(IN). When invoking this routine,...
subroutine, public dbcsr_scale(matrix, alpha_scalar)
...
subroutine, public dbcsr_convert_dbcsr_to_csr(dbcsr_mat, csr_mat)
...
subroutine, public dbcsr_distribution_new(dist, template, group, pgrid, row_dist, col_dist, reuse_arrays)
...
subroutine, public dbcsr_deallocate_matrix(matrix)
...
character function, public dbcsr_get_matrix_type(matrix)
...
logical function, public dbcsr_iterator_blocks_left(iterator)
...
subroutine, public dbcsr_distribution_hold(dist)
...
subroutine, public dbcsr_iterator_stop(iterator)
...
subroutine, public dbcsr_convert_csr_to_dbcsr(dbcsr_mat, csr_mat)
...
logical function, public dbcsr_valid_index(matrix)
...
subroutine, public dbcsr_desymmetrize(matrix_a, matrix_b)
...
subroutine, public dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
...
subroutine, public dbcsr_get_block_p(matrix, row, col, block, found, row_size, col_size)
...
subroutine, public dbcsr_multiply(transa, transb, alpha, matrix_a, matrix_b, beta, matrix_c, first_row, last_row, first_column, last_column, first_k, last_k, retain_sparsity, filter_eps, flop)
...
subroutine, public dbcsr_replicate_all(matrix)
...
subroutine, public dbcsr_get_info(matrix, nblkrows_total, nblkcols_total, nfullrows_total, nfullcols_total, nblkrows_local, nblkcols_local, nfullrows_local, nfullcols_local, my_prow, my_pcol, local_rows, local_cols, proc_row_dist, proc_col_dist, row_blk_size, col_blk_size, row_blk_offset, col_blk_offset, distribution, name, matrix_type, group)
...
subroutine, public dbcsr_reserve_blocks(matrix, rows, cols)
...
subroutine, public dbcsr_get_stored_coordinates(matrix, row, column, processor)
...
subroutine, public dbcsr_csr_create_and_convert_complex(rmatrix, imatrix, csr_mat, dist_format)
Combines csr_create_from_dbcsr and convert_dbcsr_to_csr to produce a complex CSR matrix.
subroutine, public dbcsr_init_p(matrix)
...
subroutine, public dbcsr_csr_create_from_dbcsr(dbcsr_mat, csr_mat, dist_format, csr_sparsity, numnodes)
...
subroutine, public dbcsr_distribute(matrix)
...
real(kind=dp) function, dimension(:), pointer, public dbcsr_get_data_p(matrix, lb, ub)
...
subroutine, public dbcsr_work_create(matrix, nblks_guess, sizedata_guess, n, work_mutable)
...
subroutine, public dbcsr_sum_replicated(matrix)
...
subroutine, public dbcsr_iterator_next_block(iterator, row, column, block, block_number_argument_has_been_removed, row_size, col_size, row_offset, col_offset, transposed)
...
subroutine, public dbcsr_filter(matrix, eps)
...
subroutine, public dbcsr_binary_write(matrix, filepath)
...
real(kind=dp) function, public dbcsr_get_occupation(matrix)
...
subroutine, public dbcsr_dot_threadsafe(matrix_a, matrix_b, result)
...
subroutine, public dbcsr_finalize(matrix)
...
subroutine, public dbcsr_iterator_start(iterator, matrix, shared, dynamic, dynamic_byrows)
...
subroutine, public dbcsr_set(matrix, alpha)
...
subroutine, public dbcsr_release(matrix)
...
subroutine, public dbcsr_complete_redistribute(matrix, redist)
...
integer function, public dbcsr_get_num_blocks(matrix)
...
subroutine, public dbcsr_iterator_readonly_start(iterator, matrix, shared, dynamic, dynamic_byrows)
Like dbcsr_iterator_start() but with matrix being INTENT(IN). When invoking this routine,...
subroutine, public dbcsr_mp_grid_setup(dist)
...
subroutine, public dbcsr_binary_read(filepath, distribution, matrix_new)
...
subroutine, public dbcsr_clear(matrix)
...
subroutine, public dbcsr_put_block(matrix, row, col, block, summation)
...
subroutine, public dbcsr_add(matrix_a, matrix_b, alpha_scalar, beta_scalar)
...
subroutine, public dbcsr_distribution_get(dist, row_dist, col_dist, nrows, ncols, has_threads, group, mynode, numnodes, nprows, npcols, myprow, mypcol, pgrid, subgroups_defined, prow_group, pcol_group)
...
subroutine, public dbm_redistribute(matrix, redist)
Copies content of matrix_b into matrix_a. Matrices may have different distributions.
subroutine, public dbm_zero(matrix)
Sets all blocks in the given matrix to zero.
subroutine, public dbm_clear(matrix)
Remove all blocks from given matrix, but does not release the underlying memory.
subroutine, public dbm_scale(matrix, alpha)
Multiplies all entries in the given matrix by the given factor alpha.
subroutine, public dbm_add(matrix_a, matrix_b)
Adds matrix_b to matrix_a.
subroutine, public dbm_copy(matrix_a, matrix_b)
Copies content of matrix_b into matrix_a. Matrices must have the same row/col block sizes and distrib...
Defines the basic variable types.
integer, parameter, public int_8
integer, parameter, public dp
Definition of mathematical constants and functions.
complex(kind=dp), parameter, public z_one
complex(kind=dp), parameter, public gaussi
Interface to the message passing library MPI.