mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-07-06 19:36:09 +02:00
92 lines
2.5 KiB
Fortran
92 lines
2.5 KiB
Fortran
BEGIN_PROVIDER [real*8, Fipq, (mo_num,mo_num) ]
|
|
BEGIN_DOC
|
|
! the inactive Fock matrix, in molecular orbitals
|
|
END_DOC
|
|
implicit none
|
|
integer :: p,q,k,kk,t,tt,u,uu
|
|
|
|
do q=1,mo_num
|
|
do p=1,mo_num
|
|
Fipq(p,q)=one_ints_no(p,q)
|
|
end do
|
|
end do
|
|
|
|
! the inactive Fock matrix
|
|
do k=1,n_core_inact_orb
|
|
kk=list_core_inact(k)
|
|
do q=1,mo_num
|
|
do p=1,mo_num
|
|
Fipq(p,q)+=2.D0*bielec_pqxx_no(p,q,k,k) -bielec_pxxq_no(p,k,k,q)
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
if (bavard) then
|
|
integer :: i
|
|
write(6,*)
|
|
write(6,*) ' the diagonal of the inactive effective Fock matrix '
|
|
write(6,'(5(i3,F12.5))') (i,Fipq(i,i),i=1,mo_num)
|
|
write(6,*)
|
|
end if
|
|
|
|
|
|
END_PROVIDER
|
|
|
|
|
|
BEGIN_PROVIDER [real*8, Fapq, (mo_num,mo_num) ]
|
|
BEGIN_DOC
|
|
! the active active Fock matrix, in molecular orbitals
|
|
! we create them in MOs, quite expensive
|
|
!
|
|
! for an implementation in AOs we need first the natural orbitals
|
|
! for forming an active density matrix in AOs
|
|
!
|
|
END_DOC
|
|
implicit none
|
|
integer :: p,q,k,kk,t,tt,u,uu
|
|
|
|
Fapq = 0.d0
|
|
|
|
! the active Fock matrix, D0tu is diagonal
|
|
do t=1,n_act_orb
|
|
tt=list_act(t)
|
|
do q=1,mo_num
|
|
do p=1,mo_num
|
|
Fapq(p,q)+=occnum(tt) &
|
|
*(bielec_pqxx_no(p,q,tt,tt)-0.5D0*bielec_pxxq_no(p,tt,tt,q))
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
if (bavard) then
|
|
integer :: i
|
|
write(6,*)
|
|
write(6,*) ' the effective Fock matrix over MOs'
|
|
write(6,*)
|
|
|
|
write(6,*)
|
|
write(6,*) ' the diagonal of the inactive effective Fock matrix '
|
|
write(6,'(5(i3,F12.5))') (i,Fipq(i,i),i=1,mo_num)
|
|
write(6,*)
|
|
write(6,*)
|
|
write(6,*) ' the diagonal of the active Fock matrix '
|
|
write(6,'(5(i3,F12.5))') (i,Fapq(i,i),i=1,mo_num)
|
|
write(6,*)
|
|
end if
|
|
|
|
|
|
END_PROVIDER
|
|
|
|
BEGIN_PROVIDER [ double precision, mcscf_fock_alpha, (ao_num, ao_num)]
|
|
&BEGIN_PROVIDER [ double precision, mcscf_fock_beta, (ao_num, ao_num)]
|
|
implicit none
|
|
BEGIN_DOC
|
|
! mcscf_fock_alpha are set to usual Fock like operator but computed with the MCSCF densities
|
|
END_DOC
|
|
SCF_density_matrix_ao_alpha = D0tu_alpha_ao
|
|
SCF_density_matrix_ao_beta = D0tu_beta_ao
|
|
soft_touch SCF_density_matrix_ao_alpha SCF_density_matrix_ao_beta
|
|
mcscf_fock_beta = fock_matrix_ao_beta
|
|
mcscf_fock_alpha = fock_matrix_ao_alpha
|
|
END_PROVIDER
|