mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-21 11:03:29 +01:00
Enabled direct integrals in Cholesky
This commit is contained in:
parent
a2c4a74d92
commit
e35f847341
@ -43,11 +43,15 @@ BEGIN_PROVIDER [ integer, cholesky_ao_num ]
|
|||||||
double precision, external :: get_ao_two_e_integral
|
double precision, external :: get_ao_two_e_integral
|
||||||
logical, external :: ao_two_e_integral_zero
|
logical, external :: ao_two_e_integral_zero
|
||||||
|
|
||||||
|
double precision, external :: ao_two_e_integral
|
||||||
integer :: block_size, iblock, ierr
|
integer :: block_size, iblock, ierr
|
||||||
|
|
||||||
integer(omp_lock_kind), allocatable :: lock(:)
|
integer(omp_lock_kind), allocatable :: lock(:)
|
||||||
|
PROVIDE nucl_coord
|
||||||
|
|
||||||
PROVIDE ao_two_e_integrals_in_map
|
if (.not.do_direct_integrals) then
|
||||||
|
PROVIDE ao_two_e_integrals_in_map
|
||||||
|
endif
|
||||||
deallocate(cholesky_ao)
|
deallocate(cholesky_ao)
|
||||||
|
|
||||||
ndim = ao_num*ao_num
|
ndim = ao_num*ao_num
|
||||||
@ -85,13 +89,22 @@ BEGIN_PROVIDER [ integer, cholesky_ao_num ]
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
!$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i)
|
if (do_direct_integrals) then
|
||||||
do i=1,ndim
|
!$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i)
|
||||||
D(i) = get_ao_two_e_integral(addr(1,i), addr(1,i), &
|
do i=1,ndim
|
||||||
addr(2,i), addr(2,i), &
|
D(i) = ao_two_e_integral(addr(1,i), addr(2,i), &
|
||||||
ao_integrals_map)
|
addr(1,i), addr(2,i))
|
||||||
enddo
|
enddo
|
||||||
!$OMP END PARALLEL DO
|
!$OMP END PARALLEL DO
|
||||||
|
else
|
||||||
|
!$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i)
|
||||||
|
do i=1,ndim
|
||||||
|
D(i) = get_ao_two_e_integral(addr(1,i), addr(1,i), &
|
||||||
|
addr(2,i), addr(2,i), &
|
||||||
|
ao_integrals_map)
|
||||||
|
enddo
|
||||||
|
!$OMP END PARALLEL DO
|
||||||
|
endif
|
||||||
|
|
||||||
Dmax = maxval(D)
|
Dmax = maxval(D)
|
||||||
|
|
||||||
@ -196,8 +209,13 @@ BEGIN_PROVIDER [ integer, cholesky_ao_num ]
|
|||||||
if ((0 < q).and.(q < k)) cycle
|
if ((0 < q).and.(q < k)) cycle
|
||||||
if (.not.ao_two_e_integral_zero( addr(1,Lset(k)), addr(1,Dset(m)), &
|
if (.not.ao_two_e_integral_zero( addr(1,Lset(k)), addr(1,Dset(m)), &
|
||||||
addr(2,Lset(k)), addr(2,Dset(m)) ) ) then
|
addr(2,Lset(k)), addr(2,Dset(m)) ) ) then
|
||||||
Delta(k,m) = get_ao_two_e_integral( addr(1,Lset(k)), addr(1,Dset(m)), &
|
if (do_direct_integrals) then
|
||||||
|
Delta(k,m) = ao_two_e_integral(addr(1,Lset(k)), addr(2,Lset(k)), &
|
||||||
|
addr(1,Dset(m)), addr(2,Dset(m)))
|
||||||
|
else
|
||||||
|
Delta(k,m) = get_ao_two_e_integral( addr(1,Lset(k)), addr(1,Dset(m)), &
|
||||||
addr(2,Lset(k)), addr(2,Dset(m)), ao_integrals_map)
|
addr(2,Lset(k)), addr(2,Dset(m)), ao_integrals_map)
|
||||||
|
endif
|
||||||
if (q /= 0) Delta(q,m) = Delta(k,m)
|
if (q /= 0) Delta(q,m) = Delta(k,m)
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
@ -218,8 +236,13 @@ BEGIN_PROVIDER [ integer, cholesky_ao_num ]
|
|||||||
if ((0 < q).and.(q < p)) cycle
|
if ((0 < q).and.(q < p)) cycle
|
||||||
if (.not.ao_two_e_integral_zero( addr(1,Dset(k)), addr(1,Dset(m)), &
|
if (.not.ao_two_e_integral_zero( addr(1,Dset(k)), addr(1,Dset(m)), &
|
||||||
addr(2,Dset(k)), addr(2,Dset(m)) ) ) then
|
addr(2,Dset(k)), addr(2,Dset(m)) ) ) then
|
||||||
Delta(p,m) = get_ao_two_e_integral( addr(1,Dset(k)), addr(1,Dset(m)), &
|
if (do_direct_integrals) then
|
||||||
|
Delta(p,m) = ao_two_e_integral(addr(1,Dset(k)), addr(2,Dset(k)), &
|
||||||
|
addr(1,Dset(m)), addr(2,Dset(m)))
|
||||||
|
else
|
||||||
|
Delta(p,m) = get_ao_two_e_integral( addr(1,Dset(k)), addr(1,Dset(m)), &
|
||||||
addr(2,Dset(k)), addr(2,Dset(m)), ao_integrals_map)
|
addr(2,Dset(k)), addr(2,Dset(m)), ao_integrals_map)
|
||||||
|
endif
|
||||||
if (q /= 0) Delta(q,m) = Delta(p,m)
|
if (q /= 0) Delta(q,m) = Delta(p,m)
|
||||||
if (j /= 0) Delta(p,j) = Delta(p,m)
|
if (j /= 0) Delta(p,j) = Delta(p,m)
|
||||||
if (q*j /= 0) Delta(q,j) = Delta(p,m)
|
if (q*j /= 0) Delta(q,j) = Delta(p,m)
|
||||||
|
@ -1232,7 +1232,8 @@ subroutine compute_ao_integrals_jl(j,l,n_integrals,buffer_i,buffer_value)
|
|||||||
logical, external :: ao_two_e_integral_zero
|
logical, external :: ao_two_e_integral_zero
|
||||||
|
|
||||||
integer :: i,k
|
integer :: i,k
|
||||||
double precision :: ao_two_e_integral,cpu_1,cpu_2, wall_1, wall_2
|
double precision, external :: ao_two_e_integral
|
||||||
|
double precision :: cpu_1,cpu_2, wall_1, wall_2
|
||||||
double precision :: integral, wall_0
|
double precision :: integral, wall_0
|
||||||
double precision :: thr
|
double precision :: thr
|
||||||
integer :: kk, m, j1, i1
|
integer :: kk, m, j1, i1
|
||||||
|
@ -37,7 +37,9 @@ BEGIN_PROVIDER [ logical, mo_two_e_integrals_in_map ]
|
|||||||
call map_load_from_disk(trim(ezfio_filename)//'/work/mo_ints',mo_integrals_map)
|
call map_load_from_disk(trim(ezfio_filename)//'/work/mo_ints',mo_integrals_map)
|
||||||
print*, 'MO integrals provided'
|
print*, 'MO integrals provided'
|
||||||
return
|
return
|
||||||
else
|
endif
|
||||||
|
|
||||||
|
if (.not. do_direct_integrals) then
|
||||||
PROVIDE ao_two_e_integrals_in_map
|
PROVIDE ao_two_e_integrals_in_map
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -14,13 +14,6 @@ program four_idx_transform
|
|||||||
|
|
||||||
io_mo_two_e_integrals = 'Write'
|
io_mo_two_e_integrals = 'Write'
|
||||||
SOFT_TOUCH io_mo_two_e_integrals
|
SOFT_TOUCH io_mo_two_e_integrals
|
||||||
if (.true.) then
|
|
||||||
PROVIDE ao_two_e_integrals_in_map
|
|
||||||
endif
|
|
||||||
if (do_ao_cholesky) then
|
|
||||||
PROVIDE cholesky_mo_transp
|
|
||||||
FREE cholesky_ao
|
|
||||||
endif
|
|
||||||
if (.true.) then
|
if (.true.) then
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE mo_two_e_integrals_in_map
|
||||||
endif
|
endif
|
||||||
|
Loading…
Reference in New Issue
Block a user