1
0
mirror of https://gitlab.com/scemama/qp_plugins_scemama.git synced 2024-12-22 20:34:05 +01:00
qp_plugins_scemama/devel/cc/denominators.irp.f

75 lines
1.7 KiB
Fortran

BEGIN_PROVIDER [ double precision, eO, (1:spin_occ_num) ]
&BEGIN_PROVIDER [ double precision, eV, (1:spin_vir_num) ]
implicit none
BEGIN_DOC
! Eigenvalues of the spin-orbitals
END_DOC
eO(:) = spin_fock_matrix_diag_mo(1:spin_occ_num)
eV(:) = spin_fock_matrix_diag_mo(spin_occ_num+1:spin_mo_num)
END_PROVIDER
BEGIN_PROVIDER [ double precision, delta_OV, (spin_occ_num, spin_vir_num) ]
implicit none
BEGIN_DOC
! Energy denominator for CC
END_DOC
integer :: i, a
do a=1,spin_vir_num
do i=1,spin_occ_num
delta_OV(i,a) = eO(i) - eV(a)
! delta_OV(i,a) = min(eO(i) - eV(a), -1.d-3)
if (delta_OV(i,a) == 0.d0) delta_OV(i,a) = 1.d-1
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ double precision, delta_OOVV, (spin_occ_num,spin_occ_num,spin_vir_num,spin_vir_num) ]
implicit none
BEGIN_DOC
! Energy denominator for CC
END_DOC
integer :: i,j,a,b
do b=1,spin_vir_num
do a=1,spin_vir_num
do j=1,spin_occ_num
do i=1,spin_occ_num
delta_OOVV(i,j,a,b) = delta_OV(i,a) + delta_OV(j,b)
if (delta_OOVV(i,j,a,b) == 0.d0) delta_OOVV(i,j,a,b) = 1.d-1
enddo
enddo
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ double precision, delta_OOOVVV, (spin_occ_num,spin_occ_num,spin_occ_num,spin_vir_num,spin_vir_num,spin_vir_num) ]
implicit none
BEGIN_DOC
! Energy denominator for CC
END_DOC
integer :: i,j,k,a,b,c
do c=1,spin_vir_num
do b=1,spin_vir_num
do a=1,spin_vir_num
do k=1,spin_occ_num
do j=1,spin_occ_num
do i=1,spin_occ_num
delta_OOOVVV(i,j,k,a,b,c) = delta_OV(i,a) + delta_OV(j,b) + delta_OV(k,c)
if (delta_OOOVVV(i,j,k,a,b,c) == 0.d0) delta_OOOVVV(i,j,k,a,b,c) = 1.d-1
enddo
enddo
enddo
enddo
enddo
enddo
END_PROVIDER