diff --git a/src/ao_one_e_ints/EZFIO.cfg b/src/ao_one_e_ints/EZFIO.cfg index ed9cdc35..8d4fff57 100644 --- a/src/ao_one_e_ints/EZFIO.cfg +++ b/src/ao_one_e_ints/EZFIO.cfg @@ -98,3 +98,11 @@ type: Threshold doc: Remove linear dependencies when the eigenvalues of the overlap matrix are below this value interface: ezfio,provider,ocaml default: 1.e-6 + +[ao_one_e_integrals_threshold] +type: Threshold +doc: If | (p|q) | < `ao_one_e_integrals_threshold` then (p|q) is zero +interface: ezfio,provider,ocaml +default: 1.e-15 +ezfio_name: threshold_ao + diff --git a/src/ao_one_e_ints/screening.irp.f b/src/ao_one_e_ints/screening.irp.f index 1bbe3c73..3f436743 100644 --- a/src/ao_one_e_ints/screening.irp.f +++ b/src/ao_one_e_ints/screening.irp.f @@ -4,7 +4,7 @@ logical function ao_one_e_integral_zero(i,k) ao_one_e_integral_zero = .False. if (.not.((io_ao_integrals_overlap/='None').or.is_periodic)) then - if (ao_overlap_abs(i,k) < ao_integrals_threshold) then + if (ao_overlap_abs(i,k) < ao_one_e_integrals_threshold) then ao_one_e_integral_zero = .True. return endif diff --git a/src/mo_two_e_ints/core_quantities.irp.f b/src/mo_two_e_ints/core_quantities.irp.f index 1cc50cb1..b0f48b6d 100644 --- a/src/mo_two_e_ints/core_quantities.irp.f +++ b/src/mo_two_e_ints/core_quantities.irp.f @@ -36,3 +36,26 @@ BEGIN_PROVIDER [double precision, core_fock_operator, (mo_num,mo_num)] enddo enddo END_PROVIDER + +BEGIN_PROVIDER [ double precision, h_core_ri, (mo_num, mo_num) ] + implicit none + BEGIN_DOC + ! Core Hamiltonian with 3-index exchange integrals: + ! + ! $\tilde{h}{pq} = h_{pq} - \frac{1}{2}\sum_{k} g(pk,kq)$ + END_DOC + + integer :: i,j, k + + do j=1,mo_num + do i=1,mo_num + h_core_ri(i,j) = mo_one_e_integrals(i,j) + enddo + do k=1,mo_num + do i=1,mo_num + h_core_ri(i,j) = h_core_ri(i,j) - big_array_exchange_integrals(i,k,j) + enddo + enddo + enddo +END_PROVIDER + diff --git a/src/mo_two_e_ints/integrals_3_index.irp.f b/src/mo_two_e_ints/integrals_3_index.irp.f index 73e31182..4ffb0134 100644 --- a/src/mo_two_e_ints/integrals_3_index.irp.f +++ b/src/mo_two_e_ints/integrals_3_index.irp.f @@ -2,9 +2,9 @@ &BEGIN_PROVIDER [double precision, big_array_exchange_integrals,(mo_num,mo_num, mo_num)] implicit none BEGIN_DOC - ! big_array_coulomb_integrals(i,j) = = (ii|jj) + ! big_array_coulomb_integrals(j,i,k) = = (ik|jj) ! - ! big_array_exchange_integrals(i,j) = = (ij|ij) + ! big_array_exchange_integrals(i,j,k) = = (ij|kj) END_DOC integer :: i,j,k,l double precision :: get_two_e_integral diff --git a/src/zmq/utils.irp.f b/src/zmq/utils.irp.f index 07e3a88f..917bd4aa 100644 --- a/src/zmq/utils.irp.f +++ b/src/zmq/utils.irp.f @@ -1226,8 +1226,8 @@ integer function zmq_delete_tasks_async_recv(zmq_to_qp_run_socket,more,sending) integer :: rc character*(64) :: reply - if (.not.sending) return zmq_delete_tasks_async_recv = 0 + if (.not.sending) return reply = '' rc = f77_zmq_recv(zmq_to_qp_run_socket,reply,64,0)