10
0
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-07-17 00:20:41 +02:00
QuantumPackage/src/scf_utils/scf_density_matrix_ao_cplx.irp.f

76 lines
2.7 KiB
Fortran
Raw Normal View History

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), &
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
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), &
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
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
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
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
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