10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-11-03 20:54:00 +01:00

Optimization in selection

This commit is contained in:
Anthony Scemama 2017-09-25 14:10:20 +02:00
parent f09bd45885
commit b157f952fb

View File

@ -434,11 +434,11 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
mobMask(1:3,2) = iand(negMask(1:3,2), preinteresting_det(1:3,2,ii)) mobMask(1:3,2) = iand(negMask(1:3,2), preinteresting_det(1:3,2,ii))
nt = 0 nt = 0
do j=3,1,-1 do j=3,1,-1
if (mobMask(j,1) /= 0_bitkind) then if (mobMask(j,1) /= 0_bit_kind) then
nt = nt+ popcnt(mobMask(j, 1)) nt = nt+ popcnt(mobMask(j, 1))
if (nt > 4) exit if (nt > 4) exit
endif endif
if (mobMask(j,2) /= 0_bitkind) then if (mobMask(j,2) /= 0_bit_kind) then
nt = nt+ popcnt(mobMask(j, 2)) nt = nt+ popcnt(mobMask(j, 2))
if (nt > 4) exit if (nt > 4) exit
endif endif
@ -448,25 +448,25 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
mobMask(1:4,2) = iand(negMask(1:4,2), preinteresting_det(1:4,2,ii)) mobMask(1:4,2) = iand(negMask(1:4,2), preinteresting_det(1:4,2,ii))
nt = 0 nt = 0
do j=4,1,-1 do j=4,1,-1
if (mobMask(j,1) /= 0_bitkind) then if (mobMask(j,1) /= 0_bit_kind) then
nt = nt+ popcnt(mobMask(j, 1)) nt = nt+ popcnt(mobMask(j, 1))
if (nt > 4) exit if (nt > 4) exit
endif endif
if (mobMask(j,2) /= 0_bitkind) then if (mobMask(j,2) /= 0_bit_kind) then
nt = nt+ popcnt(mobMask(j, 2)) nt = nt+ popcnt(mobMask(j, 2))
if (nt > 4) exit if (nt > 4) exit
endif endif
end do end do
case (default) case default
mobMask(1:N_int,1) = iand(negMask(1:N_int,1), preinteresting_det(1:N_int,1,ii)) mobMask(1:N_int,1) = iand(negMask(1:N_int,1), preinteresting_det(1:N_int,1,ii))
mobMask(1:N_int,2) = iand(negMask(1:N_int,2), preinteresting_det(1:N_int,2,ii)) mobMask(1:N_int,2) = iand(negMask(1:N_int,2), preinteresting_det(1:N_int,2,ii))
nt = 0 nt = 0
do j=N_int,1,-1 do j=N_int,1,-1
if (mobMask(j,1) /= 0_bitkind) then if (mobMask(j,1) /= 0_bit_kind) then
nt = nt+ popcnt(mobMask(j, 1)) nt = nt+ popcnt(mobMask(j, 1))
if (nt > 4) exit if (nt > 4) exit
endif endif
if (mobMask(j,2) /= 0_bitkind) then if (mobMask(j,2) /= 0_bit_kind) then
nt = nt+ popcnt(mobMask(j, 2)) nt = nt+ popcnt(mobMask(j, 2))
if (nt > 4) exit if (nt > 4) exit
endif endif