9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-12-22 03:23:29 +01:00

Introduced all_shells_closed

This commit is contained in:
Anthony Scemama 2024-03-19 14:47:01 +01:00
parent 00859876d5
commit 1839809432
2 changed files with 17 additions and 11 deletions

View File

@ -11,13 +11,13 @@
! |-----------------------| ! |-----------------------|
! | Fcv | F^a | Rvv | ! | Fcv | F^a | Rvv |
! !
! C: Core, O: Open, V: Virtual ! C: Core, O: Open, V: Virtual
! !
! Rcc = Acc Fcc^a + Bcc Fcc^b ! Rcc = Acc Fcc^a + Bcc Fcc^b
! Roo = Aoo Foo^a + Boo Foo^b ! Roo = Aoo Foo^a + Boo Foo^b
! Rvv = Avv Fvv^a + Bvv Fvv^b ! Rvv = Avv Fvv^a + Bvv Fvv^b
! Fcv = (F^a + F^b)/2 ! Fcv = (F^a + F^b)/2
! !
! F^a: Fock matrix alpha (MO), F^b: Fock matrix beta (MO) ! F^a: Fock matrix alpha (MO), F^b: Fock matrix beta (MO)
! A,B: Coupling parameters ! A,B: Coupling parameters
! !
@ -26,10 +26,10 @@
! cc oo vv ! cc oo vv
! A -0.5 0.5 1.5 ! A -0.5 0.5 1.5
! B 1.5 0.5 -0.5 ! B 1.5 0.5 -0.5
! !
END_DOC END_DOC
integer :: i,j,n integer :: i,j,n
if (elec_alpha_num == elec_beta_num) then if (all_shells_closed) then
Fock_matrix_mo = Fock_matrix_mo_alpha Fock_matrix_mo = Fock_matrix_mo_alpha
else else
! Core ! Core
@ -102,7 +102,7 @@
! !
! END_DOC ! END_DOC
!integer :: i,j,n !integer :: i,j,n
!if (elec_alpha_num == elec_beta_num) then !if (all_shells_closed) then
! Fock_matrix_mo = Fock_matrix_mo_alpha ! Fock_matrix_mo = Fock_matrix_mo_alpha
!else !else
@ -192,7 +192,7 @@
do j = 1, n_core_orb do j = 1, n_core_orb
jorb = list_core(j) jorb = list_core(j)
Fock_matrix_mo(iorb,jorb) = 0.d0 Fock_matrix_mo(iorb,jorb) = 0.d0
Fock_matrix_mo(jorb,iorb) = 0.d0 Fock_matrix_mo(jorb,iorb) = 0.d0
enddo enddo
enddo enddo
endif endif
@ -229,9 +229,7 @@ BEGIN_PROVIDER [ double precision, Fock_matrix_ao, (ao_num, ao_num) ]
call mo_to_ao(Fock_matrix_mo,size(Fock_matrix_mo,1), & call mo_to_ao(Fock_matrix_mo,size(Fock_matrix_mo,1), &
Fock_matrix_ao,size(Fock_matrix_ao,1)) Fock_matrix_ao,size(Fock_matrix_ao,1))
else else
if ( (elec_alpha_num == elec_beta_num).and. & if (all_shells_closed.and. (level_shift == 0.)) then
(level_shift == 0.) ) &
then
integer :: i,j integer :: i,j
do j=1,ao_num do j=1,ao_num
do i=1,ao_num do i=1,ao_num

View File

@ -1,3 +1,11 @@
BEGIN_PROVIDER [ logical, all_shells_closed ]
implicit none
BEGIN_DOC
!
END_DOC
all_shells_closed = (elec_alpha_num == elec_beta_num)
END_PROVIDER
BEGIN_PROVIDER [double precision, SCF_density_matrix_ao_alpha, (ao_num,ao_num) ] BEGIN_PROVIDER [double precision, SCF_density_matrix_ao_alpha, (ao_num,ao_num) ]
implicit none implicit none
BEGIN_DOC BEGIN_DOC
@ -30,7 +38,7 @@ BEGIN_PROVIDER [ double precision, SCF_density_matrix_ao, (ao_num,ao_num) ]
! Sum of $\alpha$ and $\beta$ density matrices ! Sum of $\alpha$ and $\beta$ density matrices
END_DOC END_DOC
ASSERT (size(SCF_density_matrix_ao,1) == size(SCF_density_matrix_ao_alpha,1)) ASSERT (size(SCF_density_matrix_ao,1) == size(SCF_density_matrix_ao_alpha,1))
if (elec_alpha_num== elec_beta_num) then if (all_shells_closed) then
SCF_density_matrix_ao = SCF_density_matrix_ao_alpha + SCF_density_matrix_ao_alpha SCF_density_matrix_ao = SCF_density_matrix_ao_alpha + SCF_density_matrix_ao_alpha
else else
ASSERT (size(SCF_density_matrix_ao,1) == size(SCF_density_matrix_ao_beta ,1)) ASSERT (size(SCF_density_matrix_ao,1) == size(SCF_density_matrix_ao_beta ,1))