10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-07-05 19:05:59 +02:00
quantum_package/plugins/MRPT_Utils/energies_cas_spin_averaged.irp.f
2016-08-24 16:43:01 +02:00

191 lines
5.0 KiB
Fortran

BEGIN_PROVIDER [ double precision, one_creation_spin_averaged, (n_act_orb)]
implicit none
integer :: i
do i = 1, n_act_orb
one_creation_spin_averaged(i) = one_creation(i,1) + one_creation(i,2)
one_creation_spin_averaged(i) = 0.5d0 * one_creation_spin_averaged(i)
enddo
END_PROVIDER
BEGIN_PROVIDER [ double precision, one_anhilation_spin_averaged, (n_act_orb)]
implicit none
integer :: i
do i = 1, n_act_orb
one_anhilation_spin_averaged(i) = one_anhilation(i,1) + one_anhilation(i,2)
one_anhilation_spin_averaged(i) = 0.5d0 * one_anhilation_spin_averaged(i)
enddo
END_PROVIDER
BEGIN_PROVIDER [ double precision, two_creation_spin_averaged, (n_act_orb,n_act_orb)]
implicit none
integer :: i,j
integer :: ispin,jspin
double precision :: counting
do i = 1, n_act_orb
do j = 1, n_act_orb
two_creation_spin_averaged(j,i) = 0.d0
counting = 0.d0
do ispin = 1, 2
do jspin = 1,2
two_creation_spin_averaged(j,i) += two_creation(j,i,ispin,jspin)
counting += 1.d0
enddo
enddo
two_creation_spin_averaged(j,i) = two_creation_spin_averaged(j,i) / counting
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ double precision, two_anhilation_spin_averaged, (n_act_orb,n_act_orb)]
implicit none
integer :: i,j
integer :: ispin,jspin
double precision :: counting
do i = 1, n_act_orb
do j = 1, n_act_orb
two_anhilation_spin_averaged(j,i) = 0.d0
counting = 0.d0
do ispin = 1, 2
do jspin = 1,2
two_anhilation_spin_averaged(j,i) += two_anhilation(j,i,ispin,jspin)
counting += 1.d0
enddo
enddo
two_anhilation_spin_averaged(j,i) = two_anhilation_spin_averaged(j,i) / counting
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ double precision, one_anhilation_one_creation_spin_averaged, (n_act_orb,n_act_orb)]
implicit none
integer :: i,j
integer :: ispin,jspin
double precision :: counting
do i = 1, n_act_orb
do j = 1, n_act_orb
one_anhilation_one_creation_spin_averaged(j,i) = 0.d0
counting = 0.d0
do ispin = 1, 2
do jspin = 1,2
one_anhilation_one_creation_spin_averaged(j,i) += one_anhilation_one_creation(j,i,jspin,ispin)
counting += 1.d0
enddo
enddo
one_anhilation_one_creation_spin_averaged(j,i) = one_anhilation_one_creation_spin_averaged(j,i) / counting
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ double precision, two_anhilation_one_creation_spin_averaged, (n_act_orb,n_act_orb,n_act_orb)]
implicit none
integer :: i,j,k
integer :: ispin,jspin,kspin
double precision :: counting
do i = 1, n_act_orb
do j = 1, n_act_orb
do k = 1, n_act_orb
two_anhilation_one_creation_spin_averaged(k,j,i) = 0.d0
counting = 0.d0
do ispin = 1, 2
do jspin = 1,2
do kspin = 1,2
two_anhilation_one_creation_spin_averaged(k,j,i) += two_anhilation_one_creation(k,j,i,kspin,jspin,ispin)
counting += 1.d0
enddo
enddo
two_anhilation_one_creation_spin_averaged(k,j,i) = two_anhilation_one_creation_spin_averaged(k,j,i) / counting
enddo
enddo
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ double precision, two_creation_one_anhilation_spin_averaged, (n_act_orb,n_act_orb,n_act_orb)]
implicit none
integer :: i,j,k
integer :: ispin,jspin,kspin
double precision :: counting
do i = 1, n_act_orb
do j = 1, n_act_orb
do k = 1, n_act_orb
two_creation_one_anhilation_spin_averaged(k,j,i) = 0.d0
counting = 0.d0
do ispin = 1, 2
do jspin = 1,2
do kspin = 1,2
two_creation_one_anhilation_spin_averaged(k,j,i) += two_creation_one_anhilation(k,j,i,kspin,jspin,ispin)
counting += 1.d0
enddo
enddo
two_creation_one_anhilation_spin_averaged(k,j,i) = two_creation_one_anhilation_spin_averaged(k,j,i) / counting
enddo
enddo
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ double precision, three_creation_spin_averaged, (n_act_orb,n_act_orb,n_act_orb)]
implicit none
integer :: i,j,k
integer :: ispin,jspin,kspin
double precision :: counting
do i = 1, n_act_orb
do j = 1, n_act_orb
do k = 1, n_act_orb
three_creation_spin_averaged(k,j,i) = 0.d0
counting = 0.d0
do ispin = 1, 2
do jspin = 1,2
do kspin = 1,2
three_creation_spin_averaged(k,j,i) += three_creation(k,j,i,kspin,jspin,ispin)
counting += 1.d0
enddo
enddo
three_creation_spin_averaged(k,j,i) = three_creation_spin_averaged(k,j,i) / counting
enddo
enddo
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ double precision, three_anhilation_spin_averaged, (n_act_orb,n_act_orb,n_act_orb)]
implicit none
integer :: i,j,k
integer :: ispin,jspin,kspin
double precision :: counting
do i = 1, n_act_orb
do j = 1, n_act_orb
do k = 1, n_act_orb
three_anhilation_spin_averaged(k,j,i) = 0.d0
counting = 0.d0
do ispin = 1, 2
do jspin = 1,2
do kspin = 1,2
three_anhilation_spin_averaged(k,j,i) += three_anhilation(k,j,i,kspin,jspin,ispin)
counting += 1.d0
enddo
enddo
three_anhilation_spin_averaged(k,j,i) = three_anhilation_spin_averaged(k,j,i) / counting
enddo
enddo
enddo
enddo
END_PROVIDER