mirror of
https://github.com/LCPQ/quantum_package
synced 2024-08-06 20:40:30 +02:00
Accelerated filter_connected_i_H_psi0 for large N_int
This commit is contained in:
parent
5d253ea84b
commit
a3e12f3d33
@ -132,7 +132,7 @@ subroutine filter_connected_i_H_psi0(key1,key2,Nint,sze,idx)
|
|||||||
popcnt(xor( key1(1,2,i), key2(1,2)))
|
popcnt(xor( key1(1,2,i), key2(1,2)))
|
||||||
if (degree_x2 > 4) then
|
if (degree_x2 > 4) then
|
||||||
cycle
|
cycle
|
||||||
else if(degree_x2 .ne. 0)then
|
else if(degree_x2 /= 0)then
|
||||||
idx(l) = i
|
idx(l) = i
|
||||||
l = l+1
|
l = l+1
|
||||||
endif
|
endif
|
||||||
@ -148,7 +148,7 @@ subroutine filter_connected_i_H_psi0(key1,key2,Nint,sze,idx)
|
|||||||
popcnt(xor( key1(2,2,i), key2(2,2)))
|
popcnt(xor( key1(2,2,i), key2(2,2)))
|
||||||
if (degree_x2 > 4) then
|
if (degree_x2 > 4) then
|
||||||
cycle
|
cycle
|
||||||
else if(degree_x2 .ne. 0)then
|
else if(degree_x2 /= 0)then
|
||||||
idx(l) = i
|
idx(l) = i
|
||||||
l = l+1
|
l = l+1
|
||||||
endif
|
endif
|
||||||
@ -166,7 +166,7 @@ subroutine filter_connected_i_H_psi0(key1,key2,Nint,sze,idx)
|
|||||||
popcnt(xor( key1(3,2,i), key2(3,2)))
|
popcnt(xor( key1(3,2,i), key2(3,2)))
|
||||||
if (degree_x2 > 4) then
|
if (degree_x2 > 4) then
|
||||||
cycle
|
cycle
|
||||||
else if(degree_x2 .ne. 0)then
|
else if(degree_x2 /= 0)then
|
||||||
idx(l) = i
|
idx(l) = i
|
||||||
l = l+1
|
l = l+1
|
||||||
endif
|
endif
|
||||||
@ -175,23 +175,28 @@ subroutine filter_connected_i_H_psi0(key1,key2,Nint,sze,idx)
|
|||||||
else
|
else
|
||||||
|
|
||||||
!DIR$ LOOP COUNT (1000)
|
!DIR$ LOOP COUNT (1000)
|
||||||
do i=1,sze
|
outer: do i=1,sze
|
||||||
degree_x2 = 0
|
degree_x2 = 0
|
||||||
!DEC$ LOOP COUNT MIN(4)
|
!DEC$ LOOP COUNT MIN(4)
|
||||||
do m=1,Nint
|
do m=1,Nint
|
||||||
degree_x2 = degree_x2+ popcnt(xor( key1(m,1,i), key2(m,1))) +&
|
if ( key1(m,1,i) /= key2(m,1)) then
|
||||||
popcnt(xor( key1(m,2,i), key2(m,2)))
|
degree_x2 = degree_x2+ popcnt(xor( key1(m,1,i), key2(m,1)))
|
||||||
if (degree_x2 > 4) then
|
if (degree_x2 > 4) then
|
||||||
exit
|
cycle outer
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
if ( key1(m,2,i) /= key2(m,2)) then
|
||||||
|
degree_x2 = degree_x2+ popcnt(xor( key1(m,2,i), key2(m,2)))
|
||||||
|
if (degree_x2 > 4) then
|
||||||
|
cycle outer
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
if (degree_x2 > 4) then
|
if(degree_x2 /= 0)then
|
||||||
cycle
|
|
||||||
else if(degree_x2 .ne. 0)then
|
|
||||||
idx(l) = i
|
idx(l) = i
|
||||||
l = l+1
|
l = l+1
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo outer
|
||||||
|
|
||||||
endif
|
endif
|
||||||
idx(0) = l-1
|
idx(0) = l-1
|
||||||
|
Loading…
Reference in New Issue
Block a user