53 INTEGER,
INTENT(IN) :: ispin
57 INTEGER :: nao_aux_fit, nao_orb
60 nao_aux_fit = admm_env%nao_aux_fit
61 nao_orb = admm_env%nao_orb
63 IF (.NOT. admm_env%block_dm)
THEN
64 SELECT CASE (admm_env%purification_method)
69 CALL dbcsr_create(work, template=ks_matrix, name=
'work', matrix_type=dbcsr_type_symmetric)
73 CALL copy_fm_to_dbcsr(admm_env%ks_to_be_merged(ispin), work, keep_sparsity=.true.)
75 CALL dbcsr_add(ks_matrix, work, 1.0_dp, -1.0_dp)
78 CALL parallel_gemm(
'N',
'N', nao_aux_fit, nao_orb, nao_aux_fit, &
79 1.0_dp, admm_env%K(ispin), admm_env%A, 0.0_dp, &
80 admm_env%work_aux_orb)
82 1.0_dp, admm_env%A, admm_env%work_aux_orb, 0.0_dp, &
83 admm_env%H_corr(ispin))
87 CALL dbcsr_add(ks_matrix, work, 1.0_dp, 1.0_dp)
94 CALL dbcsr_create(work, template=ks_matrix, name=
'work', matrix_type=dbcsr_type_symmetric)
98 CALL copy_fm_to_dbcsr(admm_env%ks_to_be_merged(ispin), work, keep_sparsity=.true.)
101 CALL parallel_gemm(
'N',
'N', nao_aux_fit, nao_orb, nao_aux_fit, &
102 1.0_dp, admm_env%K(ispin), admm_env%A, 0.0_dp, &
103 admm_env%work_aux_orb)
104 CALL parallel_gemm(
'T',
'N', nao_orb, nao_orb, nao_aux_fit, &
105 1.0_dp, admm_env%A, admm_env%work_aux_orb, 0.0_dp, &
106 admm_env%H_corr(ispin))
110 CALL dbcsr_add(ks_matrix, work, 1.0_dp, 1.0_dp)
127 INTEGER,
INTENT(IN) :: ispin
131 INTEGER :: nao_aux_fit, nao_orb
134 nao_aux_fit = admm_env%nao_aux_fit
135 nao_orb = admm_env%nao_orb
137 IF (.NOT. admm_env%block_dm)
THEN
138 SELECT CASE (admm_env%purification_method)
143 CALL dbcsr_create(work, template=ks_matrix, name=
'work', matrix_type=dbcsr_type_symmetric)
149 CALL dbcsr_add(ks_matrix, work, 1.0_dp, -1.0_dp)
154 CALL copy_fm_to_dbcsr(admm_env%ks_to_be_merged(ispin), work, keep_sparsity=.true.)
156 CALL dbcsr_add(ks_matrix, work, 1.0_dp, 1.0_dp)
162 CALL dbcsr_create(work, template=ks_matrix, name=
'work', matrix_type=dbcsr_type_symmetric)
169 CALL dbcsr_add(ks_matrix, work, 1.0_dp, -1.0_dp)