From bd6578ab8f5bddfd29b612e4d6aa0ffc1348c7c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Sch=C3=BCtt?= Date: Wed, 19 Feb 2025 12:35:05 +0100 Subject: [PATCH] DBX: Replace individual getters with dbcsr_get_info --- src/almo_scf.F | 19 ++++---- src/almo_scf_methods.F | 28 +++++------- src/almo_scf_optimizer.F | 18 +++----- src/almo_scf_qs.F | 25 +++++------ src/ct_methods.F | 9 ++-- src/dbx/cp_dbcsr_api.F | 76 +------------------------------- src/dbx/cp_dbcsr_contrib.F | 19 ++++---- src/dm_ls_scf_qs.F | 4 +- src/domain_submatrix_methods.F | 13 ++---- src/mscfg_types.F | 14 +++--- src/qs_fb_distribution_methods.F | 14 +++--- src/qs_initial_guess.F | 12 ++--- 12 files changed, 73 insertions(+), 178 deletions(-) diff --git a/src/almo_scf.F b/src/almo_scf.F index 8beb50cf7f..10c87a00cd 100644 --- a/src/almo_scf.F +++ b/src/almo_scf.F @@ -52,9 +52,8 @@ MODULE almo_scf dbcsr_distribution_get, dbcsr_distribution_type, dbcsr_filter, dbcsr_finalize, & dbcsr_get_info, dbcsr_get_stored_coordinates, dbcsr_iterator_blocks_left, & dbcsr_iterator_next_block, dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, & - dbcsr_multiply, dbcsr_nblkcols_total, dbcsr_nblkrows_total, dbcsr_p_type, dbcsr_release, & - dbcsr_reserve_block2d, dbcsr_scale, dbcsr_set, dbcsr_type, dbcsr_type_no_symmetry, & - dbcsr_type_symmetric, dbcsr_work_create + dbcsr_multiply, dbcsr_p_type, dbcsr_release, dbcsr_reserve_block2d, dbcsr_scale, & + dbcsr_set, dbcsr_type, dbcsr_type_no_symmetry, dbcsr_type_symmetric, dbcsr_work_create USE cp_dbcsr_contrib, ONLY: dbcsr_init_random USE cp_dbcsr_diag, ONLY: cp_dbcsr_syevd USE cp_dbcsr_operations, ONLY: copy_dbcsr_to_fm @@ -227,10 +226,9 @@ CONTAINS ! copy basic quantities almo_scf_env%nspins = dft_control%nspins - almo_scf_env%natoms = dbcsr_nblkrows_total(matrix_s(1)%matrix) almo_scf_env%nmolecules = SIZE(molecule_set) - CALL dbcsr_get_info(matrix_s(1)%matrix, nfullrows_total=naos) - almo_scf_env%naos = naos + CALL dbcsr_get_info(matrix_s(1)%matrix, & + nfullrows_total=almo_scf_env%naos, nblkrows_total=almo_scf_env%natoms) !! retrieve smearing parameters, and check compatibility of methods requested almo_scf_env%smear = dft_control%smear @@ -255,6 +253,7 @@ CONTAINS nspins = almo_scf_env%nspins nmols = almo_scf_env%nmolecules natoms = almo_scf_env%natoms + naos = almo_scf_env%naos ! Define groups: either atomic or molecular IF (almo_scf_env%domain_layout_mos == almo_domain_layout_molecular) THEN @@ -1401,12 +1400,10 @@ CONTAINS CALL dbcsr_create(no_quench(1), & template=almo_scf_env%matrix_t(1), & matrix_type=dbcsr_type_no_symmetry) - CALL dbcsr_get_info(no_quench(1), distribution=dist) + CALL dbcsr_get_info(no_quench(1), distribution=dist, & + nblkrows_total=nblkrows_tot, nblkcols_total=nblkcols_tot) CALL dbcsr_distribution_get(dist, mynode=mynode) - CALL dbcsr_work_create(no_quench(1), & - work_mutable=.TRUE.) - nblkrows_tot = dbcsr_nblkrows_total(no_quench(1)) - nblkcols_tot = dbcsr_nblkcols_total(no_quench(1)) + CALL dbcsr_work_create(no_quench(1), work_mutable=.TRUE.) ! RZK-warning: is it a quadratic-scaling routine? ! As a matter of fact it is! But this block treats ! fully delocalized MOs. So it is unavoidable. diff --git a/src/almo_scf_methods.F b/src/almo_scf_methods.F index f6c2dc57f1..2d6ce26e69 100644 --- a/src/almo_scf_methods.F +++ b/src/almo_scf_methods.F @@ -24,9 +24,9 @@ MODULE almo_scf_methods dbcsr_distribution_type, dbcsr_filter, dbcsr_finalize, dbcsr_get_block_p, dbcsr_get_diag, & dbcsr_get_info, dbcsr_get_stored_coordinates, dbcsr_iterator_blocks_left, & dbcsr_iterator_next_block, dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, & - dbcsr_multiply, dbcsr_nblkcols_total, dbcsr_nblkrows_total, dbcsr_print, dbcsr_release, & - dbcsr_reserve_block2d, dbcsr_scale_by_vector, dbcsr_set, dbcsr_set_diag, dbcsr_transposed, & - dbcsr_type, dbcsr_type_no_symmetry, dbcsr_type_symmetric, dbcsr_work_create + dbcsr_multiply, dbcsr_print, dbcsr_release, dbcsr_reserve_block2d, dbcsr_scale_by_vector, & + dbcsr_set, dbcsr_set_diag, dbcsr_transposed, dbcsr_type, dbcsr_type_no_symmetry, & + dbcsr_type_symmetric, dbcsr_work_create USE cp_dbcsr_cholesky, ONLY: cp_dbcsr_cholesky_decompose,& cp_dbcsr_cholesky_invert USE cp_dbcsr_contrib, ONLY: dbcsr_frobenius_norm,& @@ -103,11 +103,10 @@ CONTAINS REAL(KIND=dp), DIMENSION(:, :), POINTER :: p_new_block TYPE(dbcsr_distribution_type) :: dist - CALL dbcsr_get_info(matrix, distribution=dist) + CALL dbcsr_get_info(matrix, distribution=dist, & + nblkrows_total=nblkrows_tot, nblkcols_total=nblkcols_tot) CALL dbcsr_distribution_get(dist, mynode=mynode) CALL dbcsr_work_create(matrix, work_mutable=.TRUE.) - nblkrows_tot = dbcsr_nblkrows_total(matrix) - nblkcols_tot = dbcsr_nblkcols_total(matrix) DO row = 1, nblkrows_tot DO col = 1, nblkcols_tot tr = .FALSE. @@ -155,7 +154,7 @@ CONTAINS DO ispin = 1, almo_scf_env%nspins - ndomains = dbcsr_nblkcols_total(almo_scf_env%quench_t(ispin)) + CALL dbcsr_get_info(almo_scf_env%quench_t(ispin), nblkcols_total=ndomains) ! 0. Create KS_xx CALL construct_submatrices( & @@ -1799,13 +1798,11 @@ CONTAINS REAL(KIND=dp), DIMENSION(:, :), POINTER :: p_new_block TYPE(dbcsr_distribution_type) :: dist - CALL dbcsr_get_info(matrix, distribution=dist) + CALL dbcsr_get_info(matrix, distribution=dist, nblkrows_total=nblkrows_tot) CALL dbcsr_distribution_get(dist, mynode=mynode) !mynode = dbcsr_mp_mynode(dbcsr_distribution_mp(dbcsr_distribution(matrix))) CALL dbcsr_work_create(matrix, work_mutable=.TRUE.) - nblkrows_tot = dbcsr_nblkrows_total(matrix) - DO row = 1, nblkrows_tot IF (nocc_of_domain(row) == 0) THEN tr = .FALSE. @@ -2150,7 +2147,7 @@ CONTAINS CPABORT("TRIMMER MATRIX IS REQUIRED") END IF - ndomains = dbcsr_nblkcols_total(dpattern) + CALL dbcsr_get_info(dpattern, nblkcols_total=ndomains) ALLOCATE (subm_in(ndomains)) ALLOCATE (subm_temp(ndomains)) @@ -2487,7 +2484,7 @@ CONTAINS CALL timeset(routineN, handle) - ndomains = dbcsr_nblkcols_total(dpattern) + CALL dbcsr_get_info(dpattern, nblkcols_total=ndomains) CPASSERT(SIZE(subm_s_sqrt) .EQ. ndomains) CPASSERT(SIZE(subm_s_sqrt_inv) .EQ. ndomains) ALLOCATE (subm_s(ndomains)) @@ -2559,7 +2556,7 @@ CONTAINS CALL timeset(routineN, handle) - ndomains = dbcsr_nblkcols_total(dpattern) + CALL dbcsr_get_info(dpattern, nblkcols_total=ndomains) CPASSERT(SIZE(subm_s_inv) .EQ. ndomains) ALLOCATE (subm_s(ndomains)) @@ -2650,7 +2647,7 @@ CONTAINS CALL dbcsr_release(m_tmp_no_1) CALL dbcsr_release(m_tmp_no_2) - ndomains = dbcsr_nblkcols_total(dpattern) + CALL dbcsr_get_info(dpattern, nblkcols_total=ndomains) CPASSERT(SIZE(subm_r_down) .EQ. ndomains) CALL construct_submatrices(matrix_r, subm_r_down, & @@ -3221,8 +3218,7 @@ CONTAINS CALL timeset(routineN, handle) - ndomains = dbcsr_nblkcols_total(dpattern) - CALL dbcsr_get_info(dpattern, group=group) + CALL dbcsr_get_info(dpattern, group=group, nblkcols_total=ndomains) ALLOCATE (subm_no(ndomains), subm_nn(ndomains)) CALL init_submatrices(subm_no) diff --git a/src/almo_scf_optimizer.F b/src/almo_scf_optimizer.F index b63aef203c..6dd76a3777 100644 --- a/src/almo_scf_optimizer.F +++ b/src/almo_scf_optimizer.F @@ -43,9 +43,9 @@ MODULE almo_scf_optimizer dbcsr_distribution_get, dbcsr_distribution_type, dbcsr_dot, dbcsr_filter, dbcsr_finalize, & dbcsr_get_block_p, dbcsr_get_diag, dbcsr_get_info, dbcsr_iterator_blocks_left, & dbcsr_iterator_next_block, dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, & - dbcsr_multiply, dbcsr_nblkcols_total, dbcsr_nblkrows_total, dbcsr_p_type, & - dbcsr_print_block_sum, dbcsr_release, dbcsr_reserve_block2d, dbcsr_scale, dbcsr_set, & - dbcsr_set_diag, dbcsr_type, dbcsr_type_no_symmetry, dbcsr_work_create + dbcsr_multiply, dbcsr_p_type, dbcsr_print_block_sum, dbcsr_release, dbcsr_reserve_block2d, & + dbcsr_scale, dbcsr_set, dbcsr_set_diag, dbcsr_type, dbcsr_type_no_symmetry, & + dbcsr_work_create USE cp_dbcsr_cholesky, ONLY: cp_dbcsr_cholesky_decompose,& cp_dbcsr_cholesky_invert,& cp_dbcsr_cholesky_restore @@ -6388,11 +6388,9 @@ CONTAINS CPABORT("mathematica files: serial code only") END IF - nblkrows_tot = dbcsr_nblkrows_total(matrix) - nblkcols_tot = dbcsr_nblkcols_total(matrix) + CALL dbcsr_get_info(matrix, row_blk_size=ao_blk_sizes, col_blk_size=mo_blk_sizes, & + nblkrows_total=nblkrows_tot, nblkcols_total=nblkcols_tot) CPASSERT(nblkrows_tot == nblkcols_tot) - CALL dbcsr_get_info(matrix, row_blk_size=ao_blk_sizes) - CALL dbcsr_get_info(matrix, col_blk_size=mo_blk_sizes) ALLOCATE (mo_block_sizes(nblkcols_tot), ao_block_sizes(nblkcols_tot)) mo_block_sizes(:) = mo_blk_sizes(:) ao_block_sizes(:) = ao_blk_sizes(:) @@ -8375,11 +8373,9 @@ CONTAINS CPABORT("serial code only") END IF - nblkrows_tot = dbcsr_nblkrows_total(quench_t) - nblkcols_tot = dbcsr_nblkcols_total(quench_t) + CALL dbcsr_get_info(quench_t, row_blk_size=ao_blk_sizes, col_blk_size=mo_blk_sizes, & + nblkrows_total=nblkrows_tot, nblkcols_total=nblkcols_tot) CPASSERT(nblkrows_tot == nblkcols_tot) - CALL dbcsr_get_info(quench_t, row_blk_size=ao_blk_sizes) - CALL dbcsr_get_info(quench_t, col_blk_size=mo_blk_sizes) ALLOCATE (mo_block_sizes(nblkcols_tot), ao_block_sizes(nblkcols_tot)) ALLOCATE (ao_domain_sizes(nblkcols_tot)) mo_block_sizes(:) = mo_blk_sizes(:) diff --git a/src/almo_scf_qs.F b/src/almo_scf_qs.F index bd631d5bae..0d6f909a6a 100644 --- a/src/almo_scf_qs.F +++ b/src/almo_scf_qs.F @@ -26,9 +26,9 @@ MODULE almo_scf_qs dbcsr_complete_redistribute, dbcsr_copy, dbcsr_create, dbcsr_desymmetrize, & dbcsr_distribution_get, dbcsr_distribution_new, dbcsr_distribution_release, & dbcsr_distribution_type, dbcsr_filter, dbcsr_finalize, dbcsr_get_block_p, dbcsr_get_info, & - dbcsr_get_num_blocks, dbcsr_get_stored_coordinates, dbcsr_multiply, dbcsr_nblkcols_total, & - dbcsr_nblkrows_total, dbcsr_p_type, dbcsr_release, dbcsr_reserve_block2d, dbcsr_set, & - dbcsr_type, dbcsr_type_no_symmetry, dbcsr_work_create + dbcsr_get_num_blocks, dbcsr_get_stored_coordinates, dbcsr_multiply, dbcsr_p_type, & + dbcsr_release, dbcsr_reserve_block2d, dbcsr_set, dbcsr_type, dbcsr_type_no_symmetry, & + dbcsr_work_create USE cp_dbcsr_cp2k_link, ONLY: cp_dbcsr_alloc_block_from_nbl USE cp_dbcsr_operations, ONLY: dbcsr_allocate_matrix_set USE cp_fm_struct, ONLY: cp_fm_struct_create,& @@ -290,8 +290,7 @@ CONTAINS ! startQQQ - this part of the code scales quadratically ! therefore it is replaced with a less general but linear scaling algorithm below ! the quadratic algorithm is kept to be re-written later - !QQQnblkrows_tot = dbcsr_nblkrows_total(matrix_new) - !QQQnblkcols_tot = dbcsr_nblkcols_total(matrix_new) + !QQQCALL dbcsr_get_info(matrix_new, nblkrows_total=nblkrows_tot, nblkcols_total=nblkcols_tot) !QQQDO row = 1, nblkrows_tot !QQQ DO col = 1, nblkcols_tot !QQQ tr = .FALSE. @@ -347,7 +346,7 @@ CONTAINS ! endQQQ - end of the quadratic part ! start linear-scaling replacement: ! works only for molecular blocks AND molecular distributions - nblkrows_tot = dbcsr_nblkrows_total(matrix_new) + CALL dbcsr_get_info(matrix_new, nblkrows_total=nblkrows_tot) DO row = 1, nblkrows_tot tr = .FALSE. iblock_row = row @@ -933,13 +932,9 @@ CONTAINS init_domains=.FALSE.) ! initialize distance quencher - CALL dbcsr_work_create(almo_scf_env%quench_t(ispin), & - work_mutable=.TRUE.) - - nblkrows_tot = dbcsr_nblkrows_total(almo_scf_env%quench_t(ispin)) - nblkcols_tot = dbcsr_nblkcols_total(almo_scf_env%quench_t(ispin)) - - CALL dbcsr_get_info(almo_scf_env%quench_t(ispin), distribution=dist) + CALL dbcsr_work_create(almo_scf_env%quench_t(ispin), work_mutable=.TRUE.) + CALL dbcsr_get_info(almo_scf_env%quench_t(ispin), distribution=dist, & + nblkrows_total=nblkrows_tot, nblkcols_total=nblkcols_tot) CALL dbcsr_distribution_get(dist, numnodes=nNodes, group=GroupID, mynode=mynode) CALL group%set_handle(groupid) @@ -1508,8 +1503,8 @@ CONTAINS !mynode = dbcsr_mp_mynode(dbcsr_distribution_mp(& ! dbcsr_distribution(almo_scf_env%quench_t(ispin)))) - !nblkrows_tot = dbcsr_nblkrows_total(almo_scf_env%quench_t(ispin)) - !nblkcols_tot = dbcsr_nblkcols_total(almo_scf_env%quench_t(ispin)) + !CALL dbcsr_get_info(almo_scf_env%quench_t(ispin), distribution=dist, & + ! nblkrows_total=nblkrows_tot, nblkcols_total=nblkcols_tot) !DO row = 1, nblkrows_tot ! DO col = 1, nblkcols_tot ! tr = .FALSE. diff --git a/src/ct_methods.F b/src/ct_methods.F index 9991de075b..04f35f0c2d 100644 --- a/src/ct_methods.F +++ b/src/ct_methods.F @@ -17,9 +17,8 @@ MODULE ct_methods dbcsr_distribution_get, dbcsr_distribution_type, dbcsr_dot, dbcsr_filter, dbcsr_finalize, & dbcsr_get_diag, dbcsr_get_info, dbcsr_get_stored_coordinates, dbcsr_iterator_blocks_left, & dbcsr_iterator_next_block, dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, & - dbcsr_multiply, dbcsr_nblkcols_total, dbcsr_nblkrows_total, dbcsr_release, & - dbcsr_reserve_block2d, dbcsr_scale, dbcsr_set, dbcsr_set_diag, dbcsr_transposed, & - dbcsr_type, dbcsr_type_no_symmetry, dbcsr_work_create + dbcsr_multiply, dbcsr_release, dbcsr_reserve_block2d, dbcsr_scale, dbcsr_set, & + dbcsr_set_diag, dbcsr_transposed, dbcsr_type, dbcsr_type_no_symmetry, dbcsr_work_create USE cp_dbcsr_cholesky, ONLY: cp_dbcsr_cholesky_decompose,& cp_dbcsr_cholesky_invert USE cp_dbcsr_contrib, ONLY: dbcsr_frobenius_norm,& @@ -1226,11 +1225,9 @@ CONTAINS ! use an ugly hack to set all elements of tmp to 1 ! because dbcsr_set does not do it (despite its name) !CALL dbcsr_set(tmp,1.0_dp) - CALL dbcsr_get_info(tmp, distribution=dist) + CALL dbcsr_get_info(tmp, distribution=dist, nblkrows_total=nblkrows_tot, nblkcols_total=nblkcols_tot) CALL dbcsr_distribution_get(dist, mynode=mynode) CALL dbcsr_work_create(tmp, work_mutable=.TRUE.) - nblkrows_tot = dbcsr_nblkrows_total(tmp) - nblkcols_tot = dbcsr_nblkcols_total(tmp) DO row = 1, nblkrows_tot DO col = 1, nblkcols_tot tr = .FALSE. diff --git a/src/dbx/cp_dbcsr_api.F b/src/dbx/cp_dbcsr_api.F index 08b93c4ad4..9deaedd588 100644 --- a/src/dbx/cp_dbcsr_api.F +++ b/src/dbx/cp_dbcsr_api.F @@ -42,12 +42,8 @@ MODULE cp_dbcsr_api dbcsr_iterator_stop_prv => dbcsr_iterator_stop, & dbcsr_iterator_type_prv => dbcsr_iterator_type, & dbcsr_mp_grid_setup_prv => dbcsr_mp_grid_setup, dbcsr_multiply_prv => dbcsr_multiply, & - dbcsr_nblkcols_total_prv => dbcsr_nblkcols_total, & - dbcsr_nblkrows_total_prv => dbcsr_nblkrows_total, & - dbcsr_nfullcols_total_prv => dbcsr_nfullcols_total, & - dbcsr_nfullrows_total_prv => dbcsr_nfullrows_total, dbcsr_no_transpose, & - dbcsr_print_block_sum_prv => dbcsr_print_block_sum, dbcsr_print_config, & - dbcsr_print_prv => dbcsr_print, dbcsr_print_statistics, & + dbcsr_no_transpose, dbcsr_print_block_sum_prv => dbcsr_print_block_sum, & + dbcsr_print_config, dbcsr_print_prv => dbcsr_print, dbcsr_print_statistics, & dbcsr_put_block_prv => dbcsr_put_block, dbcsr_release_prv => dbcsr_release, & dbcsr_replicate_all_prv => dbcsr_replicate_all, & dbcsr_reserve_all_blocks_prv => dbcsr_reserve_all_blocks, & @@ -144,13 +140,9 @@ MODULE cp_dbcsr_api PUBLIC :: dbcsr_distribution_get PUBLIC :: dbcsr_get_matrix_type PUBLIC :: dbcsr_get_occupation - PUBLIC :: dbcsr_nblkrows_total - PUBLIC :: dbcsr_nblkcols_total PUBLIC :: dbcsr_get_num_blocks PUBLIC :: dbcsr_get_data_size PUBLIC :: dbcsr_has_symmetry - PUBLIC :: dbcsr_nfullrows_total - PUBLIC :: dbcsr_nfullcols_total PUBLIC :: dbcsr_get_stored_coordinates PUBLIC :: dbcsr_valid_index @@ -1150,70 +1142,6 @@ CONTAINS END IF END SUBROUTINE dbcsr_multiply -! ************************************************************************************************** -!> \brief ... -!> \param matrix ... -!> \return ... -! ************************************************************************************************** - FUNCTION dbcsr_nblkcols_total(matrix) RESULT(nblkcols_total) - TYPE(dbcsr_type), INTENT(IN) :: matrix - INTEGER :: nblkcols_total - - IF (USE_DBCSR_BACKEND) THEN - nblkcols_total = dbcsr_nblkcols_total_prv(matrix%dbcsr) - ELSE - CPABORT("Not yet implemented for DBM.") - END IF - END FUNCTION dbcsr_nblkcols_total - -! ************************************************************************************************** -!> \brief ... -!> \param matrix ... -!> \return ... -! ************************************************************************************************** - FUNCTION dbcsr_nblkrows_total(matrix) RESULT(nblkrows_total) - TYPE(dbcsr_type), INTENT(IN) :: matrix - INTEGER :: nblkrows_total - - IF (USE_DBCSR_BACKEND) THEN - nblkrows_total = dbcsr_nblkrows_total_prv(matrix%dbcsr) - ELSE - CPABORT("Not yet implemented for DBM.") - END IF - END FUNCTION dbcsr_nblkrows_total - -! ************************************************************************************************** -!> \brief ... -!> \param matrix ... -!> \return ... -! ************************************************************************************************** - FUNCTION dbcsr_nfullcols_total(matrix) RESULT(nfullcols_total) - TYPE(dbcsr_type), INTENT(IN) :: matrix - INTEGER :: nfullcols_total - - IF (USE_DBCSR_BACKEND) THEN - nfullcols_total = dbcsr_nfullcols_total_prv(matrix%dbcsr) - ELSE - CPABORT("Not yet implemented for DBM.") - END IF - END FUNCTION dbcsr_nfullcols_total - -! ************************************************************************************************** -!> \brief ... -!> \param matrix ... -!> \return ... -! ************************************************************************************************** - FUNCTION dbcsr_nfullrows_total(matrix) RESULT(nfullrows_total) - TYPE(dbcsr_type), INTENT(IN) :: matrix - INTEGER :: nfullrows_total - - IF (USE_DBCSR_BACKEND) THEN - nfullrows_total = dbcsr_nfullrows_total_prv(matrix%dbcsr) - ELSE - CPABORT("Not yet implemented for DBM.") - END IF - END FUNCTION dbcsr_nfullrows_total - ! ************************************************************************************************** !> \brief ... !> \param matrix ... diff --git a/src/dbx/cp_dbcsr_contrib.F b/src/dbx/cp_dbcsr_contrib.F index 357cb85405..cfe931366a 100644 --- a/src/dbx/cp_dbcsr_contrib.F +++ b/src/dbx/cp_dbcsr_contrib.F @@ -9,8 +9,7 @@ MODULE cp_dbcsr_contrib USE cp_dbcsr_api, ONLY: & dbcsr_clear, dbcsr_finalize, dbcsr_get_block_p, dbcsr_get_info, dbcsr_has_symmetry, & dbcsr_iterator_blocks_left, dbcsr_iterator_next_block, dbcsr_iterator_start, & - dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_nblkcols_total, dbcsr_nblkrows_total, & - dbcsr_nfullcols_total, dbcsr_nfullrows_total, dbcsr_put_block, dbcsr_reserve_all_blocks, & + dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_put_block, dbcsr_reserve_all_blocks, & dbcsr_type USE dbm_tests, ONLY: generate_larnv_seed USE kinds, ONLY: dp @@ -39,14 +38,17 @@ CONTAINS CHARACTER(len=*), PARAMETER :: routineN = 'dbcsr_hadamard_product' - INTEGER :: col, handle, row + INTEGER :: col, handle, nblkrows_tot_a, & + nblkrows_tot_b, nblkrows_tot_c, row LOGICAL :: found_b REAL(KIND=dp), DIMENSION(:, :), POINTER :: block_a, block_b TYPE(dbcsr_iterator_type) :: iter CALL timeset(routineN, handle) - IF (dbcsr_nblkrows_total(matrix_a) .NE. dbcsr_nblkrows_total(matrix_b) .OR. & - dbcsr_nblkrows_total(matrix_c) .NE. dbcsr_nblkrows_total(matrix_a)) THEN + CALL dbcsr_get_info(matrix_a, nblkrows_total=nblkrows_tot_a) + CALL dbcsr_get_info(matrix_b, nblkrows_total=nblkrows_tot_b) + CALL dbcsr_get_info(matrix_c, nblkrows_total=nblkrows_tot_c) + IF (nblkrows_tot_a /= nblkrows_tot_b .OR. nblkrows_tot_a /= nblkrows_tot_c) THEN CPABORT("matrices not consistent") END IF @@ -157,8 +159,7 @@ CONTAINS CALL timeset(routineN, handle) has_symmetry = dbcsr_has_symmetry(matrix) - nrow = dbcsr_nfullrows_total(matrix) - ncol = dbcsr_nfullcols_total(matrix) + CALL dbcsr_get_info(matrix, nfullrows_total=nrow, nfullcols_total=ncol) CPASSERT(nrow == ncol) ALLOCATE (buffer(nrow)) buffer = 0.0_dp @@ -208,9 +209,7 @@ CONTAINS my_keep_sparsity = .FALSE. IF (PRESENT(keep_sparsity)) my_keep_sparsity = keep_sparsity IF (.NOT. my_keep_sparsity) CALL dbcsr_reserve_all_blocks(matrix) - - nrow = dbcsr_nblkrows_total(matrix) - ncol = dbcsr_nblkcols_total(matrix) + CALL dbcsr_get_info(matrix, nblkrows_total=nrow, nblkcols_total=ncol) CALL dbcsr_iterator_start(iter, matrix) DO WHILE (dbcsr_iterator_blocks_left(iter)) diff --git a/src/dm_ls_scf_qs.F b/src/dm_ls_scf_qs.F index b88338e4f5..baf38593f5 100644 --- a/src/dm_ls_scf_qs.F +++ b/src/dm_ls_scf_qs.F @@ -19,7 +19,7 @@ MODULE dm_ls_scf_qs dbcsr_complete_redistribute, dbcsr_copy, dbcsr_create, dbcsr_desymmetrize, & dbcsr_distribution_get, dbcsr_distribution_hold, dbcsr_distribution_new, & dbcsr_distribution_release, dbcsr_distribution_type, dbcsr_finalize, dbcsr_get_info, & - dbcsr_multiply, dbcsr_nblkrows_total, dbcsr_p_type, dbcsr_release, dbcsr_set, dbcsr_type + dbcsr_multiply, dbcsr_p_type, dbcsr_release, dbcsr_set, dbcsr_type USE cp_dbcsr_cp2k_link, ONLY: cp_dbcsr_alloc_block_from_nbl USE cp_dbcsr_operations, ONLY: dbcsr_allocate_matrix_set USE cp_log_handling, ONLY: cp_get_default_logger,& @@ -127,7 +127,7 @@ CONTAINS ! do nothing CASE (ls_cluster_molecular) ! create format of the clustered matrix - natom = dbcsr_nblkrows_total(matrix_qs) + CALL dbcsr_get_info(matrix_qs, nblkrows_total=natom) nmol = MAXVAL(ls_mstruct%atom_to_molecule) ALLOCATE (atom_to_cluster_primus(natom)) ALLOCATE (atom_to_cluster(natom)) diff --git a/src/domain_submatrix_methods.F b/src/domain_submatrix_methods.F index a742183e8d..ada1f14584 100644 --- a/src/domain_submatrix_methods.F +++ b/src/domain_submatrix_methods.F @@ -17,9 +17,8 @@ MODULE domain_submatrix_methods dbcsr_distribution_get, dbcsr_distribution_type, dbcsr_filter, dbcsr_finalize, & dbcsr_get_block_p, dbcsr_get_info, dbcsr_get_matrix_type, dbcsr_get_stored_coordinates, & dbcsr_iterator_blocks_left, dbcsr_iterator_next_block, dbcsr_iterator_start, & - dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_nblkcols_total, dbcsr_nblkrows_total, & - dbcsr_reserve_block2d, dbcsr_type, dbcsr_type_antisymmetric, dbcsr_type_no_symmetry, & - dbcsr_type_symmetric, dbcsr_work_create + dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_reserve_block2d, dbcsr_type, & + dbcsr_type_antisymmetric, dbcsr_type_no_symmetry, dbcsr_type_symmetric, dbcsr_work_create USE cp_log_handling, ONLY: cp_get_default_logger,& cp_logger_get_default_unit_nr,& cp_logger_type @@ -872,9 +871,7 @@ CONTAINS CALL timeset(routineN, handle) - nblkrows_tot = dbcsr_nblkrows_total(matrix) - nblkcols_tot = dbcsr_nblkcols_total(matrix) - + CALL dbcsr_get_info(matrix, nblkrows_total=nblkrows_tot, nblkcols_total=nblkcols_tot) ndomains = nblkcols_tot ! RZK-warning not true for atomic distributions CALL dbcsr_get_info(distr_pattern, distribution=pattern_dist) CALL dbcsr_distribution_get(pattern_dist, numnodes=nNodes, group=GroupID, mynode=myNode) @@ -1368,9 +1365,7 @@ CONTAINS unit_nr = -1 END IF - nblkrows_tot = dbcsr_nblkrows_total(matrix) - nblkcols_tot = dbcsr_nblkcols_total(matrix) - + CALL dbcsr_get_info(matrix, nblkrows_total=nblkrows_tot, nblkcols_total=nblkcols_tot) ndomains = nblkcols_tot ! RZK-warning not true for atomic distributions ndomains2 = SIZE(submatrix) diff --git a/src/mscfg_types.F b/src/mscfg_types.F index 4eaa68efb0..7718113f43 100644 --- a/src/mscfg_types.F +++ b/src/mscfg_types.F @@ -16,9 +16,8 @@ MODULE mscfg_types dbcsr_add, dbcsr_complete_redistribute, dbcsr_create, dbcsr_distribution_get, & dbcsr_distribution_new, dbcsr_distribution_release, dbcsr_distribution_type, & dbcsr_finalize, dbcsr_get_info, dbcsr_iterator_blocks_left, dbcsr_iterator_next_block, & - dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_nfullcols_total, & - dbcsr_nfullrows_total, dbcsr_release, dbcsr_reserve_block2d, dbcsr_set, dbcsr_type, & - dbcsr_type_no_symmetry, dbcsr_work_create + dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_release, & + dbcsr_reserve_block2d, dbcsr_set, dbcsr_type, dbcsr_type_no_symmetry, dbcsr_work_create USE kinds, ONLY: dp #include "./base/base_uses.f90" @@ -141,9 +140,7 @@ CONTAINS template=matrix_out, & matrix_type=dbcsr_type_no_symmetry) CALL dbcsr_set(matrix_out, 0.0_dp) - - matrix_size(1) = dbcsr_nfullrows_total(matrix_out) - matrix_size(2) = dbcsr_nfullcols_total(matrix_out) + CALL dbcsr_get_info(matrix_out, nfullrows_total=matrix_size(1), nfullcols_total=matrix_size(2)) ! assume that the initial offset is zero offset(1) = 0 @@ -153,9 +150,8 @@ CONTAINS CPASSERT(iset .LE. mscfg_env%nmosets_of_frag(ifrag)) - submatrix_size(1) = dbcsr_nfullrows_total(mscfg_env%mos_of_frag(ifrag, iset)) - submatrix_size(2) = dbcsr_nfullcols_total(mscfg_env%mos_of_frag(ifrag, iset)) - + CALL dbcsr_get_info(mscfg_env%mos_of_frag(ifrag, iset), & + nfullrows_total=submatrix_size(1), nfullcols_total=submatrix_size(2)) CALL copy_submatrix_into_matrix(mscfg_env%mos_of_frag(ifrag, iset), & matrix_temp, offset, submatrix_size, matrix_size) diff --git a/src/qs_fb_distribution_methods.F b/src/qs_fb_distribution_methods.F index f6509ccb96..a22da22f74 100644 --- a/src/qs_fb_distribution_methods.F +++ b/src/qs_fb_distribution_methods.F @@ -11,7 +11,6 @@ MODULE qs_fb_distribution_methods USE cp_dbcsr_api, ONLY: dbcsr_distribution_get,& dbcsr_distribution_type,& dbcsr_get_info,& - dbcsr_nblkcols_total,& dbcsr_p_type,& dbcsr_type USE cp_log_handling, ONLY: cp_get_default_logger,& @@ -454,18 +453,15 @@ CONTAINS INTEGER, DIMENSION(:), INTENT(OUT) :: common_set_ids INTEGER, INTENT(OUT) :: n_common_sets - INTEGER :: icol, nprows, pcol, prow + INTEGER :: icol, nblkcols_tot, nprows, pcol, prow INTEGER, DIMENSION(:), POINTER :: col_dist INTEGER, DIMENSION(:, :), POINTER :: pgrid - LOGICAL :: check_ok TYPE(dbcsr_distribution_type) :: dbcsr_dist - check_ok = natoms .LE. dbcsr_nblkcols_total(dbcsr_mat) - CPASSERT(check_ok) - check_ok = SIZE(preferred_procs_set) .GE. natoms - CPASSERT(check_ok) - check_ok = SIZE(common_set_ids) .GE. natoms - CPASSERT(check_ok) + CALL dbcsr_get_info(dbcsr_mat, nblkcols_total=nblkcols_tot) + CPASSERT(natoms <= nblkcols_tot) + CPASSERT(SIZE(preferred_procs_set) >= natoms) + CPASSERT(SIZE(common_set_ids) >= natoms) CALL dbcsr_get_info(dbcsr_mat, distribution=dbcsr_dist, proc_col_dist=col_dist) CALL dbcsr_distribution_get(dbcsr_dist, pgrid=pgrid, nprows=nprows, npcols=n_common_sets) diff --git a/src/qs_initial_guess.F b/src/qs_initial_guess.F index 35ef69a4bf..e05400076e 100644 --- a/src/qs_initial_guess.F +++ b/src/qs_initial_guess.F @@ -19,11 +19,11 @@ MODULE qs_initial_guess gto_basis_set_type USE cp_control_types, ONLY: dft_control_type USE cp_dbcsr_api, ONLY: & - dbcsr_checksum, dbcsr_copy, dbcsr_dot, dbcsr_filter, dbcsr_get_diag, dbcsr_get_num_blocks, & - dbcsr_get_occupation, dbcsr_iterator_blocks_left, dbcsr_iterator_next_block, & - dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_multiply, & - dbcsr_nfullrows_total, dbcsr_p_type, dbcsr_release, dbcsr_scale, dbcsr_set, & - dbcsr_set_diag, dbcsr_type, dbcsr_verify_matrix + dbcsr_checksum, dbcsr_copy, dbcsr_dot, dbcsr_filter, dbcsr_get_diag, dbcsr_get_info, & + dbcsr_get_num_blocks, dbcsr_get_occupation, dbcsr_iterator_blocks_left, & + dbcsr_iterator_next_block, dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, & + dbcsr_multiply, dbcsr_p_type, dbcsr_release, dbcsr_scale, dbcsr_set, dbcsr_set_diag, & + dbcsr_type, dbcsr_verify_matrix USE cp_dbcsr_operations, ONLY: copy_dbcsr_to_fm,& copy_fm_to_dbcsr,& cp_dbcsr_sm_fm_multiply,& @@ -1223,7 +1223,7 @@ CONTAINS END DO natom = SIZE(particle_set) - nao = dbcsr_nfullrows_total(pmat(1)%matrix) + CALL dbcsr_get_info(pmat(1)%matrix, nfullrows_total=nao) IF (nspin == 1) THEN maxocc = 2.0_dp ELSE