DBX: Add dbcsr_iterator_readonly_start and mark original INTENT(INOUT)

This commit is contained in:
Ole Schütt 2025-02-20 23:29:53 +01:00 committed by Ole Schütt
parent a4e6df3978
commit 7bc5a5b6ec
32 changed files with 139 additions and 94 deletions

View file

@ -22,10 +22,10 @@ MODULE almo_scf_methods
USE cp_dbcsr_api, ONLY: &
dbcsr_add, dbcsr_copy, dbcsr_create, dbcsr_distribution_get, dbcsr_distribution_type, &
dbcsr_filter, dbcsr_finalize, 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_print, dbcsr_put_block, dbcsr_release, dbcsr_scale_by_vector, &
dbcsr_set, dbcsr_set_diag, dbcsr_transposed, dbcsr_type, dbcsr_type_no_symmetry, &
dbcsr_type_symmetric, dbcsr_work_create
dbcsr_iterator_next_block, dbcsr_iterator_readonly_start, dbcsr_iterator_start, &
dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_multiply, dbcsr_print, dbcsr_put_block, &
dbcsr_release, 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_add_on_diag,&
@ -1091,7 +1091,7 @@ CONTAINS
CALL dbcsr_create(matrix_out, template=matrix_in)
CALL dbcsr_work_create(matrix_out, work_mutable=.TRUE.)
CALL dbcsr_iterator_start(iter, matrix_in)
CALL dbcsr_iterator_readonly_start(iter, matrix_in)
DO WHILE (dbcsr_iterator_blocks_left(iter))

View file

@ -22,10 +22,10 @@ MODULE cp_dbcsr_operations
dbcsr_create, dbcsr_deallocate_matrix, dbcsr_desymmetrize, dbcsr_distribution_get, &
dbcsr_distribution_new, dbcsr_distribution_release, dbcsr_distribution_type, &
dbcsr_get_info, dbcsr_get_matrix_type, 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_type, &
dbcsr_type_antisymmetric, dbcsr_type_no_symmetry, dbcsr_type_symmetric, dbcsr_valid_index, &
dbcsr_verify_matrix
dbcsr_iterator_next_block, dbcsr_iterator_readonly_start, dbcsr_iterator_start, &
dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_multiply, dbcsr_p_type, dbcsr_release, &
dbcsr_scale, dbcsr_type, dbcsr_type_antisymmetric, dbcsr_type_no_symmetry, &
dbcsr_type_symmetric, dbcsr_valid_index, dbcsr_verify_matrix
USE cp_dbcsr_contrib, ONLY: dbcsr_frobenius_norm,&
dbcsr_reserve_all_blocks
USE cp_fm_basic_linalg, ONLY: cp_fm_gemm
@ -212,7 +212,7 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE copy_dbcsr_to_fm(matrix, fm)
TYPE(dbcsr_type), INTENT(IN) :: matrix
TYPE(cp_fm_type), INTENT(IN) :: fm
TYPE(cp_fm_type), INTENT(INOUT) :: fm
CHARACTER(LEN=*), PARAMETER :: routineN = 'copy_dbcsr_to_fm'
@ -273,7 +273,7 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE copy_dbcsr_to_fm_bc(bc_mat, fm)
TYPE(dbcsr_type), INTENT(IN) :: bc_mat
TYPE(cp_fm_type), INTENT(IN) :: fm
TYPE(cp_fm_type), INTENT(INOUT) :: fm
CHARACTER(LEN=*), PARAMETER :: routineN = 'copy_dbcsr_to_fm_bc'
@ -293,7 +293,7 @@ CONTAINS
fm_block = REAL(0.0, KIND=dp)
!$OMP PARALLEL DEFAULT(NONE) PRIVATE(iter, row, col, dbcsr_block) &
!$OMP SHARED(bc_mat, last_row, first_row, last_col, first_col, fm_block)
CALL dbcsr_iterator_start(iter, bc_mat)
CALL dbcsr_iterator_readonly_start(iter, bc_mat)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, row, col, dbcsr_block)
fm_block(first_row(row):last_row(row), first_col(col):last_col(col)) = dbcsr_block(:, :)
@ -488,7 +488,7 @@ CONTAINS
!$OMP PARALLEL DEFAULT(NONE) SHARED(matrix_a,vec_b,vec_c,ncol,my_alpha2,my_alpha,my_ncol,has_symm) &
!$OMP PRIVATE(iter,row,col,data_d,rowoff,coloff)
CALL dbcsr_iterator_start(iter, matrix_a, read_only=.TRUE., dynamic=.TRUE., dynamic_byrows=.TRUE.)
CALL dbcsr_iterator_readonly_start(iter, matrix_a, dynamic=.TRUE., dynamic_byrows=.TRUE.)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, row, col, data_d, row_offset=rowoff, col_offset=coloff)
IF (my_ncol .NE. 1) THEN
@ -510,7 +510,7 @@ CONTAINS
! FIXME ... in the symmetric case, the writes to vec_c depend on the column, not the row. This makes OMP-ing more difficult
! needs e.g. a buffer for vec_c and a reduction of that buffer.
IF (has_symm) THEN
CALL dbcsr_iterator_start(iter, matrix_a)
CALL dbcsr_iterator_readonly_start(iter, matrix_a)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, row, col, data_d, row_offset=rowoff, col_offset=coloff)
IF (row .NE. col) THEN
@ -550,7 +550,8 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE cp_dbcsr_sm_fm_multiply(matrix, fm_in, fm_out, ncol, alpha, beta)
TYPE(dbcsr_type), INTENT(IN) :: matrix
TYPE(cp_fm_type), INTENT(IN) :: fm_in, fm_out
TYPE(cp_fm_type), INTENT(IN) :: fm_in
TYPE(cp_fm_type), INTENT(INOUT) :: fm_out
INTEGER, INTENT(IN) :: ncol
REAL(dp), INTENT(IN), OPTIONAL :: alpha, beta

