mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-29 06:35:28 -04:00
DBX: Replace individual getters with dbcsr_get_info
This commit is contained in:
parent
99d93919de
commit
bd6578ab8f
12 changed files with 73 additions and 178 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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(:)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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 ...
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue