2020-02-17 23:16:46 +01:00
|
|
|
BEGIN_PROVIDER [ complex*16, scf_density_matrix_ao_alpha_complex, (ao_num,ao_num) ]
|
2020-01-28 18:46:54 +01:00
|
|
|
implicit none
|
|
|
|
BEGIN_DOC
|
|
|
|
! $C.C^t$ over $\alpha$ MOs
|
|
|
|
END_DOC
|
2020-03-12 22:09:00 +01:00
|
|
|
|
|
|
|
complex*16, allocatable :: mo_coef_alpha_tmp(:,:)
|
|
|
|
integer :: occ(N_int*bit_kind_size)
|
|
|
|
integer :: na, i
|
|
|
|
|
|
|
|
call bitstring_to_list(hf_bitmask(1,1), occ, na, n_int)
|
|
|
|
allocate(mo_coef_alpha_tmp(ao_num,na))
|
|
|
|
do i=1,na
|
|
|
|
mo_coef_alpha_tmp(:,i) = mo_coef_complex(:,occ(i))
|
|
|
|
enddo
|
|
|
|
|
2020-01-28 18:46:54 +01:00
|
|
|
|
|
|
|
call zgemm('N','C',ao_num,ao_num,elec_alpha_num,(1.d0,0.d0), &
|
2020-03-12 22:09:00 +01:00
|
|
|
mo_coef_alpha_tmp, size(mo_coef_alpha_tmp,1), &
|
|
|
|
mo_coef_alpha_tmp, size(mo_coef_alpha_tmp,1), (0.d0,0.d0), &
|
2020-02-17 23:16:46 +01:00
|
|
|
scf_density_matrix_ao_alpha_complex, size(scf_density_matrix_ao_alpha_complex,1))
|
2020-01-28 18:46:54 +01:00
|
|
|
|
2020-03-12 22:09:00 +01:00
|
|
|
deallocate(mo_coef_alpha_tmp)
|
|
|
|
!call zgemm('N','C',ao_num,ao_num,elec_alpha_num,(1.d0,0.d0), &
|
|
|
|
! mo_coef_complex, size(mo_coef_complex,1), &
|
|
|
|
! mo_coef_complex, size(mo_coef_complex,1), (0.d0,0.d0), &
|
|
|
|
! scf_density_matrix_ao_alpha_complex, size(scf_density_matrix_ao_alpha_complex,1))
|
|
|
|
|
2020-01-28 18:46:54 +01:00
|
|
|
END_PROVIDER
|
|
|
|
|
2020-02-17 23:16:46 +01:00
|
|
|
BEGIN_PROVIDER [ complex*16, scf_density_matrix_ao_beta_complex, (ao_num,ao_num) ]
|
2020-01-28 18:46:54 +01:00
|
|
|
implicit none
|
|
|
|
BEGIN_DOC
|
|
|
|
! $C.C^t$ over $\beta$ MOs
|
|
|
|
END_DOC
|
|
|
|
|
2020-03-12 22:09:00 +01:00
|
|
|
complex*16, allocatable :: mo_coef_beta_tmp(:,:)
|
|
|
|
integer :: occ(N_int*bit_kind_size)
|
|
|
|
integer :: nb, i
|
|
|
|
|
|
|
|
call bitstring_to_list(hf_bitmask(1,2), occ, nb, n_int)
|
|
|
|
allocate(mo_coef_beta_tmp(ao_num,nb))
|
|
|
|
do i=1,nb
|
|
|
|
mo_coef_beta_tmp(:,i) = mo_coef_complex(:,occ(i))
|
|
|
|
enddo
|
|
|
|
|
|
|
|
|
2020-01-28 18:46:54 +01:00
|
|
|
call zgemm('N','C',ao_num,ao_num,elec_beta_num,(1.d0,0.d0), &
|
2020-03-12 22:09:00 +01:00
|
|
|
mo_coef_beta_tmp, size(mo_coef_beta_tmp,1), &
|
|
|
|
mo_coef_beta_tmp, size(mo_coef_beta_tmp,1), (0.d0,0.d0), &
|
2020-02-17 23:16:46 +01:00
|
|
|
scf_density_matrix_ao_beta_complex, size(scf_density_matrix_ao_beta_complex,1))
|
2020-01-28 18:46:54 +01:00
|
|
|
|
2020-03-12 22:09:00 +01:00
|
|
|
deallocate(mo_coef_beta_tmp)
|
|
|
|
!call zgemm('N','C',ao_num,ao_num,elec_beta_num,(1.d0,0.d0), &
|
|
|
|
! mo_coef_complex, size(mo_coef_complex,1), &
|
|
|
|
! mo_coef_complex, size(mo_coef_complex,1), (0.d0,0.d0), &
|
|
|
|
! scf_density_matrix_ao_beta_complex, size(scf_density_matrix_ao_beta_complex,1))
|
|
|
|
|
2020-01-28 18:46:54 +01:00
|
|
|
END_PROVIDER
|
|
|
|
|
2020-02-17 23:16:46 +01:00
|
|
|
BEGIN_PROVIDER [ complex*16, scf_density_matrix_ao_complex, (ao_num,ao_num) ]
|
2020-01-28 18:46:54 +01:00
|
|
|
implicit none
|
|
|
|
BEGIN_DOC
|
|
|
|
! Sum of $\alpha$ and $\beta$ density matrices
|
|
|
|
END_DOC
|
2020-02-17 23:16:46 +01:00
|
|
|
ASSERT (size(scf_density_matrix_ao_complex,1) == size(scf_density_matrix_ao_alpha_complex,1))
|
2020-01-28 18:46:54 +01:00
|
|
|
if (elec_alpha_num== elec_beta_num) then
|
2020-02-17 23:16:46 +01:00
|
|
|
scf_density_matrix_ao_complex = scf_density_matrix_ao_alpha_complex + scf_density_matrix_ao_alpha_complex
|
2020-01-28 18:46:54 +01:00
|
|
|
else
|
2020-02-17 23:16:46 +01:00
|
|
|
ASSERT (size(scf_density_matrix_ao_complex,1) == size(scf_density_matrix_ao_beta_complex ,1))
|
|
|
|
scf_density_matrix_ao_complex = scf_density_matrix_ao_alpha_complex + scf_density_matrix_ao_beta_complex
|
2020-01-28 18:46:54 +01:00
|
|
|
endif
|
|
|
|
|
|
|
|
END_PROVIDER
|
|
|
|
|