View file

@ -15,9 +15,10 @@ MODULE ct_methods
USE cp_dbcsr_api, ONLY: &
dbcsr_add, dbcsr_copy, dbcsr_create, dbcsr_desymmetrize, dbcsr_dot, dbcsr_filter, &
dbcsr_finalize, 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_put_block, dbcsr_release, dbcsr_scale, dbcsr_set, dbcsr_set_diag, &
dbcsr_transposed, dbcsr_type, dbcsr_type_no_symmetry, dbcsr_work_create
dbcsr_iterator_next_block, dbcsr_iterator_readonly_start, dbcsr_iterator_start, &
dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_multiply, dbcsr_put_block, dbcsr_release, &
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_add_on_diag,&
@ -1520,7 +1521,7 @@ CONTAINS
IF (do_eigenvalues) &
CALL dbcsr_work_create(e, work_mutable=.TRUE.)
CALL dbcsr_iterator_start(iter, matrix)
CALL dbcsr_iterator_readonly_start(iter, matrix)
DO WHILE (dbcsr_iterator_blocks_left(iter))

View file

@ -117,6 +117,7 @@ MODULE cp_dbcsr_api
! iterator
PUBLIC :: dbcsr_iterator_start
PUBLIC :: dbcsr_iterator_readonly_start
PUBLIC :: dbcsr_iterator_stop
PUBLIC :: dbcsr_iterator_blocks_left
PUBLIC :: dbcsr_iterator_next_block
@ -1065,22 +1066,41 @@ CONTAINS
!> \param shared ...
!> \param dynamic ...
!> \param dynamic_byrows ...
!> \param read_only ...
! **************************************************************************************************
SUBROUTINE dbcsr_iterator_start(iterator, matrix, shared, dynamic, dynamic_byrows, read_only)
SUBROUTINE dbcsr_iterator_start(iterator, matrix, shared, dynamic, dynamic_byrows)
TYPE(dbcsr_iterator_type), INTENT(OUT) :: iterator
TYPE(dbcsr_type), INTENT(IN) :: matrix
LOGICAL, INTENT(IN), OPTIONAL :: shared, dynamic, dynamic_byrows, &
read_only
TYPE(dbcsr_type), INTENT(INOUT) :: matrix
LOGICAL, INTENT(IN), OPTIONAL :: shared, dynamic, dynamic_byrows
IF (USE_DBCSR_BACKEND) THEN
CALL dbcsr_iterator_start_prv(iterator%dbcsr, matrix%dbcsr, shared, dynamic, &
dynamic_byrows, read_only)
CALL dbcsr_iterator_start_prv(iterator%dbcsr, matrix%dbcsr, shared, dynamic, dynamic_byrows)
ELSE
CPABORT("Not yet implemented for DBM.")
END IF
END SUBROUTINE dbcsr_iterator_start
! **************************************************************************************************
!> \brief Like dbcsr_iterator_start() but with matrix being INTENT(IN).
!> When invoking this routine, the caller promises not to modify the returned blocks.
!> \param iterator ...
!> \param matrix ...
!> \param shared ...
!> \param dynamic ...
!> \param dynamic_byrows ...
! **************************************************************************************************
SUBROUTINE dbcsr_iterator_readonly_start(iterator, matrix, shared, dynamic, dynamic_byrows)
TYPE(dbcsr_iterator_type), INTENT(OUT) :: iterator
TYPE(dbcsr_type), INTENT(IN) :: matrix
LOGICAL, INTENT(IN), OPTIONAL :: shared, dynamic, dynamic_byrows
IF (USE_DBCSR_BACKEND) THEN
CALL dbcsr_iterator_start_prv(iterator%dbcsr, matrix%dbcsr, shared, dynamic, &
dynamic_byrows, read_only=.TRUE.)
ELSE
CPABORT("Not yet implemented for DBM.")
END IF
END SUBROUTINE dbcsr_iterator_readonly_start
! **************************************************************************************************
!> \brief ...
!> \param iterator ...

View file

@ -10,8 +10,8 @@ MODULE cp_dbcsr_contrib
dbcsr_clear, dbcsr_distribution_get, dbcsr_distribution_type, dbcsr_finalize, &
dbcsr_get_info, dbcsr_get_readonly_block_p, dbcsr_get_stored_coordinates, &
dbcsr_has_symmetry, dbcsr_iterator_blocks_left, dbcsr_iterator_next_block, &
dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_put_block, &
dbcsr_reserve_blocks, dbcsr_type
dbcsr_iterator_readonly_start, dbcsr_iterator_start, dbcsr_iterator_stop, &
dbcsr_iterator_type, dbcsr_put_block, dbcsr_reserve_blocks, dbcsr_type
USE dbm_tests, ONLY: generate_larnv_seed
USE kinds, ONLY: dp
USE message_passing, ONLY: mp_comm_type
@ -58,7 +58,7 @@ CONTAINS
END IF
CALL dbcsr_clear(matrix_c)
CALL dbcsr_iterator_start(iter, matrix_a)
CALL dbcsr_iterator_readonly_start(iter, matrix_a)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, row, col, block_a)
CALL dbcsr_get_readonly_block_p(matrix_b, row, col, block_b, found_b)
@ -90,7 +90,7 @@ CONTAINS
CALL timeset(routineN, handle)
norm = 0.0_dp
CALL dbcsr_iterator_start(iter, matrix)
CALL dbcsr_iterator_readonly_start(iter, matrix)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, block=block)
norm = MAX(norm, MAXVAL(ABS(block)))
@ -124,7 +124,7 @@ CONTAINS
has_symmetry = dbcsr_has_symmetry(matrix)
norm = 0.0_dp
CALL dbcsr_iterator_start(iter, matrix)
CALL dbcsr_iterator_readonly_start(iter, matrix)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, row, col, block)
IF (has_symmetry .AND. row /= col) THEN
@ -169,7 +169,7 @@ CONTAINS
ALLOCATE (buffer(nrow))
buffer = 0.0_dp
CALL dbcsr_iterator_start(iter, matrix)
CALL dbcsr_iterator_readonly_start(iter, matrix)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, row, col, block, row_offset=row_offset, col_offset=col_offset)
DO j = 1, SIZE(block, 2)

View file

@ -453,7 +453,8 @@ CONTAINS
! Routine arguments
TYPE(qs_environment_type), POINTER :: qs_env
TYPE(cp_fm_type), INTENT(IN) :: mat_t, mat_i, mat_w
TYPE(cp_fm_type), INTENT(INOUT) :: mat_t, mat_i
TYPE(cp_fm_type), INTENT(IN) :: mat_w
INTEGER :: n_deps
TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: mat_s

View file

@ -557,7 +557,8 @@ CONTAINS
INTENT(IN) :: Eigenval
TYPE(qs_p_env_type) :: p_env
TYPE(cp_fm_type), DIMENSION(nspins), INTENT(IN) :: fm_mo
TYPE(cp_fm_type), INTENT(IN) :: fm_ao, fm_back
TYPE(cp_fm_type), INTENT(INOUT) :: fm_ao
TYPE(cp_fm_type), INTENT(IN) :: fm_back
INTEGER, INTENT(IN) :: transf_type_in
TYPE(cp_fm_type), DIMENSION(nspins), INTENT(IN) :: fm_mo_out
LOGICAL, INTENT(IN), OPTIONAL :: recalc_hfx_integrals
@ -690,7 +691,8 @@ CONTAINS
INTENT(IN) :: Eigenval
TYPE(qs_p_env_type), INTENT(IN), POINTER :: p_env
TYPE(cp_fm_type), DIMENSION(dimen), INTENT(IN) :: L_jb
TYPE(cp_fm_type), INTENT(IN) :: fm_G_mu_nu, fm_back
TYPE(cp_fm_type), INTENT(INOUT) :: fm_G_mu_nu
TYPE(cp_fm_type), INTENT(IN) :: fm_back
TYPE(cp_fm_type), DIMENSION(nspins), INTENT(IN) :: P_ia
CHARACTER(LEN=*), PARAMETER :: routineN = 'solve_z_vector_eq_low'
@ -782,7 +784,8 @@ CONTAINS
INTENT(IN) :: Eigenval
TYPE(qs_p_env_type), INTENT(IN), POINTER :: p_env
TYPE(cp_fm_type), DIMENSION(nspins), INTENT(IN) :: L_jb
TYPE(cp_fm_type), INTENT(IN) :: fm_G_mu_nu, fm_back
TYPE(cp_fm_type), INTENT(INOUT) :: fm_G_mu_nu
TYPE(cp_fm_type), INTENT(IN) :: fm_back
TYPE(cp_fm_type), DIMENSION(nspins), INTENT(IN) :: P_ia, precond
CHARACTER(LEN=*), PARAMETER :: routineN = 'solve_z_vector_pople'
@ -1031,7 +1034,8 @@ CONTAINS
INTENT(IN) :: Eigenval
TYPE(qs_p_env_type), INTENT(IN), POINTER :: p_env
TYPE(cp_fm_type), DIMENSION(nspins), INTENT(IN) :: L_jb
TYPE(cp_fm_type), INTENT(IN) :: fm_G_mu_nu, fm_back
TYPE(cp_fm_type), INTENT(INOUT) :: fm_G_mu_nu
TYPE(cp_fm_type), INTENT(IN) :: fm_back
TYPE(cp_fm_type), DIMENSION(nspins), INTENT(IN) :: P_ia, precond
CHARACTER(LEN=*), PARAMETER :: routineN = 'solve_z_vector_cg'

View file

@ -16,7 +16,7 @@ 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_put_block, &
dbcsr_iterator_readonly_start, dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_put_block, &
dbcsr_release, dbcsr_set, dbcsr_type, dbcsr_type_no_symmetry, dbcsr_work_create
USE kinds, ONLY: dp
#include "./base/base_uses.f90"
@ -289,7 +289,7 @@ CONTAINS
CALL dbcsr_work_create(matrix_new, work_mutable=.TRUE.)
! iterate over local blocks of the small matrix
CALL dbcsr_iterator_start(iter, submatrix_in)
CALL dbcsr_iterator_readonly_start(iter, submatrix_in)
DO WHILE (dbcsr_iterator_blocks_left(iter))

View file

@ -1317,7 +1317,7 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE compute_kinetic_mat(qs_env, kinetic_mat)
TYPE(qs_environment_type), POINTER :: qs_env
TYPE(cp_fm_type), INTENT(IN) :: kinetic_mat
TYPE(cp_fm_type), INTENT(INOUT) :: kinetic_mat
CHARACTER(LEN=*), PARAMETER :: routineN = 'compute_kinetic_mat'

View file

@ -111,7 +111,8 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE multiply_localization(ao_matrix, mo_coeff, work, nmo, icenter, res)
TYPE(dbcsr_type), INTENT(IN), POINTER :: ao_matrix
TYPE(cp_fm_type), INTENT(IN) :: mo_coeff, work
TYPE(cp_fm_type), INTENT(IN) :: mo_coeff
TYPE(cp_fm_type), INTENT(INOUT) :: work
INTEGER, INTENT(IN) :: nmo, icenter
TYPE(cp_fm_type), INTENT(IN) :: res

View file

@ -17,9 +17,9 @@ MODULE qs_fb_env_methods
USE cp_control_types, ONLY: dft_control_type
USE cp_dbcsr_api, ONLY: &
dbcsr_create, dbcsr_finalize, dbcsr_get_info, 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_reserve_blocks, dbcsr_set, dbcsr_type, &
dbcsr_type_no_symmetry
dbcsr_iterator_next_block, dbcsr_iterator_readonly_start, dbcsr_iterator_stop, &
dbcsr_iterator_type, dbcsr_multiply, dbcsr_p_type, dbcsr_release, dbcsr_reserve_blocks, &
dbcsr_set, dbcsr_type, dbcsr_type_no_symmetry
USE cp_dbcsr_operations, ONLY: copy_dbcsr_to_fm,&
dbcsr_allocate_matrix_set,&
dbcsr_deallocate_matrix_set
@ -1125,7 +1125,6 @@ CONTAINS
INTEGER :: iatom, jatom, nblkcols_total, &
nblkrows_total, nblks
INTEGER, ALLOCATABLE, DIMENSION(:) :: cols, rows
REAL(dp), DIMENSION(:, :), POINTER :: mat_block
TYPE(dbcsr_iterator_type) :: iter
CALL dbcsr_get_info(matrix=matrix_in, &
@ -1138,9 +1137,9 @@ CONTAINS
rows(:) = 0
cols(:) = 0
nblks = 0
CALL dbcsr_iterator_start(iter, matrix_in)
CALL dbcsr_iterator_readonly_start(iter, matrix_in)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, iatom, jatom, mat_block)
CALL dbcsr_iterator_next_block(iter, iatom, jatom)
nblks = nblks + 1
rows(nblks) = iatom
cols(nblks) = jatom

View file

@ -133,7 +133,8 @@ CONTAINS
!
TYPE(qs_environment_type), POINTER :: qs_env
TYPE(qs_p_env_type) :: p_env
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: c0, Av
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: c0
TYPE(cp_fm_type), DIMENSION(:), INTENT(INOUT) :: Av
INTEGER :: ispin, ncol
TYPE(dft_control_type), POINTER :: dft_control

View file

@ -567,7 +567,9 @@ CONTAINS
!
TYPE(qs_environment_type), INTENT(IN), POINTER :: qs_env
TYPE(qs_p_env_type) :: p_env
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: c0, v, Av, chc
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: c0, v
TYPE(cp_fm_type), DIMENSION(:), INTENT(INOUT) :: Av
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: chc
CHARACTER(LEN=*), PARAMETER :: routineN = 'apply_op'
@ -662,7 +664,8 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE apply_op_1(v, Av, matrix_ks, matrix_s, chc)
!
TYPE(cp_fm_type), INTENT(IN) :: v, Av
TYPE(cp_fm_type), INTENT(IN) :: v
TYPE(cp_fm_type), INTENT(INOUT) :: Av
TYPE(dbcsr_type), INTENT(IN) :: matrix_ks, matrix_s
TYPE(cp_fm_type), INTENT(IN) :: chc

View file

@ -2110,7 +2110,7 @@ CONTAINS
TYPE(dbcsr_type), POINTER :: cosmat, sinmat
TYPE(mo_set_type), DIMENSION(:), INTENT(IN) :: mos
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(IN) :: op_fm_set
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: opvec
TYPE(cp_fm_type), DIMENSION(:), INTENT(INOUT) :: opvec
INTEGER :: i, nao, nmo
TYPE(cp_fm_type), POINTER :: mo_coeff

View file

@ -73,7 +73,7 @@ CONTAINS
TYPE(dbcsr_type), POINTER :: matrix_h, matrix_s
TYPE(cp_fm_type), INTENT(IN), OPTIONAL :: matrix_orthogonal_space_fm
TYPE(cp_fm_type), INTENT(IN) :: matrix_c_fm
TYPE(cp_fm_type), INTENT(INOUT) :: matrix_c_fm
TYPE(preconditioner_type), OPTIONAL, POINTER :: preconditioner
REAL(KIND=dp) :: eps_gradient
INTEGER, INTENT(IN) :: iter_max

View file

@ -718,7 +718,8 @@ CONTAINS
TYPE(qs_p_env_type) :: p_env
TYPE(qs_environment_type), POINTER :: qs_env
INTEGER, INTENT(IN) :: spin
TYPE(cp_fm_type), INTENT(IN) :: v, res
TYPE(cp_fm_type), INTENT(IN) :: v
TYPE(cp_fm_type), INTENT(INOUT) :: res
CHARACTER(len=*), PARAMETER :: routineN = 'p_op_l1_spin'

View file

@ -262,10 +262,11 @@ CONTAINS
!> \param ksbuf2 ...
! **************************************************************************************************
SUBROUTINE eigensolver_dbcsr(matrix_ks, matrix_ks_fm, mo_set, ortho_dbcsr, ksbuf1, ksbuf2)
TYPE(dbcsr_type), POINTER :: matrix_ks
TYPE(cp_fm_type), INTENT(IN) :: matrix_ks_fm
TYPE(dbcsr_type), INTENT(IN) :: matrix_ks
TYPE(cp_fm_type), INTENT(INOUT) :: matrix_ks_fm
TYPE(mo_set_type), INTENT(IN) :: mo_set
TYPE(dbcsr_type), POINTER :: ortho_dbcsr, ksbuf1, ksbuf2
TYPE(dbcsr_type), INTENT(IN) :: ortho_dbcsr
TYPE(dbcsr_type), INTENT(INOUT) :: ksbuf1, ksbuf2
CHARACTER(len=*), PARAMETER :: routineN = 'eigensolver_dbcsr'

View file

@ -162,7 +162,8 @@ CONTAINS
TYPE(local_rho_type), POINTER :: local_rho_set
TYPE(qs_environment_type), POINTER :: qs_env
TYPE(tddfpt_subgroup_env_type), INTENT(in) :: sub_env
TYPE(cp_fm_type), INTENT(IN) :: wfm_rho_orb, wfm_rho_aux_fit, wfm_aux_orb
TYPE(cp_fm_type), INTENT(INOUT) :: wfm_rho_orb
TYPE(cp_fm_type), INTENT(IN) :: wfm_rho_aux_fit, wfm_aux_orb
CHARACTER(LEN=*), PARAMETER :: routineN = 'tddfpt_construct_aux_fit_density'

View file

@ -262,7 +262,7 @@ CONTAINS
SUBROUTINE tddfpt_orthonormalize_psi1_psi1(evects, nvects_new, S_evects, matrix_s)
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(in) :: evects
INTEGER, INTENT(in) :: nvects_new
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(in) :: S_evects
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(INOUT) :: S_evects
TYPE(dbcsr_type), POINTER :: matrix_s
CHARACTER(LEN=*), PARAMETER :: routineN = 'tddfpt_orthonormalize_psi1_psi1'
@ -342,7 +342,8 @@ CONTAINS
SUBROUTINE tddfpt_compute_Aop_evects(Aop_evects, evects, S_evects, gs_mos, tddfpt_control, &
matrix_ks, qs_env, kernel_env, &
sub_env, work_matrices, matrix_s)
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(in) :: Aop_evects, evects, S_evects
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(INOUT) :: Aop_evects
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(IN) :: evects, S_evects
TYPE(tddfpt_ground_state_mos), DIMENSION(:), &
INTENT(in) :: gs_mos
TYPE(tddfpt2_control_type), POINTER :: tddfpt_control

