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.')
253 SUBROUTINE dbcsr_add(matrix_a, matrix_b, alpha_scalar, beta_scalar)
256 REAL(kind=
dp),
INTENT(IN) :: alpha_scalar, beta_scalar
258 IF (use_dbcsr_backend)
THEN
259 CALL dbcsr_add_prv(matrix_a%dbcsr, matrix_b%dbcsr, alpha_scalar, beta_scalar)
261 IF (alpha_scalar /= 1.0_dp .OR. beta_scalar /= 1.0_dp) cpabort(
"Not yet implemented for DBM.")
262 CALL dbm_add(matrix_a%dbm, matrix_b%dbm)
273 CHARACTER(len=*),
INTENT(IN) :: filepath
277 IF (use_dbcsr_backend)
THEN
278 CALL dbcsr_binary_read_prv(filepath, distribution%dbcsr, matrix_new%dbcsr)
280 cpabort(
"Not yet implemented for DBM.")
291 CHARACTER(LEN=*),
INTENT(IN) :: filepath
293 IF (use_dbcsr_backend)
THEN
294 CALL dbcsr_binary_write_prv(matrix%dbcsr, filepath)
296 cpabort(
"Not yet implemented for DBM.")
307 IF (use_dbcsr_backend)
THEN
308 CALL dbcsr_clear_prv(matrix%dbcsr)
323 IF (use_dbcsr_backend)
THEN
324 CALL dbcsr_complete_redistribute_prv(matrix%dbcsr, redist%dbcsr)
337 TYPE(dbcsr_csr_type),
INTENT(INOUT) :: csr_mat
339 IF (use_dbcsr_backend)
THEN
340 CALL convert_csr_to_dbcsr_prv(dbcsr_mat%dbcsr, csr_mat)
342 cpabort(
"Not yet implemented for DBM.")
353 TYPE(dbcsr_csr_type),
INTENT(INOUT) :: csr_mat
355 IF (use_dbcsr_backend)
THEN
356 CALL convert_dbcsr_to_csr_prv(dbcsr_mat%dbcsr, csr_mat)
358 cpabort(
"Not yet implemented for DBM.")
370 SUBROUTINE dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
373 CHARACTER(LEN=*),
INTENT(IN),
OPTIONAL :: name
374 LOGICAL,
INTENT(IN),
OPTIONAL :: keep_sparsity, keep_imaginary
376 IF (use_dbcsr_backend)
THEN
377 CALL dbcsr_copy_prv(matrix_b%dbcsr, matrix_a%dbcsr, name=name, &
378 keep_sparsity=keep_sparsity, keep_imaginary=keep_imaginary)
380 IF (
PRESENT(name) .OR.
PRESENT(keep_sparsity) .OR.
PRESENT(keep_imaginary))
THEN
381 cpabort(
"Not yet implemented for DBM.")
383 CALL dbm_copy(matrix_b%dbm, matrix_a%dbm)
398 SUBROUTINE dbcsr_create_new(matrix, name, dist, matrix_type, row_blk_size, col_blk_size, &
399 reuse_arrays, mutable_work)
401 CHARACTER(len=*),
INTENT(IN) :: name
403 CHARACTER,
INTENT(IN) :: matrix_type
404 INTEGER,
DIMENSION(:),
INTENT(INOUT),
POINTER :: row_blk_size, col_blk_size
405 LOGICAL,
INTENT(IN),
OPTIONAL :: reuse_arrays, mutable_work
407 IF (use_dbcsr_backend)
THEN
408 CALL dbcsr_create_prv(matrix=matrix%dbcsr, name=name, dist=dist%dbcsr, &
409 matrix_type=matrix_type, row_blk_size=row_blk_size, &
410 col_blk_size=col_blk_size, nze=0, data_type=dbcsr_type_real_8, &
411 reuse_arrays=reuse_arrays, mutable_work=mutable_work)
413 cpabort(
"Not yet implemented for DBM.")
415 END SUBROUTINE dbcsr_create_new
429 SUBROUTINE dbcsr_create_template(matrix, name, template, dist, matrix_type, &
430 row_blk_size, col_blk_size, reuse_arrays, mutable_work)
432 CHARACTER(len=*),
INTENT(IN),
OPTIONAL :: name
436 CHARACTER,
INTENT(IN),
OPTIONAL :: matrix_type
437 INTEGER,
DIMENSION(:),
INTENT(INOUT),
OPTIONAL, &
438 POINTER :: row_blk_size, col_blk_size
439 LOGICAL,
INTENT(IN),
OPTIONAL :: reuse_arrays, mutable_work
441 IF (use_dbcsr_backend)
THEN
442 IF (
PRESENT(dist))
THEN
443 CALL dbcsr_create_prv(matrix=matrix%dbcsr, name=name, template=template%dbcsr, &
444 dist=dist%dbcsr, matrix_type=matrix_type, &
445 row_blk_size=row_blk_size, col_blk_size=col_blk_size, &
446 nze=0, data_type=dbcsr_type_real_8, reuse_arrays=reuse_arrays, &
447 mutable_work=mutable_work)
449 CALL dbcsr_create_prv(matrix=matrix%dbcsr, name=name, template=template%dbcsr, &
450 matrix_type=matrix_type, &
451 row_blk_size=row_blk_size, col_blk_size=col_blk_size, &
452 nze=0, data_type=dbcsr_type_real_8, reuse_arrays=reuse_arrays, &
453 mutable_work=mutable_work)
456 cpabort(
"Not yet implemented for DBM.")
458 END SUBROUTINE dbcsr_create_template
471 TYPE(dbcsr_csr_type),
INTENT(OUT) :: csr_mat
472 INTEGER :: dist_format
473 TYPE(
dbcsr_type),
INTENT(IN),
OPTIONAL :: csr_sparsity
474 INTEGER,
INTENT(IN),
OPTIONAL :: numnodes
476 IF (use_dbcsr_backend)
THEN
477 IF (
PRESENT(csr_sparsity))
THEN
478 CALL dbcsr_csr_create_from_dbcsr_prv(dbcsr_mat%dbcsr, csr_mat, dist_format, &
479 csr_sparsity%dbcsr, numnodes)
481 CALL dbcsr_csr_create_from_dbcsr_prv(dbcsr_mat%dbcsr, csr_mat, &
482 dist_format, numnodes=numnodes)
485 cpabort(
"Not yet implemented for DBM.")
497 TYPE(
dbcsr_type),
INTENT(IN) :: rmatrix, imatrix
498 TYPE(dbcsr_csr_type),
INTENT(INOUT) :: csr_mat
499 INTEGER :: dist_format
503 IF (use_dbcsr_backend)
THEN
504 CALL dbcsr_create_prv(tmp_matrix%dbcsr, template=rmatrix%dbcsr, data_type=dbcsr_type_complex_8)
505 CALL dbcsr_create_prv(cmatrix%dbcsr, template=rmatrix%dbcsr, data_type=dbcsr_type_complex_8)
506 CALL dbcsr_copy_prv(cmatrix%dbcsr, rmatrix%dbcsr)
507 CALL dbcsr_copy_prv(tmp_matrix%dbcsr, imatrix%dbcsr)
508 CALL dbcsr_add_prv(cmatrix%dbcsr, tmp_matrix%dbcsr,
z_one,
gaussi)
509 CALL dbcsr_release_prv(tmp_matrix%dbcsr)
511 CALL dbcsr_csr_create_from_dbcsr_prv(cmatrix%dbcsr, csr_mat, dist_format)
512 CALL convert_dbcsr_to_csr_prv(cmatrix%dbcsr, csr_mat)
513 CALL dbcsr_release_prv(cmatrix%dbcsr)
515 cpabort(
"Not yet implemented for DBM.")
528 IF (use_dbcsr_backend)
THEN
529 CALL dbcsr_desymmetrize_prv(matrix_a%dbcsr, matrix_b%dbcsr)
531 cpabort(
"Not yet implemented for DBM.")
542 IF (use_dbcsr_backend)
THEN
543 CALL dbcsr_distribute_prv(matrix%dbcsr)
545 cpabort(
"Not yet implemented for DBM.")
570 group, mynode, numnodes, nprows, npcols, myprow, mypcol, &
571 pgrid, subgroups_defined, prow_group, pcol_group)
573 INTEGER,
DIMENSION(:),
OPTIONAL,
POINTER :: row_dist, col_dist
574 INTEGER,
INTENT(OUT),
OPTIONAL :: nrows, ncols
575 LOGICAL,
INTENT(OUT),
OPTIONAL :: has_threads
576 INTEGER,
INTENT(OUT),
OPTIONAL :: group, mynode, numnodes, nprows, npcols, &
578 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: pgrid
579 LOGICAL,
INTENT(OUT),
OPTIONAL :: subgroups_defined
580 INTEGER,
INTENT(OUT),
OPTIONAL :: prow_group, pcol_group
582 IF (use_dbcsr_backend)
THEN
583 CALL dbcsr_distribution_get_prv(dist%dbcsr, row_dist, col_dist, nrows, ncols, has_threads, &
584 group, mynode, numnodes, nprows, npcols, myprow, mypcol, &
585 pgrid, subgroups_defined, prow_group, pcol_group)
587 cpabort(
"Not yet implemented for DBM.")
598 IF (use_dbcsr_backend)
THEN
599 CALL dbcsr_distribution_hold_prv(dist%dbcsr)
601 cpabort(
"Not yet implemented for DBM.")
619 INTEGER,
INTENT(IN),
OPTIONAL :: group
620 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: pgrid
621 INTEGER,
DIMENSION(:),
INTENT(INOUT),
POINTER :: row_dist, col_dist
622 LOGICAL,
INTENT(IN),
OPTIONAL :: reuse_arrays
624 IF (use_dbcsr_backend)
THEN
625 IF (
PRESENT(template))
THEN
626 CALL dbcsr_distribution_new_prv(dist%dbcsr, template%dbcsr, group, pgrid, &
627 row_dist, col_dist, reuse_arrays)
629 CALL dbcsr_distribution_new_prv(dist%dbcsr, group=group, pgrid=pgrid, &
630 row_dist=row_dist, col_dist=col_dist, &
631 reuse_arrays=reuse_arrays)
634 cpabort(
"Not yet implemented for DBM.")
645 IF (use_dbcsr_backend)
THEN
646 CALL dbcsr_distribution_release_prv(dist%dbcsr)
648 cpabort(
"Not yet implemented for DBM.")
659 REAL(
dp),
INTENT(IN) :: eps
661 IF (use_dbcsr_backend)
THEN
662 CALL dbcsr_filter_prv(matrix%dbcsr, eps)
664 cpabort(
"Not yet implemented for DBM.")
675 IF (use_dbcsr_backend)
THEN
676 CALL dbcsr_finalize_prv(matrix%dbcsr)
678 cpabort(
"Not yet implemented for DBM.")
694 INTEGER,
INTENT(IN) :: row, col
695 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: block
696 LOGICAL,
INTENT(OUT) :: found
697 INTEGER,
INTENT(OUT),
OPTIONAL :: row_size, col_size
699 IF (use_dbcsr_backend)
THEN
700 CALL dbcsr_get_block_p_prv(matrix%dbcsr, row, col, block, found, row_size, col_size)
702 cpabort(
"Not yet implemented for DBM.")
718 TYPE(
dbcsr_type),
INTENT(IN),
TARGET :: matrix
719 INTEGER,
INTENT(IN) :: row, col
720 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: block
721 LOGICAL,
INTENT(OUT) :: found
722 INTEGER,
INTENT(OUT),
OPTIONAL :: row_size, col_size
733 IF (use_dbcsr_backend)
THEN
735 CALL dbcsr_get_block_p_prv(matrix_p%dbcsr, row, col, block, found, row_size, col_size)
737 cpabort(
"Not yet implemented for DBM.")
750 INTEGER,
INTENT(IN),
OPTIONAL :: lb, ub
751 REAL(kind=
dp),
DIMENSION(:),
POINTER :: res
753 IF (use_dbcsr_backend)
THEN
754 res => dbcsr_get_data_p_prv(matrix%dbcsr, select_data_type=0.0_dp, lb=lb, ub=ub)
756 cpabort(
"Not yet implemented for DBM.")
769 IF (use_dbcsr_backend)
THEN
770 data_size = dbcsr_get_data_size_prv(matrix%dbcsr)
772 cpabort(
"Not yet implemented for DBM.")
803 nfullrows_total, nfullcols_total, nblkrows_local, nblkcols_local, &
804 nfullrows_local, nfullcols_local, my_prow, my_pcol, &
805 local_rows, local_cols, proc_row_dist, proc_col_dist, &
806 row_blk_size, col_blk_size, row_blk_offset, col_blk_offset, &
807 distribution, name, matrix_type, group)
809 INTEGER,
INTENT(OUT),
OPTIONAL :: nblkrows_total, nblkcols_total, nfullrows_total, &
810 nfullcols_total, nblkrows_local, nblkcols_local, nfullrows_local, nfullcols_local, &
812 INTEGER,
DIMENSION(:),
OPTIONAL,
POINTER :: local_rows, local_cols, proc_row_dist, &
813 proc_col_dist, row_blk_size, col_blk_size, row_blk_offset, col_blk_offset
815 OPTIONAL :: distribution
816 CHARACTER(len=*),
INTENT(OUT),
OPTIONAL :: name
817 CHARACTER,
INTENT(OUT),
OPTIONAL :: matrix_type
820 INTEGER :: group_handle
821 TYPE(dbcsr_distribution_type_prv) :: my_distribution
823 IF (use_dbcsr_backend)
THEN
824 CALL dbcsr_get_info_prv(matrix=matrix%dbcsr, &
825 nblkrows_total=nblkrows_total, &
826 nblkcols_total=nblkcols_total, &
827 nfullrows_total=nfullrows_total, &
828 nfullcols_total=nfullcols_total, &
829 nblkrows_local=nblkrows_local, &
830 nblkcols_local=nblkcols_local, &
831 nfullrows_local=nfullrows_local, &
832 nfullcols_local=nfullcols_local, &
835 local_rows=local_rows, &
836 local_cols=local_cols, &
837 proc_row_dist=proc_row_dist, &
838 proc_col_dist=proc_col_dist, &
839 row_blk_size=row_blk_size, &
840 col_blk_size=col_blk_size, &
841 row_blk_offset=row_blk_offset, &
842 col_blk_offset=col_blk_offset, &
843 distribution=my_distribution, &
845 matrix_type=matrix_type, &
848 IF (
PRESENT(distribution)) distribution%dbcsr = my_distribution
849 IF (
PRESENT(group))
CALL group%set_handle(group_handle)
851 cpabort(
"Not yet implemented for DBM.")
862 CHARACTER :: matrix_type
864 IF (use_dbcsr_backend)
THEN
865 matrix_type = dbcsr_get_matrix_type_prv(matrix%dbcsr)
867 cpabort(
"Not yet implemented for DBM.")
878 INTEGER :: num_blocks
880 IF (use_dbcsr_backend)
THEN
881 num_blocks = dbcsr_get_num_blocks_prv(matrix%dbcsr)
883 cpabort(
"Not yet implemented for DBM.")
894 REAL(kind=
dp) :: occupation
896 IF (use_dbcsr_backend)
THEN
897 occupation = dbcsr_get_occupation_prv(matrix%dbcsr)
899 cpabort(
"Not yet implemented for DBM.")
912 INTEGER,
INTENT(IN) :: row, column
913 INTEGER,
INTENT(OUT) :: processor
915 IF (use_dbcsr_backend)
THEN
916 CALL dbcsr_get_stored_coordinates_prv(matrix%dbcsr, row, column, processor)
918 cpabort(
"Not yet implemented for DBM.")
929 LOGICAL :: has_symmetry
931 IF (use_dbcsr_backend)
THEN
932 has_symmetry = dbcsr_has_symmetry_prv(matrix%dbcsr)
934 cpabort(
"Not yet implemented for DBM.")
945 LOGICAL :: blocks_left
947 IF (use_dbcsr_backend)
THEN
948 blocks_left = dbcsr_iterator_blocks_left_prv(iterator%dbcsr)
950 cpabort(
"Not yet implemented for DBM.")
968 block_number_argument_has_been_removed, &
969 row_size, col_size, &
970 row_offset, col_offset, transposed)
972 INTEGER,
INTENT(OUT),
OPTIONAL :: row, column
973 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: block
974 LOGICAL,
OPTIONAL :: block_number_argument_has_been_removed
975 INTEGER,
INTENT(OUT),
OPTIONAL :: row_size, col_size, row_offset, &
977 LOGICAL,
INTENT(OUT),
OPTIONAL :: transposed
979 INTEGER :: my_column, my_row
980 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: my_block
982 cpassert(.NOT.
PRESENT(block_number_argument_has_been_removed))
984 IF (use_dbcsr_backend)
THEN
985 IF (
PRESENT(transposed))
THEN
986 CALL dbcsr_iterator_next_block_prv(iterator%dbcsr, row=my_row, column=my_column, &
987 block=my_block, row_size=row_size, col_size=col_size, &
988 row_offset=row_offset, col_offset=col_offset, &
989 transposed=transposed)
991 CALL dbcsr_iterator_next_block_prv(iterator%dbcsr, row=my_row, column=my_column, &
992 block=my_block, row_size=row_size, col_size=col_size, &
993 row_offset=row_offset, col_offset=col_offset)
995 IF (
PRESENT(block)) block => my_block
996 IF (
PRESENT(row)) row = my_row
997 IF (
PRESENT(column)) column = my_column
999 cpabort(
"Not yet implemented for DBM.")
1014 LOGICAL,
INTENT(IN),
OPTIONAL :: shared, dynamic, dynamic_byrows
1016 IF (use_dbcsr_backend)
THEN
1017 CALL dbcsr_iterator_start_prv(iterator%dbcsr, matrix%dbcsr, shared, dynamic, dynamic_byrows)
1019 cpabort(
"Not yet implemented for DBM.")
1035 LOGICAL,
INTENT(IN),
OPTIONAL :: shared, dynamic, dynamic_byrows
1037 IF (use_dbcsr_backend)
THEN
1038 CALL dbcsr_iterator_start_prv(iterator%dbcsr, matrix%dbcsr, shared, dynamic, &
1039 dynamic_byrows, read_only=.true.)
1041 cpabort(
"Not yet implemented for DBM.")
1052 IF (use_dbcsr_backend)
THEN
1053 CALL dbcsr_iterator_stop_prv(iterator%dbcsr)
1055 cpabort(
"Not yet implemented for DBM.")
1066 IF (use_dbcsr_backend)
THEN
1067 CALL dbcsr_mp_grid_setup_prv(dist%dbcsr)
1069 cpabort(
"Not yet implemented for DBM.")
1093 matrix_c, first_row, last_row, &
1094 first_column, last_column, first_k, last_k, &
1095 retain_sparsity, filter_eps, flop)
1096 CHARACTER(LEN=1),
INTENT(IN) :: transa, transb
1097 REAL(kind=
dp),
INTENT(IN) :: alpha
1098 TYPE(
dbcsr_type),
INTENT(IN) :: matrix_a, matrix_b
1099 REAL(kind=
dp),
INTENT(IN) :: beta
1101 INTEGER,
INTENT(IN),
OPTIONAL :: first_row, last_row, first_column, &
1102 last_column, first_k, last_k
1103 LOGICAL,
INTENT(IN),
OPTIONAL :: retain_sparsity
1104 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: filter_eps
1105 INTEGER(int_8),
INTENT(OUT),
OPTIONAL :: flop
1107 IF (use_dbcsr_backend)
THEN
1108 CALL dbcsr_multiply_prv(transa, transb, alpha, matrix_a%dbcsr, matrix_b%dbcsr, beta, &
1109 matrix_c%dbcsr, first_row, last_row, first_column, last_column, &
1110 first_k, last_k, retain_sparsity, filter_eps=filter_eps, flop=flop)
1112 cpabort(
"Not yet implemented for DBM.")
1126 INTEGER,
INTENT(IN) :: row, col
1127 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(IN) :: block
1128 LOGICAL,
INTENT(IN),
OPTIONAL :: summation
1130 IF (use_dbcsr_backend)
THEN
1131 CALL dbcsr_put_block_prv(matrix%dbcsr, row, col, block, summation=summation)
1133 cpabort(
"Not yet implemented for DBM.")
1144 IF (use_dbcsr_backend)
THEN
1145 CALL dbcsr_release_prv(matrix%dbcsr)
1147 cpabort(
"Not yet implemented for DBM.")
1158 IF (use_dbcsr_backend)
THEN
1159 CALL dbcsr_replicate_all_prv(matrix%dbcsr)
1161 cpabort(
"Not yet implemented for DBM.")
1173 INTEGER,
DIMENSION(:),
INTENT(IN) :: rows, cols
1175 IF (use_dbcsr_backend)
THEN
1176 CALL dbcsr_reserve_blocks_prv(matrix%dbcsr, rows, cols)
1178 cpabort(
"Not yet implemented for DBM.")
1189 REAL(kind=
dp),
INTENT(IN) :: alpha_scalar
1191 IF (use_dbcsr_backend)
THEN
1192 CALL dbcsr_scale_prv(matrix%dbcsr, alpha_scalar)
1194 CALL dbm_scale(matrix%dbm, alpha_scalar)
1205 REAL(kind=
dp),
INTENT(IN) :: alpha
1207 IF (use_dbcsr_backend)
THEN
1208 CALL dbcsr_set_prv(matrix%dbcsr, alpha)
1210 IF (alpha == 0.0_dp)
THEN
1213 cpabort(
"Not yet implemented for DBM.")
1225 IF (use_dbcsr_backend)
THEN
1226 CALL dbcsr_sum_replicated_prv(matrix%dbcsr)
1228 cpabort(
"Not yet implemented for DBM.")
1242 TYPE(
dbcsr_type),
INTENT(INOUT) :: transposed
1244 LOGICAL,
INTENT(IN),
OPTIONAL :: shallow_data_copy, transpose_distribution
1246 OPTIONAL :: use_distribution
1248 IF (use_dbcsr_backend)
THEN
1249 IF (
PRESENT(use_distribution))
THEN
1250 CALL dbcsr_transposed_prv(transposed%dbcsr, normal%dbcsr, &
1251 shallow_data_copy=shallow_data_copy, &
1252 transpose_distribution=transpose_distribution, &
1253 use_distribution=use_distribution%dbcsr)
1255 CALL dbcsr_transposed_prv(transposed%dbcsr, normal%dbcsr, &
1256 shallow_data_copy=shallow_data_copy, &
1257 transpose_distribution=transpose_distribution)
1260 cpabort(
"Not yet implemented for DBM.")
1271 LOGICAL :: valid_index
1273 IF (use_dbcsr_backend)
THEN
1274 valid_index = dbcsr_valid_index_prv(matrix%dbcsr)
1276 valid_index = .true.
1288 INTEGER,
INTENT(IN),
OPTIONAL :: verbosity
1289 LOGICAL,
INTENT(IN),
OPTIONAL :: local
1291 IF (use_dbcsr_backend)
THEN
1292 CALL dbcsr_verify_matrix_prv(matrix%dbcsr, verbosity, local)
1308 INTEGER,
INTENT(IN),
OPTIONAL :: nblks_guess, sizedata_guess, n
1309 LOGICAL,
INTENT(in),
OPTIONAL :: work_mutable
1311 IF (use_dbcsr_backend)
THEN
1312 CALL dbcsr_work_create_prv(matrix%dbcsr, nblks_guess, sizedata_guess, n, work_mutable)
1325 TYPE(
dbcsr_type),
INTENT(IN) :: matrix_a, matrix_b
1326 REAL(kind=
dp),
INTENT(INOUT) :: result
1328 IF (use_dbcsr_backend)
THEN
1329 CALL dbcsr_dot_prv(matrix_a%dbcsr, matrix_b%dbcsr, result)
1331 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.