mirror of
https://github.com/LCPQ/quantum_package
synced 2025-05-06 07:05:25 +02:00
Added Schrwartz screening
This commit is contained in:
parent
1316735589
commit
3918134a4f
@ -215,6 +215,7 @@ BEGIN_PROVIDER [ logical, ao_bielec_integrals_in_map ]
|
|||||||
integer :: jl_pairs(2,ao_num*(ao_num+1)/2), kk, m, j1, i1, lmax
|
integer :: jl_pairs(2,ao_num*(ao_num+1)/2), kk, m, j1, i1, lmax
|
||||||
|
|
||||||
PROVIDE gauleg_t2 ao_integrals_map all_utils
|
PROVIDE gauleg_t2 ao_integrals_map all_utils
|
||||||
|
PROVIDE ao_bielec_integral_schwartz
|
||||||
integral = ao_bielec_integral(1,1,1,1)
|
integral = ao_bielec_integral(1,1,1,1)
|
||||||
|
|
||||||
real :: map_mb
|
real :: map_mb
|
||||||
|
@ -62,8 +62,14 @@ double precision function get_ao_bielec_integral(i,j,k,l,map)
|
|||||||
real(integral_kind) :: tmp
|
real(integral_kind) :: tmp
|
||||||
PROVIDE ao_bielec_integrals_in_map
|
PROVIDE ao_bielec_integrals_in_map
|
||||||
!DIR$ FORCEINLINE
|
!DIR$ FORCEINLINE
|
||||||
|
if (ao_overlap_abs(i,k)*ao_overlap_abs(j,l) < ao_integrals_threshold ) then
|
||||||
|
tmp = 0.d0
|
||||||
|
else if (ao_bielec_integral_schwartz(i,k)*ao_bielec_integral_schwartz(j,l) < ao_integrals_threshold) then
|
||||||
|
tmp = 0.d0
|
||||||
|
else
|
||||||
call bielec_integrals_index(i,j,k,l,idx)
|
call bielec_integrals_index(i,j,k,l,idx)
|
||||||
call map_get(map,idx,tmp)
|
call map_get(map,idx,tmp)
|
||||||
|
endif
|
||||||
get_ao_bielec_integral = tmp
|
get_ao_bielec_integral = tmp
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -92,6 +98,8 @@ subroutine get_ao_bielec_integrals(j,k,l,sze,out_val)
|
|||||||
do i=1,sze
|
do i=1,sze
|
||||||
if (ao_overlap_abs(i,k)*ao_overlap_abs(j,l) < thresh ) then
|
if (ao_overlap_abs(i,k)*ao_overlap_abs(j,l) < thresh ) then
|
||||||
out_val(i) = 0.d0
|
out_val(i) = 0.d0
|
||||||
|
else if (ao_bielec_integral_schwartz(i,k)*ao_bielec_integral_schwartz(j,l) < thresh) then
|
||||||
|
out_val(i)=0.d0
|
||||||
else
|
else
|
||||||
!DIR$ FORCEINLINE
|
!DIR$ FORCEINLINE
|
||||||
call bielec_integrals_index(i,j,k,l,hash)
|
call bielec_integrals_index(i,j,k,l,hash)
|
||||||
@ -126,7 +134,12 @@ subroutine get_ao_bielec_integrals_non_zero(j,k,l,sze,out_val,out_val_index,non_
|
|||||||
|
|
||||||
non_zero_int = 0
|
non_zero_int = 0
|
||||||
do i=1,sze
|
do i=1,sze
|
||||||
|
integer, external :: ao_l4
|
||||||
|
double precision, external :: ao_bielec_integral
|
||||||
!DIR$ FORCEINLINE
|
!DIR$ FORCEINLINE
|
||||||
|
if (ao_bielec_integral_schwartz(i,k)*ao_bielec_integral_schwartz(j,l) < thresh) then
|
||||||
|
cycle
|
||||||
|
endif
|
||||||
call bielec_integrals_index(i,j,k,l,hash)
|
call bielec_integrals_index(i,j,k,l,hash)
|
||||||
call map_get(ao_integrals_map, hash,tmp)
|
call map_get(ao_integrals_map, hash,tmp)
|
||||||
if (dabs(tmp) < thresh ) cycle
|
if (dabs(tmp) < thresh ) cycle
|
||||||
|
Loading…
x
Reference in New Issue
Block a user