View file

@ -97,7 +97,8 @@ CONTAINS
do_hfx, do_admm, qs_env, kernel_env, kernel_env_admm_aux, &
sub_env, work_matrices, admm_symm, admm_xc_correction, do_lrigpw, &
tddfpt_mgrid)
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(IN) :: Aop_evects, evects
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(INOUT) :: Aop_evects
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(IN) :: evects
LOGICAL, INTENT(in) :: is_rks_triplets, do_hfx, do_admm
TYPE(qs_environment_type), POINTER :: qs_env
TYPE(full_kernel_env_type), POINTER :: kernel_env, kernel_env_admm_aux
@ -495,7 +496,8 @@ CONTAINS
qs_env, stda_control, stda_env, &
sub_env, work_matrices)
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(IN) :: Aop_evects, evects
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(INOUT) :: Aop_evects
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(IN) :: evects
LOGICAL, INTENT(in) :: is_rks_triplets
TYPE(qs_environment_type), POINTER :: qs_env
TYPE(stda_control_type) :: stda_control

View file

@ -648,7 +648,7 @@ CONTAINS
TYPE(tddfpt_ground_state_mos), DIMENSION(:), &
POINTER :: gs_mos
TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: matrix_hz
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: cpmos
TYPE(cp_fm_type), DIMENSION(:), INTENT(INOUT) :: cpmos
CHARACTER(LEN=*), PARAMETER :: routineN = 'tddfpt_resvec2'
@ -1142,7 +1142,7 @@ CONTAINS
TYPE(tddfpt_ground_state_mos), DIMENSION(:), &
POINTER :: gs_mos
TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: matrix_hz
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: cpmos
TYPE(cp_fm_type), DIMENSION(:), INTENT(INOUT) :: cpmos
CHARACTER(LEN=*), PARAMETER :: routineN = 'tddfpt_resvec2_xtb'

View file

@ -102,7 +102,8 @@ CONTAINS
!> Thomas Chassaing on 08.2002.
! **************************************************************************************************
SUBROUTINE tddfpt_apply_energy_diff(Aop_evects, evects, S_evects, gs_mos, matrix_ks)
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(in) :: Aop_evects, evects, S_evects
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(INOUT) :: Aop_evects
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(IN) :: evects, S_evects
TYPE(tddfpt_ground_state_mos), DIMENSION(:), &
INTENT(in) :: gs_mos
TYPE(dbcsr_p_type), DIMENSION(:), INTENT(in) :: matrix_ks
@ -515,7 +516,8 @@ CONTAINS
SUBROUTINE tddfpt_apply_hfx(Aop_evects, evects, gs_mos, do_admm, qs_env, &
work_rho_ia_ao_symm, work_hmat_symm, work_rho_ia_ao_asymm, &
work_hmat_asymm, wfm_rho_orb)
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(in) :: Aop_evects, evects
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(INOUT) :: Aop_evects
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(IN) :: evects
TYPE(tddfpt_ground_state_mos), DIMENSION(:), &
INTENT(in) :: gs_mos
LOGICAL, INTENT(in) :: do_admm
@ -768,7 +770,8 @@ CONTAINS
TYPE(tddfpt_subgroup_env_type) :: sub_env
REAL(KIND=dp), INTENT(IN) :: rcut, hfx_scale
TYPE(tddfpt_work_matrices) :: work
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: X, res
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: X
TYPE(cp_fm_type), DIMENSION(:), INTENT(INOUT) :: res
CHARACTER(len=*), PARAMETER :: routineN = 'tddfpt_apply_hfxlr_kernel'

View file

@ -320,7 +320,7 @@ CONTAINS
TYPE(cp_logger_type), INTENT(in), POINTER :: logger
TYPE(section_vals_type), INTENT(in), POINTER :: tddfpt_print_section
TYPE(dbcsr_type), INTENT(in), POINTER :: matrix_s
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(in) :: S_evects
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(INOUT) :: S_evects
TYPE(tddfpt_subgroup_env_type), INTENT(in) :: sub_env
CHARACTER(LEN=*), PARAMETER :: routineN = 'tddfpt_write_newtonx_output'
@ -512,7 +512,7 @@ CONTAINS
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(in) :: evects
INTEGER, INTENT(in) :: ounit
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(in) :: S_evects
TYPE(cp_fm_type), DIMENSION(:, :), INTENT(INOUT) :: S_evects
TYPE(dbcsr_type), INTENT(in), POINTER :: matrix_s
CHARACTER(LEN=*), PARAMETER :: routineN = 'tddfpt_check_orthonormality'

