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.")
966 block_number_argument_has_been_removed, &
967 row_size, col_size, &
968 row_offset, col_offset)
970 INTEGER,
INTENT(OUT),
OPTIONAL :: row, column
971 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: block
972 LOGICAL,
OPTIONAL :: block_number_argument_has_been_removed
973 INTEGER,
INTENT(OUT),
OPTIONAL :: row_size, col_size, row_offset, &
976 INTEGER :: my_column, my_row
977 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: my_block
979 cpassert(.NOT.
PRESENT(block_number_argument_has_been_removed))
981 IF (use_dbcsr_backend)
THEN
982 CALL dbcsr_iterator_next_block_prv(iterator%dbcsr, row=my_row, column=my_column, &
983 block=my_block, row_size=row_size, col_size=col_size, &
984 row_offset=row_offset, col_offset=col_offset)
985 IF (
PRESENT(block)) block => my_block
986 IF (
PRESENT(row)) row = my_row
987 IF (
PRESENT(column)) column = my_column
989 cpabort(
"Not yet implemented for DBM.")
1004 LOGICAL,
INTENT(IN),
OPTIONAL :: shared, dynamic, dynamic_byrows
1006 IF (use_dbcsr_backend)
THEN
1007 CALL dbcsr_iterator_start_prv(iterator%dbcsr, matrix%dbcsr, shared, dynamic, dynamic_byrows)
1009 cpabort(
"Not yet implemented for DBM.")
1025 LOGICAL,
INTENT(IN),
OPTIONAL :: shared, dynamic, dynamic_byrows
1027 IF (use_dbcsr_backend)
THEN
1028 CALL dbcsr_iterator_start_prv(iterator%dbcsr, matrix%dbcsr, shared, dynamic, &
1029 dynamic_byrows, read_only=.true.)
1031 cpabort(
"Not yet implemented for DBM.")
1042 IF (use_dbcsr_backend)
THEN
1043 CALL dbcsr_iterator_stop_prv(iterator%dbcsr)
1045 cpabort(
"Not yet implemented for DBM.")
1056 IF (use_dbcsr_backend)
THEN
1057 CALL dbcsr_mp_grid_setup_prv(dist%dbcsr)
1059 cpabort(
"Not yet implemented for DBM.")
1083 matrix_c, first_row, last_row, &
1084 first_column, last_column, first_k, last_k, &
1085 retain_sparsity, filter_eps, flop)
1086 CHARACTER(LEN=1),
INTENT(IN) :: transa, transb
1087 REAL(kind=
dp),
INTENT(IN) :: alpha
1088 TYPE(
dbcsr_type),
INTENT(IN) :: matrix_a, matrix_b
1089 REAL(kind=
dp),
INTENT(IN) :: beta
1091 INTEGER,
INTENT(IN),
OPTIONAL :: first_row, last_row, first_column, &
1092 last_column, first_k, last_k
1093 LOGICAL,
INTENT(IN),
OPTIONAL :: retain_sparsity
1094 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: filter_eps
1095 INTEGER(int_8),
INTENT(OUT),
OPTIONAL :: flop
1097 IF (use_dbcsr_backend)
THEN
1098 CALL dbcsr_multiply_prv(transa, transb, alpha, matrix_a%dbcsr, matrix_b%dbcsr, beta, &
1099 matrix_c%dbcsr, first_row, last_row, first_column, last_column, &
1100 first_k, last_k, retain_sparsity, filter_eps=filter_eps, flop=flop)
1102 cpabort(
"Not yet implemented for DBM.")
1116 INTEGER,
INTENT(IN) :: row, col
1117 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(IN) :: block
1118 LOGICAL,
INTENT(IN),
OPTIONAL :: summation
1120 IF (use_dbcsr_backend)
THEN
1121 CALL dbcsr_put_block_prv(matrix%dbcsr, row, col, block, summation=summation)
1123 cpabort(
"Not yet implemented for DBM.")
1134 IF (use_dbcsr_backend)
THEN
1135 CALL dbcsr_release_prv(matrix%dbcsr)
1137 cpabort(
"Not yet implemented for DBM.")
1148 IF (use_dbcsr_backend)
THEN
1149 CALL dbcsr_replicate_all_prv(matrix%dbcsr)
1151 cpabort(
"Not yet implemented for DBM.")
1163 INTEGER,
DIMENSION(:),
INTENT(IN) :: rows, cols
1165 IF (use_dbcsr_backend)
THEN
1166 CALL dbcsr_reserve_blocks_prv(matrix%dbcsr, rows, cols)
1168 cpabort(
"Not yet implemented for DBM.")
1179 REAL(kind=
dp),
INTENT(IN) :: alpha_scalar
1181 IF (use_dbcsr_backend)
THEN
1182 CALL dbcsr_scale_prv(matrix%dbcsr, alpha_scalar)
1184 CALL dbm_scale(matrix%dbm, alpha_scalar)
1195 REAL(kind=
dp),
INTENT(IN) :: alpha
1197 IF (use_dbcsr_backend)
THEN
1198 CALL dbcsr_set_prv(matrix%dbcsr, alpha)
1200 IF (alpha == 0.0_dp)
THEN
1203 cpabort(
"Not yet implemented for DBM.")
1215 IF (use_dbcsr_backend)
THEN
1216 CALL dbcsr_sum_replicated_prv(matrix%dbcsr)
1218 cpabort(
"Not yet implemented for DBM.")
1232 TYPE(
dbcsr_type),
INTENT(INOUT) :: transposed
1234 LOGICAL,
INTENT(IN),
OPTIONAL :: shallow_data_copy, transpose_distribution
1236 OPTIONAL :: use_distribution
1238 IF (use_dbcsr_backend)
THEN
1239 IF (
PRESENT(use_distribution))
THEN
1240 CALL dbcsr_transposed_prv(transposed%dbcsr, normal%dbcsr, &
1241 shallow_data_copy=shallow_data_copy, &
1242 transpose_distribution=transpose_distribution, &
1243 use_distribution=use_distribution%dbcsr)
1245 CALL dbcsr_transposed_prv(transposed%dbcsr, normal%dbcsr, &
1246 shallow_data_copy=shallow_data_copy, &
1247 transpose_distribution=transpose_distribution)
1250 cpabort(
"Not yet implemented for DBM.")
1261 LOGICAL :: valid_index
1263 IF (use_dbcsr_backend)
THEN
1264 valid_index = dbcsr_valid_index_prv(matrix%dbcsr)
1266 valid_index = .true.
1278 INTEGER,
INTENT(IN),
OPTIONAL :: verbosity
1279 LOGICAL,
INTENT(IN),
OPTIONAL :: local
1281 IF (use_dbcsr_backend)
THEN
1282 CALL dbcsr_verify_matrix_prv(matrix%dbcsr, verbosity, local)
1298 INTEGER,
INTENT(IN),
OPTIONAL :: nblks_guess, sizedata_guess, n
1299 LOGICAL,
INTENT(in),
OPTIONAL :: work_mutable
1301 IF (use_dbcsr_backend)
THEN
1302 CALL dbcsr_work_create_prv(matrix%dbcsr, nblks_guess, sizedata_guess, n, work_mutable)
1315 TYPE(
dbcsr_type),
INTENT(IN) :: matrix_a, matrix_b
1316 REAL(kind=
dp),
INTENT(INOUT) :: result
1318 IF (use_dbcsr_backend)
THEN
1319 CALL dbcsr_dot_prv(matrix_a%dbcsr, matrix_b%dbcsr, result)
1321 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)
...
subroutine, public dbcsr_iterator_next_block(iterator, row, column, block, block_number_argument_has_been_removed, row_size, col_size, row_offset, col_offset)
...
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_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.