mirror of
https://github.com/LCPQ/quantum_package
synced 2024-08-26 14:31:44 +02:00
commented out computation of excitations
This commit is contained in:
parent
5bd59241fa
commit
95a1cddf43
@ -363,7 +363,7 @@ subroutine alpha_callback_mask(delta_ij_loc, sp, mask, bannedOrb, banned, indexe
|
|||||||
integer, intent(in) :: indexes_end(0:mo_tot_num, 0:mo_tot_num), abuf(*)
|
integer, intent(in) :: indexes_end(0:mo_tot_num, 0:mo_tot_num), abuf(*)
|
||||||
logical, intent(in) :: bannedOrb(mo_tot_num,2), banned(mo_tot_num, mo_tot_num)
|
logical, intent(in) :: bannedOrb(mo_tot_num,2), banned(mo_tot_num, mo_tot_num)
|
||||||
integer(bit_kind), intent(in) :: mask(N_int, 2)
|
integer(bit_kind), intent(in) :: mask(N_int, 2)
|
||||||
integer(bit_kind) :: alpha(N_int, 2, 1)
|
integer(bit_kind) :: alpha(N_int, 2)
|
||||||
integer, allocatable :: labuf(:)
|
integer, allocatable :: labuf(:)
|
||||||
logical :: ok
|
logical :: ok
|
||||||
integer :: i,j,k,s,st1,st2,st3,st4
|
integer :: i,j,k,s,st1,st2,st3,st4
|
||||||
@ -388,8 +388,6 @@ subroutine alpha_callback_mask(delta_ij_loc, sp, mask, bannedOrb, banned, indexe
|
|||||||
else if(sp == 2) then
|
else if(sp == 2) then
|
||||||
s1 = 2
|
s1 = 2
|
||||||
s2 = 2
|
s2 = 2
|
||||||
!lindex(:, 1) = indexes(0, 1:)
|
|
||||||
!lindex_end(:,1) = indexes_end(0, 1:)
|
|
||||||
lindex(:, 2) = indexes(0, 1:)
|
lindex(:, 2) = indexes(0, 1:)
|
||||||
lindex_end(:, 2) = indexes_end(0, 1:)
|
lindex_end(:, 2) = indexes_end(0, 1:)
|
||||||
else if(sp == 1) then
|
else if(sp == 1) then
|
||||||
@ -397,8 +395,6 @@ subroutine alpha_callback_mask(delta_ij_loc, sp, mask, bannedOrb, banned, indexe
|
|||||||
s2 = 1
|
s2 = 1
|
||||||
lindex(:, 1) = indexes(1:, 0)
|
lindex(:, 1) = indexes(1:, 0)
|
||||||
lindex_end(:,1) = indexes_end(1:, 0)
|
lindex_end(:,1) = indexes_end(1:, 0)
|
||||||
!lindex(:, 2) = indexes(1:, 0)
|
|
||||||
!lindex_end(:, 2) = indexes_end(1:, 0)
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
do i=1,mo_tot_num
|
do i=1,mo_tot_num
|
||||||
@ -443,10 +439,10 @@ subroutine alpha_callback_mask(delta_ij_loc, sp, mask, bannedOrb, banned, indexe
|
|||||||
end if
|
end if
|
||||||
!APPLY PART
|
!APPLY PART
|
||||||
if(st4 > 1) then
|
if(st4 > 1) then
|
||||||
call apply_particles(mask, s1, i, s2, j, alpha(1,1,1), ok, N_int)
|
call apply_particles(mask, s1, i, s2, j, alpha, ok, N_int)
|
||||||
if(.not. ok) stop "non existing alpha......"
|
!if(.not. ok) stop "non existing alpha......"
|
||||||
!print *, "willcall", st4-1, size(labuf)
|
!print *, "willcall", st4-1, size(labuf)
|
||||||
call dress_with_alpha_buffer(delta_ij_loc, labuf, st4-1, alpha, 1)
|
call dress_with_alpha_buffer(delta_ij_loc, labuf, st4-1, alpha)
|
||||||
!call dress_with_alpha_buffer(delta_ij_loc, abuf, siz, alpha, 1)
|
!call dress_with_alpha_buffer(delta_ij_loc, abuf, siz, alpha, 1)
|
||||||
end if
|
end if
|
||||||
end do
|
end do
|
||||||
@ -670,7 +666,6 @@ subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, indexes, ab
|
|||||||
else if(nt == 3) then
|
else if(nt == 3) then
|
||||||
call get_d1(interesting(i), det(1,1,i), banned, bannedOrb, indexes, abuf, mask, h, p, sp)
|
call get_d1(interesting(i), det(1,1,i), banned, bannedOrb, indexes, abuf, mask, h, p, sp)
|
||||||
else
|
else
|
||||||
if(abuf(indexes(0,0)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(0,0)) = interesting(i)
|
abuf(indexes(0,0)) = interesting(i)
|
||||||
indexes(0,0) += 1
|
indexes(0,0) += 1
|
||||||
end if
|
end if
|
||||||
@ -720,39 +715,36 @@ subroutine get_d2(i_gen, gen, banned, bannedOrb, indexes, abuf, mask, h, p, sp)
|
|||||||
do i = 1, 3
|
do i = 1, 3
|
||||||
putj = p(i, ma)
|
putj = p(i, ma)
|
||||||
if(banned(putj,puti,bant)) cycle
|
if(banned(putj,puti,bant)) cycle
|
||||||
i1 = turn3(1,i)
|
!i1 = turn3(1,i)
|
||||||
i2 = turn3(2,i)
|
!i2 = turn3(2,i)
|
||||||
p1 = p(i1, ma)
|
!p1 = p(i1, ma)
|
||||||
p2 = p(i2, ma)
|
!p2 = p(i2, ma)
|
||||||
h1 = h(1, ma)
|
!h1 = h(1, ma)
|
||||||
h2 = h(2, ma)
|
!h2 = h(2, ma)
|
||||||
|
|
||||||
!hij = (mo_bielec_integral(p1, p2, h1, h2) - mo_bielec_integral(p2,p1, h1, h2)) * get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2)
|
!hij = (mo_bielec_integral(p1, p2, h1, h2) - mo_bielec_integral(p2,p1, h1, h2)) * get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2)
|
||||||
if(ma == 1) then
|
if(ma == 1) then
|
||||||
if(abuf(indexes(putj,puti)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(putj, puti)) = i_gen
|
abuf(indexes(putj, puti)) = i_gen
|
||||||
indexes(putj, puti) += 1
|
indexes(putj, puti) += 1
|
||||||
else
|
else
|
||||||
if(abuf(indexes(puti,putj)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(puti, putj)) = i_gen
|
abuf(indexes(puti, putj)) = i_gen
|
||||||
indexes(puti, putj) += 1
|
indexes(puti, putj) += 1
|
||||||
end if
|
end if
|
||||||
end do
|
end do
|
||||||
else
|
else
|
||||||
h1 = h(1,1)
|
!h1 = h(1,1)
|
||||||
h2 = h(1,2)
|
!h2 = h(1,2)
|
||||||
do j = 1,2
|
do j = 1,2
|
||||||
putj = p(j, 2)
|
putj = p(j, 2)
|
||||||
p2 = p(turn2(j), 2)
|
!p2 = p(turn2(j), 2)
|
||||||
do i = 1,2
|
do i = 1,2
|
||||||
puti = p(i, 1)
|
puti = p(i, 1)
|
||||||
|
|
||||||
if(banned(puti,putj,bant)) cycle
|
if(banned(puti,putj,bant)) cycle
|
||||||
p1 = p(turn2(i), 1)
|
!p1 = p(turn2(i), 1)
|
||||||
|
|
||||||
!hij = mo_bielec_integral(p1, p2, h1, h2) * get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2)
|
!hij = mo_bielec_integral(p1, p2, h1, h2) * get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2)
|
||||||
|
|
||||||
if(abuf(indexes(puti,putj)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(puti, putj)) = i_gen
|
abuf(indexes(puti, putj)) = i_gen
|
||||||
indexes(puti, putj) += 1
|
indexes(puti, putj) += 1
|
||||||
end do
|
end do
|
||||||
@ -761,36 +753,34 @@ subroutine get_d2(i_gen, gen, banned, bannedOrb, indexes, abuf, mask, h, p, sp)
|
|||||||
|
|
||||||
else
|
else
|
||||||
if(tip == 0) then
|
if(tip == 0) then
|
||||||
h1 = h(1, ma)
|
!h1 = h(1, ma)
|
||||||
h2 = h(2, ma)
|
!h2 = h(2, ma)
|
||||||
do i=1,3
|
do i=1,3
|
||||||
puti = p(i, ma)
|
puti = p(i, ma)
|
||||||
do j=i+1,4
|
do j=i+1,4
|
||||||
putj = p(j, ma)
|
putj = p(j, ma)
|
||||||
if(banned(puti,putj,1)) cycle
|
if(banned(puti,putj,1)) cycle
|
||||||
|
|
||||||
i1 = turn2d(1, i, j)
|
!i1 = turn2d(1, i, j)
|
||||||
i2 = turn2d(2, i, j)
|
!i2 = turn2d(2, i, j)
|
||||||
p1 = p(i1, ma)
|
!p1 = p(i1, ma)
|
||||||
p2 = p(i2, ma)
|
!p2 = p(i2, ma)
|
||||||
!hij = (mo_bielec_integral(p1, p2, h1, h2) - mo_bielec_integral(p2,p1, h1, h2)) * get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2)
|
!hij = (mo_bielec_integral(p1, p2, h1, h2) - mo_bielec_integral(p2,p1, h1, h2)) * get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2)
|
||||||
if(abuf(indexes(puti,putj)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(puti, putj)) = i_gen
|
abuf(indexes(puti, putj)) = i_gen
|
||||||
indexes(puti, putj) += 1
|
indexes(puti, putj) += 1
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
else if(tip == 3) then
|
else if(tip == 3) then
|
||||||
h1 = h(1, mi)
|
!h1 = h(1, mi)
|
||||||
h2 = h(1, ma)
|
!h2 = h(1, ma)
|
||||||
p1 = p(1, mi)
|
!p1 = p(1, mi)
|
||||||
do i=1,3
|
do i=1,3
|
||||||
puti = p(turn3(1,i), ma)
|
puti = p(turn3(1,i), ma)
|
||||||
putj = p(turn3(2,i), ma)
|
putj = p(turn3(2,i), ma)
|
||||||
if(banned(puti,putj,1)) cycle
|
if(banned(puti,putj,1)) cycle
|
||||||
p2 = p(i, ma)
|
!p2 = p(i, ma)
|
||||||
|
|
||||||
!hij = mo_bielec_integral(p1, p2, h1, h2) * get_phase_bi(phasemask, mi, ma, h1, p1, h2, p2)
|
!hij = mo_bielec_integral(p1, p2, h1, h2) * get_phase_bi(phasemask, mi, ma, h1, p1, h2, p2)
|
||||||
if(abuf(indexes( min(puti, putj), max(puti, putj)) ) /= 0) stop "noz"
|
|
||||||
abuf(indexes(min(puti, putj), max(puti, putj))) = i_gen
|
abuf(indexes(min(puti, putj), max(puti, putj))) = i_gen
|
||||||
indexes(min(puti, putj), max(puti, putj)) += 1
|
indexes(min(puti, putj), max(puti, putj)) += 1
|
||||||
end do
|
end do
|
||||||
@ -798,13 +788,12 @@ subroutine get_d2(i_gen, gen, banned, bannedOrb, indexes, abuf, mask, h, p, sp)
|
|||||||
puti = p(1, sp)
|
puti = p(1, sp)
|
||||||
putj = p(2, sp)
|
putj = p(2, sp)
|
||||||
if(.not. banned(puti,putj,1)) then
|
if(.not. banned(puti,putj,1)) then
|
||||||
p1 = p(1, mi)
|
!p1 = p(1, mi)
|
||||||
p2 = p(2, mi)
|
!p2 = p(2, mi)
|
||||||
h1 = h(1, mi)
|
!h1 = h(1, mi)
|
||||||
h2 = h(2, mi)
|
!h2 = h(2, mi)
|
||||||
!hij = (mo_bielec_integral(p1, p2, h1, h2) - mo_bielec_integral(p2,p1, h1, h2)) * get_phase_bi(phasemask, mi, mi, h1, p1, h2, p2)
|
!hij = (mo_bielec_integral(p1, p2, h1, h2) - mo_bielec_integral(p2,p1, h1, h2)) * get_phase_bi(phasemask, mi, mi, h1, p1, h2, p2)
|
||||||
|
|
||||||
if(abuf(indexes(puti,putj)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(puti, putj)) = i_gen
|
abuf(indexes(puti, putj)) = i_gen
|
||||||
indexes(puti, putj) += 1
|
indexes(puti, putj) += 1
|
||||||
end if
|
end if
|
||||||
@ -878,13 +867,11 @@ subroutine get_d1(i_gen, gen, banned, bannedOrb, indexes, abuf, mask, h, p, sp)
|
|||||||
|
|
||||||
if(ma == 1) then
|
if(ma == 1) then
|
||||||
!mat(1:N_states,1:mo_tot_num,puti) += tmp_row(1:N_states,1:mo_tot_num)
|
!mat(1:N_states,1:mo_tot_num,puti) += tmp_row(1:N_states,1:mo_tot_num)
|
||||||
if(abuf(indexes(0,puti)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(0, puti)) = i_gen
|
abuf(indexes(0, puti)) = i_gen
|
||||||
indexes(0, puti) += 1
|
indexes(0, puti) += 1
|
||||||
!countedOrb(puti, 2) -= 1
|
!countedOrb(puti, 2) -= 1
|
||||||
else
|
else
|
||||||
!mat(1:N_states,puti,1:mo_tot_num) += tmp_row(1:N_states,1:mo_tot_num)
|
!mat(1:N_states,puti,1:mo_tot_num) += tmp_row(1:N_states,1:mo_tot_num)
|
||||||
if(abuf(indexes(puti,0)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(puti, 0)) = i_gen
|
abuf(indexes(puti, 0)) = i_gen
|
||||||
indexes(puti, 0) += 1
|
indexes(puti, 0) += 1
|
||||||
!countedOrb(puti, 1) -= 1
|
!countedOrb(puti, 1) -= 1
|
||||||
@ -892,44 +879,40 @@ subroutine get_d1(i_gen, gen, banned, bannedOrb, indexes, abuf, mask, h, p, sp)
|
|||||||
end if
|
end if
|
||||||
|
|
||||||
!MOVE MI
|
!MOVE MI
|
||||||
pfix = p(1,mi)
|
!pfix = p(1,mi)
|
||||||
tmp_row = 0d0
|
!tmp_row = 0d0
|
||||||
tmp_row2 = 0d0
|
!tmp_row2 = 0d0
|
||||||
do puti=1,mo_tot_num
|
!do puti=1,mo_tot_num
|
||||||
if(lbanned(puti,mi)) cycle
|
! if(lbanned(puti,mi)) cycle
|
||||||
!p1 fixed
|
!p1 fixed
|
||||||
putj = p1
|
! putj = p1
|
||||||
!if(.not. banned(putj,puti,bant)) then
|
!if(.not. banned(putj,puti,bant)) then
|
||||||
! hij = mo_bielec_integral(p2,pfix,hfix,puti) * get_phase_bi(phasemask, ma, mi, hfix, p2, puti, pfix)
|
! hij = mo_bielec_integral(p2,pfix,hfix,puti) * get_phase_bi(phasemask, ma, mi, hfix, p2, puti, pfix)
|
||||||
! tmp_row(:,puti) += hij * coefs(:)
|
! tmp_row(:,puti) += hij * coefs(:)
|
||||||
!end if
|
!end if
|
||||||
|
|
||||||
putj = p2
|
! putj = p2
|
||||||
!if(.not. banned(putj,puti,bant)) then
|
!if(.not. banned(putj,puti,bant)) then
|
||||||
! hij = mo_bielec_integral(p1,pfix,hfix,puti) * get_phase_bi(phasemask, ma, mi, hfix, p1, puti, pfix)
|
! hij = mo_bielec_integral(p1,pfix,hfix,puti) * get_phase_bi(phasemask, ma, mi, hfix, p1, puti, pfix)
|
||||||
! tmp_row2(:,puti) += hij * coefs(:)
|
! tmp_row2(:,puti) += hij * coefs(:)
|
||||||
!end if
|
!end if
|
||||||
end do
|
!end do
|
||||||
|
|
||||||
if(mi == 1) then
|
if(mi == 1) then
|
||||||
if(.not. bannedOrb(p1, 2)) then
|
if(.not. bannedOrb(p1, 2)) then
|
||||||
if(abuf(indexes(0,p1)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(0,p1)) = i_gen
|
abuf(indexes(0,p1)) = i_gen
|
||||||
indexes(0,p1) += 1
|
indexes(0,p1) += 1
|
||||||
end if
|
end if
|
||||||
if(.not. bannedOrb(p2, 2)) then
|
if(.not. bannedOrb(p2, 2)) then
|
||||||
if(abuf(indexes(0,p2)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(0,p2)) = i_gen
|
abuf(indexes(0,p2)) = i_gen
|
||||||
indexes(0,p2) += 1
|
indexes(0,p2) += 1
|
||||||
end if
|
end if
|
||||||
else
|
else
|
||||||
if(.not. bannedOrb(p1, 1)) then
|
if(.not. bannedOrb(p1, 1)) then
|
||||||
if(abuf(indexes(p1,0)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(p1,0)) = i_gen
|
abuf(indexes(p1,0)) = i_gen
|
||||||
indexes(p1,0) += 1
|
indexes(p1,0) += 1
|
||||||
end if
|
end if
|
||||||
if(.not. bannedOrb(p2, 1)) then
|
if(.not. bannedOrb(p2, 1)) then
|
||||||
if(abuf(indexes(p2,0)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(p2,0)) = i_gen
|
abuf(indexes(p2,0)) = i_gen
|
||||||
indexes(p2,0) += 1
|
indexes(p2,0) += 1
|
||||||
end if
|
end if
|
||||||
@ -937,10 +920,10 @@ subroutine get_d1(i_gen, gen, banned, bannedOrb, indexes, abuf, mask, h, p, sp)
|
|||||||
else
|
else
|
||||||
if(p(0,ma) == 3) then
|
if(p(0,ma) == 3) then
|
||||||
do i=1,3
|
do i=1,3
|
||||||
hfix = h(1,ma)
|
!hfix = h(1,ma)
|
||||||
puti = p(i, ma)
|
puti = p(i, ma)
|
||||||
p1 = p(turn3(1,i), ma)
|
!p1 = p(turn3(1,i), ma)
|
||||||
p2 = p(turn3(2,i), ma)
|
!p2 = p(turn3(2,i), ma)
|
||||||
!tmp_row = 0d0
|
!tmp_row = 0d0
|
||||||
!do putj=1,hfix-1
|
!do putj=1,hfix-1
|
||||||
! if(lbanned(putj,ma) .or. banned(puti,putj,1)) cycle
|
! if(lbanned(putj,ma) .or. banned(puti,putj,1)) cycle
|
||||||
@ -957,55 +940,49 @@ subroutine get_d1(i_gen, gen, banned, bannedOrb, indexes, abuf, mask, h, p, sp)
|
|||||||
!mat(:, puti, puti:) += tmp_row(:,puti:)
|
!mat(:, puti, puti:) += tmp_row(:,puti:)
|
||||||
if(.not. bannedOrb(puti, sp)) then
|
if(.not. bannedOrb(puti, sp)) then
|
||||||
if(sp == 1) then
|
if(sp == 1) then
|
||||||
if(abuf(indexes(puti,0)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(puti, 0)) = i_gen
|
abuf(indexes(puti, 0)) = i_gen
|
||||||
indexes(puti, 0) += 1
|
indexes(puti, 0) += 1
|
||||||
else
|
else
|
||||||
if(abuf(indexes(0,puti)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(0, puti)) = i_gen
|
abuf(indexes(0, puti)) = i_gen
|
||||||
indexes(0, puti) += 1
|
indexes(0, puti) += 1
|
||||||
end if
|
end if
|
||||||
end if
|
end if
|
||||||
end do
|
end do
|
||||||
else
|
else
|
||||||
hfix = h(1,mi)
|
!hfix = h(1,mi)
|
||||||
pfix = p(1,mi)
|
!pfix = p(1,mi)
|
||||||
p1 = p(1,ma)
|
p1 = p(1,ma)
|
||||||
p2 = p(2,ma)
|
p2 = p(2,ma)
|
||||||
tmp_row = 0d0
|
!tmp_row = 0d0
|
||||||
tmp_row2 = 0d0
|
!tmp_row2 = 0d0
|
||||||
do puti=1,mo_tot_num
|
!do puti=1,mo_tot_num
|
||||||
if(lbanned(puti,ma)) cycle
|
! if(lbanned(puti,ma)) cycle
|
||||||
putj = p2
|
! putj = p2
|
||||||
!if(.not. banned(puti,putj,1)) then
|
!if(.not. banned(puti,putj,1)) then
|
||||||
! hij = mo_bielec_integral(pfix, p1, hfix, puti) * get_phase_bi(phasemask, mi, ma, hfix, pfix, puti, p1)
|
! hij = mo_bielec_integral(pfix, p1, hfix, puti) * get_phase_bi(phasemask, mi, ma, hfix, pfix, puti, p1)
|
||||||
! tmp_row(:,puti) += hij * coefs(:)
|
! tmp_row(:,puti) += hij * coefs(:)
|
||||||
!end if
|
!end if
|
||||||
|
|
||||||
putj = p1
|
! putj = p1
|
||||||
!if(.not. banned(puti,putj,1)) then
|
!if(.not. banned(puti,putj,1)) then
|
||||||
! hij = mo_bielec_integral(pfix, p2, hfix, puti) * get_phase_bi(phasemask, mi, ma, hfix, pfix, puti, p2)
|
! hij = mo_bielec_integral(pfix, p2, hfix, puti) * get_phase_bi(phasemask, mi, ma, hfix, pfix, puti, p2)
|
||||||
! tmp_row2(:,puti) += hij * coefs(:)
|
! tmp_row2(:,puti) += hij * coefs(:)
|
||||||
!end if
|
!end if
|
||||||
end do
|
!end do
|
||||||
if(.not. bannedOrb(p2, sp)) then
|
if(.not. bannedOrb(p2, sp)) then
|
||||||
if(sp == 1) then
|
if(sp == 1) then
|
||||||
if(abuf(indexes(p2,0)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(p2, 0)) = i_gen
|
abuf(indexes(p2, 0)) = i_gen
|
||||||
indexes(p2, 0) += 1
|
indexes(p2, 0) += 1
|
||||||
else
|
else
|
||||||
if(abuf(indexes(0,p2)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(0, p2)) = i_gen
|
abuf(indexes(0, p2)) = i_gen
|
||||||
indexes(0, p2) += 1
|
indexes(0, p2) += 1
|
||||||
end if
|
end if
|
||||||
end if
|
end if
|
||||||
if(.not. bannedOrb(p1, sp)) then
|
if(.not. bannedOrb(p1, sp)) then
|
||||||
if(sp == 1) then
|
if(sp == 1) then
|
||||||
if(abuf(indexes(p1,0)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(p1, 0)) = i_gen
|
abuf(indexes(p1, 0)) = i_gen
|
||||||
indexes(p1, 0) += 1
|
indexes(p1, 0) += 1
|
||||||
else
|
else
|
||||||
if(abuf(indexes(0,p1)) /= 0) stop "noz"
|
|
||||||
abuf(indexes(0, p1)) = i_gen
|
abuf(indexes(0, p1)) = i_gen
|
||||||
indexes(0, p1) += 1
|
indexes(0, p1) += 1
|
||||||
end if
|
end if
|
||||||
@ -1014,27 +991,27 @@ subroutine get_d1(i_gen, gen, banned, bannedOrb, indexes, abuf, mask, h, p, sp)
|
|||||||
end if
|
end if
|
||||||
|
|
||||||
!! MONO
|
!! MONO
|
||||||
if(sp == 3) then
|
! if(sp == 3) then
|
||||||
s1 = 1
|
! s1 = 1
|
||||||
s2 = 2
|
! s2 = 2
|
||||||
else
|
! else
|
||||||
s1 = sp
|
! s1 = sp
|
||||||
s2 = sp
|
! s2 = sp
|
||||||
end if
|
! end if
|
||||||
|
!
|
||||||
do i1=1,p(0,s1)
|
! do i1=1,p(0,s1)
|
||||||
ib = 1
|
! ib = 1
|
||||||
if(s1 == s2) ib = i1+1
|
! if(s1 == s2) ib = i1+1
|
||||||
do i2=ib,p(0,s2)
|
! do i2=ib,p(0,s2)
|
||||||
p1 = p(i1,s1)
|
! p1 = p(i1,s1)
|
||||||
p2 = p(i2,s2)
|
! p2 = p(i2,s2)
|
||||||
if(bannedOrb(p1, s1) .or. bannedOrb(p2, s2) .or. banned(p1, p2, 1)) cycle
|
! if(bannedOrb(p1, s1) .or. bannedOrb(p2, s2) .or. banned(p1, p2, 1)) cycle
|
||||||
call apply_particles(mask, s1, p1, s2, p2, det, ok, N_int)
|
! call apply_particles(mask, s1, p1, s2, p2, det, ok, N_int)
|
||||||
call i_h_j(gen, det, N_int, hij)
|
! call i_h_j(gen, det, N_int, hij)
|
||||||
!mat(:, p1, p2) += coefs(:) * hij
|
! !mat(:, p1, p2) += coefs(:) * hij
|
||||||
!!!!!!!! DUPLICTATE counted(p1, p2) !!!!!!!!!!!!!!!!!!!!
|
! !!!!!!!! DUPLICTATE counted(p1, p2) !!!!!!!!!!!!!!!!!!!!
|
||||||
end do
|
! end do
|
||||||
end do
|
! end do
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -193,7 +193,15 @@ subroutine dress_collector(zmq_socket_pull, E, relative_error, delta, delta_s2,
|
|||||||
|
|
||||||
pullLoop : do while (loop)
|
pullLoop : do while (loop)
|
||||||
call pull_dress_results(zmq_socket_pull, ind, delta_loc, task_id)
|
call pull_dress_results(zmq_socket_pull, ind, delta_loc, task_id)
|
||||||
dress_mwen(:) = 0d0 !!!!!!!! A CALCULER ICI
|
dress_mwen(:) = 0d0
|
||||||
|
|
||||||
|
!!!!! A VERIFIER !!!!!
|
||||||
|
do i_state=1,N_states
|
||||||
|
do i=1, N_det
|
||||||
|
dress_mwen(i_state) += delta_loc(i_state, i, 1) * psi_coef(i, i_state)
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
|
||||||
dress_detail(:, ind) += dress_mwen(:)
|
dress_detail(:, ind) += dress_mwen(:)
|
||||||
do j=1,N_cp !! optimizable
|
do j=1,N_cp !! optimizable
|
||||||
if(cps(ind, j) > 0d0) then
|
if(cps(ind, j) > 0d0) then
|
||||||
|
@ -30,7 +30,8 @@ subroutine run_dress_slave(thread,iproc,energy)
|
|||||||
integer :: ind
|
integer :: ind
|
||||||
|
|
||||||
double precision,allocatable :: delta_ij_loc(:,:,:)
|
double precision,allocatable :: delta_ij_loc(:,:,:)
|
||||||
integer :: h,p,n
|
double precision :: div(N_states)
|
||||||
|
integer :: h,p,n,i_state
|
||||||
logical :: ok
|
logical :: ok
|
||||||
|
|
||||||
allocate(delta_ij_loc(N_states,N_det,2))
|
allocate(delta_ij_loc(N_states,N_det,2))
|
||||||
@ -44,6 +45,9 @@ subroutine run_dress_slave(thread,iproc,energy)
|
|||||||
call end_zmq_push_socket(zmq_socket_push,thread)
|
call end_zmq_push_socket(zmq_socket_push,thread)
|
||||||
return
|
return
|
||||||
end if
|
end if
|
||||||
|
do i=1,N_states
|
||||||
|
div(i) = psi_ref_coef(dressed_column_idx(i), i)
|
||||||
|
end do
|
||||||
do
|
do
|
||||||
call get_task_from_taskserver(zmq_to_qp_run_socket,worker_id, task_id, task)
|
call get_task_from_taskserver(zmq_to_qp_run_socket,worker_id, task_id, task)
|
||||||
|
|
||||||
@ -51,6 +55,15 @@ subroutine run_dress_slave(thread,iproc,energy)
|
|||||||
read (task,*) subset, i_generator
|
read (task,*) subset, i_generator
|
||||||
delta_ij_loc = 0d0
|
delta_ij_loc = 0d0
|
||||||
call alpha_callback(delta_ij_loc, i_generator, subset)
|
call alpha_callback(delta_ij_loc, i_generator, subset)
|
||||||
|
|
||||||
|
!!! SET DRESSING COLUMN?
|
||||||
|
do i=1,N_det
|
||||||
|
do i_state=1,N_states
|
||||||
|
delta_ij_loc(i_state,i,1) = delta_ij_loc(i_state,i,1) / div(i_state)
|
||||||
|
delta_ij_loc(i_state,i,2) = delta_ij_loc(i_state,i,2) / div(i_state)
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
|
||||||
call task_done_to_taskserver(zmq_to_qp_run_socket,worker_id,task_id)
|
call task_done_to_taskserver(zmq_to_qp_run_socket,worker_id,task_id)
|
||||||
call push_dress_results(zmq_socket_push, i_generator, delta_ij_loc, task_id)
|
call push_dress_results(zmq_socket_push, i_generator, delta_ij_loc, task_id)
|
||||||
else
|
else
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
|
|
||||||
! BEGIN_PROVIDER [ logical, do_dress_with_alpha ]
|
|
||||||
!&BEGIN_PROVIDER [ logical, do_dress_with_alpha_buffer ]
|
|
||||||
!&BEGIN_PROVIDER [ logical, do_dress_with_generator ]
|
|
||||||
! implicit none
|
|
||||||
! do_dress_with_alpha = .false.
|
|
||||||
! do_dress_with_alpha_buffer = .true.
|
|
||||||
! do_dress_with_generator = .false.
|
|
||||||
!END_PROVIDER
|
|
||||||
|
|
||||||
subroutine dress_with_alpha_buffer(delta_ij_loc, minilist, n_minilist, abuf, n_abuf)
|
|
||||||
use bitmasks
|
|
||||||
implicit none
|
|
||||||
double precision,intent(inout) :: delta_ij_loc(N_states,N_det,2)
|
|
||||||
integer, intent(in) :: n_minilist, n_abuf
|
|
||||||
integer(bit_kind),intent(in) :: abuf(N_int, 2, n_abuf)
|
|
||||||
integer :: minilist(n_minilist)
|
|
||||||
integer :: a, i, nref, nobt, deg
|
|
||||||
integer :: refc(N_det), testc(N_det)
|
|
||||||
|
|
||||||
do a=1,n_abuf
|
|
||||||
refc = 0
|
|
||||||
testc = 0
|
|
||||||
do i=1,N_det
|
|
||||||
call get_excitation_degree(psi_det_sorted(1,1,i), abuf(1,1,a), deg, N_int)
|
|
||||||
if(deg <= 2) refc(i) = refc(i) + 1
|
|
||||||
end do
|
|
||||||
do i=1,n_minilist
|
|
||||||
call get_excitation_degree(psi_det_sorted(1,1,minilist(i)), abuf(1,1,a), deg, N_int)
|
|
||||||
if(deg <= 2) then
|
|
||||||
testc(minilist(i)) += 1
|
|
||||||
else
|
|
||||||
stop "NON LIKED"
|
|
||||||
end if
|
|
||||||
end do
|
|
||||||
|
|
||||||
do i=1,N_det
|
|
||||||
if(refc(i) /= testc(i)) then
|
|
||||||
print *, "foir ", sum(refc), sum(testc), n_minilist
|
|
||||||
exit
|
|
||||||
end if
|
|
||||||
end do
|
|
||||||
end do
|
|
||||||
|
|
||||||
delta_ij_loc = 1d0
|
|
||||||
end subroutine
|
|
||||||
|
|
||||||
|
|
@ -12,3 +12,43 @@ program mrcc_sto
|
|||||||
print *, "========================"
|
print *, "========================"
|
||||||
call dress_zmq()
|
call dress_zmq()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!! TESTS MINILIST
|
||||||
|
subroutine dress_with_alpha_buffer(delta_ij_loc, minilist, n_minilist, alpha)
|
||||||
|
use bitmasks
|
||||||
|
implicit none
|
||||||
|
double precision,intent(inout) :: delta_ij_loc(N_states,N_det,2)
|
||||||
|
integer, intent(in) :: n_minilist
|
||||||
|
integer(bit_kind),intent(in) :: alpha(N_int, 2)
|
||||||
|
integer, intent(in) :: minilist(n_minilist)
|
||||||
|
integer :: a, i, deg
|
||||||
|
integer :: refc(N_det), testc(N_det)
|
||||||
|
|
||||||
|
refc = 0
|
||||||
|
testc = 0
|
||||||
|
do i=1,N_det
|
||||||
|
call get_excitation_degree(psi_det_sorted(1,1,i), alpha, deg, N_int)
|
||||||
|
if(deg <= 2) refc(i) = refc(i) + 1
|
||||||
|
end do
|
||||||
|
do i=1,n_minilist
|
||||||
|
call get_excitation_degree(psi_det_sorted(1,1,minilist(i)), alpha, deg, N_int)
|
||||||
|
if(deg <= 2) then
|
||||||
|
testc(minilist(i)) += 1
|
||||||
|
else
|
||||||
|
stop "NON LINKED IN MINILIST"
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
|
||||||
|
do i=1,N_det
|
||||||
|
if(refc(i) /= testc(i)) then
|
||||||
|
print *, "MINILIST FAIL ", sum(refc), sum(testc), n_minilist
|
||||||
|
exit
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
|
||||||
|
delta_ij_loc = 0d0
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user