View file

@ -468,8 +468,9 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE get_lowdin_x(shalf, xvec, xt)
TYPE(dbcsr_type) :: shalf
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: xvec, xt
TYPE(dbcsr_type), INTENT(IN) :: shalf
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: xvec
TYPE(cp_fm_type), DIMENSION(:), INTENT(INOUT) :: xt
CHARACTER(len=*), PARAMETER :: routineN = 'get_lowdin_x'
@ -512,7 +513,8 @@ CONTAINS
TYPE(tddfpt_subgroup_env_type) :: sub_env
TYPE(tddfpt_work_matrices) :: work
LOGICAL, INTENT(IN) :: is_rks_triplets
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: X, res
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: X
TYPE(cp_fm_type), DIMENSION(:), INTENT(INOUT) :: res
CHARACTER(len=*), PARAMETER :: routineN = 'stda_calculate_kernel'

View file

@ -367,7 +367,8 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE normalize(X, tmp_vec, metric)
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: x, tmp_vec
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: x
TYPE(cp_fm_type), DIMENSION(:), INTENT(INOUT) :: tmp_vec
TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: metric
INTEGER :: n_spins, spin

View file

@ -20,9 +20,9 @@ MODULE rpa_gw_im_time_util
dbcsr_create, dbcsr_distribution_get, dbcsr_distribution_new, dbcsr_distribution_release, &
dbcsr_distribution_type, dbcsr_filter, dbcsr_get_diag, dbcsr_get_info, &
dbcsr_get_stored_coordinates, dbcsr_init_p, 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_release_p, dbcsr_set_diag, dbcsr_type, &
dbcsr_type_no_symmetry
dbcsr_iterator_next_block, dbcsr_iterator_readonly_start, dbcsr_iterator_start, &
dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_multiply, dbcsr_p_type, dbcsr_release, &
dbcsr_release_p, dbcsr_set_diag, dbcsr_type, dbcsr_type_no_symmetry
USE cp_dbcsr_contrib, ONLY: dbcsr_add_on_diag,&
dbcsr_reserve_all_blocks
USE cp_dbcsr_operations, ONLY: copy_fm_to_dbcsr,&
@ -582,11 +582,10 @@ CONTAINS
num_entries_send = 0
num_blocks_send = 0
CALL dbcsr_iterator_start(iter, mat_orig)
CALL dbcsr_iterator_readonly_start(iter, mat_orig)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, row, col, data_block, &
row_size=row_size, col_size=col_size)
CALL dbcsr_iterator_next_block(iter, row, col, row_size=row_size, col_size=col_size)
row_reflected = image_atom(row)
@ -650,7 +649,7 @@ CONTAINS
ALLOCATE (entry_counter(0:para_env%num_pe - 1))
entry_counter(:) = 0
CALL dbcsr_iterator_start(iter, mat_orig)
CALL dbcsr_iterator_readonly_start(iter, mat_orig)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, row, col, data_block, &

View file

@ -414,7 +414,7 @@ CONTAINS
fm_mat_work, cfm_mat_Q, ikp, nkp, ikp_local, para_env)
TYPE(dbcsr_p_type), DIMENSION(:, :), INTENT(INOUT) :: mat_P_omega_kp
TYPE(cp_fm_type), INTENT(IN) :: fm_mat_RI_global_work, fm_mat_work
TYPE(cp_fm_type), INTENT(INOUT) :: fm_mat_RI_global_work, fm_mat_work
TYPE(cp_cfm_type), INTENT(IN) :: cfm_mat_Q
INTEGER, INTENT(IN) :: ikp, nkp, ikp_local
TYPE(mp_para_env_type), POINTER :: para_env

View file

@ -315,7 +315,7 @@ CONTAINS
TYPE(dbcsr_p_type), DIMENSION(:), INTENT(IN), &
POINTER :: mat_mu_nu
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: fm_P_mu_nu
TYPE(cp_fm_type), INTENT(IN) :: fm_X_ao
TYPE(cp_fm_type), INTENT(INOUT) :: fm_X_ao
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: fm_X_mo
TYPE(cp_fm_type), INTENT(IN) :: fm_X_ao_mo
@ -412,7 +412,8 @@ CONTAINS
! **************************************************************************************************
SUBROUTINE xc_contribution(qs_env, fm_XC_ao, fm_XC_ao_mo, fm_XC_mo, mo_coeff, dimen)
TYPE(qs_environment_type), INTENT(IN), POINTER :: qs_env
TYPE(cp_fm_type), INTENT(IN) :: fm_XC_ao, fm_XC_ao_mo
TYPE(cp_fm_type), INTENT(INOUT) :: fm_XC_ao
TYPE(cp_fm_type), INTENT(IN) :: fm_XC_ao_mo
TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: fm_XC_mo, mo_coeff
INTEGER, INTENT(IN) :: dimen

