diff --git a/src/mo_two_e_ints/core_quantities.irp.f b/src/mo_two_e_ints/core_quantities.irp.f index 1cc50cb1..349b0cd1 100644 --- a/src/mo_two_e_ints/core_quantities.irp.f +++ b/src/mo_two_e_ints/core_quantities.irp.f @@ -5,6 +5,16 @@ BEGIN_PROVIDER [double precision, core_energy] END_DOC integer :: i,j,k,l core_energy = 0.d0 + if (is_periodic) then + do i = 1, n_core_orb + j = list_core(i) + core_energy += 2.d0 * dble(mo_one_e_integrals_complex(j,j)) + mo_two_e_integrals_jj(j,j) + do k = i+1, n_core_orb + l = list_core(k) + core_energy += 2.d0 * (2.d0 * mo_two_e_integrals_jj(j,l) - mo_two_e_integrals_jj_exchange(j,l)) + enddo + enddo + else do i = 1, n_core_orb j = list_core(i) core_energy += 2.d0 * mo_one_e_integrals(j,j) + mo_two_e_integrals_jj(j,j) @@ -13,6 +23,7 @@ BEGIN_PROVIDER [double precision, core_energy] core_energy += 2.d0 * (2.d0 * mo_two_e_integrals_jj(j,l) - mo_two_e_integrals_jj_exchange(j,l)) enddo enddo + endif core_energy += nuclear_repulsion END_PROVIDER @@ -36,3 +47,25 @@ BEGIN_PROVIDER [double precision, core_fock_operator, (mo_num,mo_num)] enddo enddo END_PROVIDER + +BEGIN_PROVIDER [complex*16, core_fock_operator_complex, (mo_num,mo_num)] + implicit none + integer :: i,j,k,l,m,n + complex*16 :: get_two_e_integral_periodic + BEGIN_DOC +! this is the contribution to the Fock operator from the core electrons + END_DOC + core_fock_operator_complex = (0.d0,0.d0) + do i = 1, n_act_orb + j = list_act(i) + do k = 1, n_act_orb + l = list_act(k) + do m = 1, n_core_orb + n = list_core(m) + core_fock_operator_complex(j,l) += 2.d0 * & + get_two_e_integral_periodic(j,n,l,n,mo_integrals_map,mo_integrals_map_2) - & + get_two_e_integral_periodic(j,n,n,l,mo_integrals_map,mo_integrals_map_2) + enddo + enddo + enddo +END_PROVIDER