View file

@ -1264,9 +1264,10 @@ CONTAINS
SUBROUTINE contract_P_omega_with_mat_L(mat_P_omega, mat_L, mat_work, eps_filter_im_time, fm_mat_work, dimen_RI, &
dimen_RI_red, fm_mat_L, fm_mat_Q)
TYPE(dbcsr_type), POINTER :: mat_P_omega, mat_L, mat_work
TYPE(dbcsr_type), INTENT(IN) :: mat_P_omega, mat_L
TYPE(dbcsr_type), INTENT(INOUT) :: mat_work
REAL(KIND=dp), INTENT(IN) :: eps_filter_im_time
TYPE(cp_fm_type), INTENT(IN) :: fm_mat_work
TYPE(cp_fm_type), INTENT(INOUT) :: fm_mat_work
INTEGER, INTENT(IN) :: dimen_RI, dimen_RI_red
TYPE(cp_fm_type), INTENT(IN) :: fm_mat_L, fm_mat_Q

View file

@ -44,8 +44,8 @@ MODULE submatrix_dissection
USE cp_dbcsr_api, ONLY: &
dbcsr_distribution_get, dbcsr_distribution_type, dbcsr_finalize, dbcsr_get_block_p, &
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_put_block, dbcsr_type
dbcsr_iterator_next_block, dbcsr_iterator_readonly_start, dbcsr_iterator_stop, &
dbcsr_iterator_type, dbcsr_put_block, dbcsr_type
USE kinds, ONLY: dp
USE message_passing, ONLY: mp_comm_type
USE submatrix_types, ONLY: buffer_type,&
@ -199,7 +199,7 @@ CONTAINS
! Determine number of locally stored blocks
this%local_blocks = 0
CALL dbcsr_iterator_start(iter, this%dbcsr_mat, read_only=.TRUE.)
CALL dbcsr_iterator_readonly_start(iter, this%dbcsr_mat)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, cur_row, cur_col)
this%local_blocks = this%local_blocks + 1
@ -214,7 +214,7 @@ CONTAINS
this%result_blocks_for_rank_buf_offsets(0:this%numnodes - 1))
i = 1
CALL dbcsr_iterator_start(iter, this%dbcsr_mat, read_only=.TRUE.)
CALL dbcsr_iterator_readonly_start(iter, this%dbcsr_mat)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, cur_row, cur_col)
this%coo_cols_local(i) = cur_col

View file

@ -31,9 +31,10 @@ MODULE xas_tdp_atom
dbcsr_copy, dbcsr_create, dbcsr_distribution_get, dbcsr_distribution_new, &
dbcsr_distribution_release, dbcsr_distribution_type, dbcsr_filter, dbcsr_finalize, &
dbcsr_get_block_p, dbcsr_get_stored_coordinates, dbcsr_iterator_blocks_left, &
dbcsr_iterator_next_block, dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, &
dbcsr_p_type, dbcsr_put_block, dbcsr_release, dbcsr_replicate_all, dbcsr_set, dbcsr_type, &
dbcsr_type_antisymmetric, dbcsr_type_no_symmetry, dbcsr_type_symmetric
dbcsr_iterator_next_block, dbcsr_iterator_readonly_start, dbcsr_iterator_start, &
dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_p_type, dbcsr_put_block, dbcsr_release, &
dbcsr_replicate_all, dbcsr_set, dbcsr_type, dbcsr_type_antisymmetric, &
dbcsr_type_no_symmetry, dbcsr_type_symmetric
USE cp_dbcsr_cholesky, ONLY: cp_dbcsr_cholesky_decompose,&
cp_dbcsr_cholesky_invert
USE cp_dbcsr_operations, ONLY: dbcsr_deallocate_matrix_set
@ -554,7 +555,7 @@ CONTAINS
ALLOCATE (n_neighbors(nbase, 0:para_env%num_pe - 1))
n_neighbors = 0
CALL dbcsr_iterator_start(iter, mat_s)
CALL dbcsr_iterator_readonly_start(iter, mat_s)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, row=iblk, column=jblk)
@ -589,7 +590,7 @@ CONTAINS
END DO
! Loop a second time over S, this time fill the neighbors details
CALL dbcsr_iterator_start(iter, mat_s)
CALL dbcsr_iterator_readonly_start(iter, mat_s)
ALLOCATE (inb(nbase))
inb = 1
DO WHILE (dbcsr_iterator_blocks_left(iter))

View file

@ -737,7 +737,7 @@ CONTAINS
xas_tdp_control, qs_env)
TYPE(dbcsr_type), POINTER :: matrix_tdp, metric
TYPE(cp_fm_type), INTENT(IN) :: evecs
TYPE(cp_fm_type), INTENT(INOUT) :: evecs
REAL(dp), DIMENSION(:) :: evals
INTEGER, INTENT(IN) :: neig
LOGICAL :: do_sf