mirror of
https://github.com/LCPQ/quantum_package
synced 2024-12-25 22:03:51 +01:00
working but super slow mrcc_sto
This commit is contained in:
parent
55a3af4190
commit
5150497318
@ -71,7 +71,6 @@ subroutine select_connected(i_generator,E0,pt2,b,subset)
|
|||||||
hole_mask(k,2) = iand(generators_bitmask(k,2,s_hole,l), psi_det_generators(k,2,i_generator))
|
hole_mask(k,2) = iand(generators_bitmask(k,2,s_hole,l), psi_det_generators(k,2,i_generator))
|
||||||
particle_mask(k,1) = iand(generators_bitmask(k,1,s_part,l), not(psi_det_generators(k,1,i_generator)) )
|
particle_mask(k,1) = iand(generators_bitmask(k,1,s_part,l), not(psi_det_generators(k,1,i_generator)) )
|
||||||
particle_mask(k,2) = iand(generators_bitmask(k,2,s_part,l), not(psi_det_generators(k,2,i_generator)) )
|
particle_mask(k,2) = iand(generators_bitmask(k,2,s_part,l), not(psi_det_generators(k,2,i_generator)) )
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
call select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2,b,subset)
|
call select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2,b,subset)
|
||||||
enddo
|
enddo
|
||||||
@ -300,6 +299,7 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
|
|||||||
particle(k,2) = iand(not(psi_det_generators(k,2,i_generator)), particle_mask(k,2))
|
particle(k,2) = iand(not(psi_det_generators(k,2,i_generator)), particle_mask(k,2))
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
|
||||||
integer :: N_holes(2), N_particles(2)
|
integer :: N_holes(2), N_particles(2)
|
||||||
integer :: hole_list(N_int*bit_kind_size,2)
|
integer :: hole_list(N_int*bit_kind_size,2)
|
||||||
integer :: particle_list(N_int*bit_kind_size,2)
|
integer :: particle_list(N_int*bit_kind_size,2)
|
||||||
|
@ -31,6 +31,7 @@ subroutine generate_singles_and_doubles(delta_ij_loc, i_generator, bitmask_index
|
|||||||
|
|
||||||
integer :: h1,h2,s1,s2,s3,i1,i2,ib,sp,k,i,j,nt,ii,n
|
integer :: h1,h2,s1,s2,s3,i1,i2,ib,sp,k,i,j,nt,ii,n
|
||||||
integer(bit_kind) :: hole(N_int,2), particle(N_int,2), mask(N_int, 2), pmask(N_int, 2)
|
integer(bit_kind) :: hole(N_int,2), particle(N_int,2), mask(N_int, 2), pmask(N_int, 2)
|
||||||
|
integer(bit_kind) :: mmask(N_int, 2)
|
||||||
logical :: fullMatch, ok
|
logical :: fullMatch, ok
|
||||||
|
|
||||||
integer(bit_kind) :: mobMask(N_int, 2), negMask(N_int, 2)
|
integer(bit_kind) :: mobMask(N_int, 2), negMask(N_int, 2)
|
||||||
@ -58,12 +59,25 @@ subroutine generate_singles_and_doubles(delta_ij_loc, i_generator, bitmask_index
|
|||||||
monoBdo = .true.
|
monoBdo = .true.
|
||||||
|
|
||||||
do k=1,N_int
|
do k=1,N_int
|
||||||
hole (k,1) = iand(psi_det_generators(k,1,i_generator), generators_bitmask(k,1,s_hole,bitmask_index))
|
!hole (k,1) = iand(psi_det_generators(k,1,i_generator), generators_bitmask(k,1,s_hole,bitmask_index))
|
||||||
hole (k,2) = iand(psi_det_generators(k,2,i_generator), generators_bitmask(k,2,s_hole,bitmask_index))
|
!hole (k,2) = iand(psi_det_generators(k,2,i_generator), generators_bitmask(k,2,s_hole,bitmask_index))
|
||||||
particle(k,1) = iand(not(psi_det_generators(k,1,i_generator)), generators_bitmask(k,1,s_part,bitmask_index))
|
!particle(k,1) = iand(not(psi_det_generators(k,1,i_generator)), generators_bitmask(k,1,s_part,bitmask_index))
|
||||||
particle(k,2) = iand(not(psi_det_generators(k,2,i_generator)), generators_bitmask(k,2,s_part,bitmask_index))
|
!particle(k,2) = iand(not(psi_det_generators(k,2,i_generator)), generators_bitmask(k,2,s_part,bitmask_index))
|
||||||
|
hole (k,1) = iand(psi_det_generators(k,1,i_generator), full_ijkl_bitmask(k))
|
||||||
|
hole (k,2) = iand(psi_det_generators(k,2,i_generator), full_ijkl_bitmask(k))
|
||||||
|
particle(k,1) = iand(not(psi_det_generators(k,1,i_generator)), full_ijkl_bitmask(k))
|
||||||
|
particle(k,2) = iand(not(psi_det_generators(k,2,i_generator)), full_ijkl_bitmask(k))
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
!if(i_generator == 34) then
|
||||||
|
! call debug_det(psi_det_generators(1,1,34), N_int)
|
||||||
|
! call debug_det(generators_bitmask(1,1,s_part,bitmask_index), N_int)
|
||||||
|
! call debug_det(particle, N_int)
|
||||||
|
! print *, "dddddddddddd"
|
||||||
|
! stop
|
||||||
|
!end if
|
||||||
|
|
||||||
integer :: N_holes(2), N_particles(2)
|
integer :: N_holes(2), N_particles(2)
|
||||||
integer :: hole_list(N_int*bit_kind_size,2)
|
integer :: hole_list(N_int*bit_kind_size,2)
|
||||||
integer :: particle_list(N_int*bit_kind_size,2)
|
integer :: particle_list(N_int*bit_kind_size,2)
|
||||||
@ -335,10 +349,10 @@ subroutine generate_singles_and_doubles(delta_ij_loc, i_generator, bitmask_index
|
|||||||
if(siz > size(abuf)) stop "buffer too small in alpha_factory"
|
if(siz > size(abuf)) stop "buffer too small in alpha_factory"
|
||||||
abuf = 0
|
abuf = 0
|
||||||
call splash_pq(mask, sp, minilist, i_generator, interesting(0), bannedOrb, banned, indexes_end, abuf, interesting)
|
call splash_pq(mask, sp, minilist, i_generator, interesting(0), bannedOrb, banned, indexes_end, abuf, interesting)
|
||||||
indexes_end(:,:) -= 1
|
!indexes_end(:,:) -= 1
|
||||||
do i=1,siz
|
!do i=1,siz
|
||||||
if(abuf(i) < 1 .or. abuf(i) > N_det) stop "foireous abuf"
|
! if(abuf(i) < 1 .or. abuf(i) > N_det) stop "foireous abuf"
|
||||||
end do
|
!end do
|
||||||
!print *, "IND1", indexes(1,:)
|
!print *, "IND1", indexes(1,:)
|
||||||
!print *, "IND2", indexes_end(1,:)
|
!print *, "IND2", indexes_end(1,:)
|
||||||
!stop
|
!stop
|
||||||
@ -374,7 +388,7 @@ subroutine alpha_callback_mask(delta_ij_loc, sp, mask, bannedOrb, banned, indexe
|
|||||||
allocate(labuf(N_det), putten(N_det))
|
allocate(labuf(N_det), putten(N_det))
|
||||||
putten = .false.
|
putten = .false.
|
||||||
|
|
||||||
st1 = indexes_end(0,0)
|
st1 = indexes_end(0,0)-1 !!
|
||||||
if(st1 > 0) labuf(:st1) = abuf(:st1)
|
if(st1 > 0) labuf(:st1) = abuf(:st1)
|
||||||
st1 += 1
|
st1 += 1
|
||||||
|
|
||||||
@ -382,19 +396,19 @@ subroutine alpha_callback_mask(delta_ij_loc, sp, mask, bannedOrb, banned, indexe
|
|||||||
s1 = 1
|
s1 = 1
|
||||||
s2 = 2
|
s2 = 2
|
||||||
lindex(:, 1) = indexes(1:,0)
|
lindex(:, 1) = indexes(1:,0)
|
||||||
lindex_end(:,1) = indexes_end(1:,0)
|
lindex_end(:,1) = indexes_end(1:,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:)-1
|
||||||
else if(sp == 2) then
|
else if(sp == 2) then
|
||||||
s1 = 2
|
s1 = 2
|
||||||
s2 = 2
|
s2 = 2
|
||||||
lindex(:, 2) = indexes(0, 1:)
|
lindex(:, 2) = indexes(0, 1:)
|
||||||
lindex_end(:, 2) = indexes_end(0, 1:)
|
lindex_end(:, 2) = indexes_end(0, 1:)-1
|
||||||
else if(sp == 1) then
|
else if(sp == 1) then
|
||||||
s1 = 1
|
s1 = 1
|
||||||
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)-1
|
||||||
end if
|
end if
|
||||||
|
|
||||||
do i=1,mo_tot_num
|
do i=1,mo_tot_num
|
||||||
@ -432,8 +446,8 @@ subroutine alpha_callback_mask(delta_ij_loc, sp, mask, bannedOrb, banned, indexe
|
|||||||
end if
|
end if
|
||||||
|
|
||||||
if(indexes(i,j) /= 0) then
|
if(indexes(i,j) /= 0) then
|
||||||
st4 = st3 + 1 + indexes_end(i,j)-indexes(i,j)
|
st4 = st3 + 1 + indexes_end(i,j)-indexes(i,j) -1!!
|
||||||
labuf(st3:st4-1) = abuf(indexes(i,j):indexes_end(i,j))
|
labuf(st3:st4-1) = abuf(indexes(i,j):indexes_end(i,j)-1) !!
|
||||||
else
|
else
|
||||||
st4 = st3
|
st4 = st3
|
||||||
end if
|
end if
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
BEGIN_PROVIDER [ integer, nalp ]
|
||||||
|
&BEGIN_PROVIDER [ integer, ninc ]
|
||||||
|
nalp = 0
|
||||||
|
ninc = 0
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, dressing_column_h, (N_det,N_states) ]
|
BEGIN_PROVIDER [ double precision, dressing_column_h, (N_det,N_states) ]
|
||||||
&BEGIN_PROVIDER [ double precision, dressing_column_s, (N_det,N_states) ]
|
&BEGIN_PROVIDER [ double precision, dressing_column_s, (N_det,N_states) ]
|
||||||
implicit none
|
implicit none
|
||||||
@ -11,9 +17,6 @@
|
|||||||
double precision :: f, tmp
|
double precision :: f, tmp
|
||||||
double precision, external :: u_dot_v
|
double precision, external :: u_dot_v
|
||||||
|
|
||||||
print *, "DELTA_IJ", delta_ij(1,:10,1)
|
|
||||||
print *, "DELTA_IJ div", delta_ij(1,:10,1) / psi_coef(dressed_column_idx(1),1)
|
|
||||||
!stop
|
|
||||||
do k=1,N_states
|
do k=1,N_states
|
||||||
l = dressed_column_idx(k)
|
l = dressed_column_idx(k)
|
||||||
f = 1.d0/psi_coef(l,k)
|
f = 1.d0/psi_coef(l,k)
|
||||||
@ -27,6 +30,8 @@
|
|||||||
tmp = u_dot_v(dressing_column_s(1,k), psi_coef(1,k), N_det)
|
tmp = u_dot_v(dressing_column_s(1,k), psi_coef(1,k), N_det)
|
||||||
dressing_column_s(l,k) -= tmp * f
|
dressing_column_s(l,k) -= tmp * f
|
||||||
enddo
|
enddo
|
||||||
!stop
|
print *, "NALP", nalp
|
||||||
|
print *, "NINC", ninc
|
||||||
|
print *, "DELTA_IJ", dressing_column_h(:10,1)
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
@ -4,18 +4,11 @@ program mrcc_sto
|
|||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! TODO
|
! TODO
|
||||||
END_DOC
|
END_DOC
|
||||||
print *, "========================"
|
|
||||||
print *, "========================"
|
|
||||||
print *, "========================"
|
|
||||||
print *, "MRCC_STO not implemented - acts as a unittest for dress_zmq"
|
|
||||||
print *, "========================"
|
|
||||||
print *, "========================"
|
|
||||||
print *, "========================"
|
|
||||||
call dress_zmq()
|
call dress_zmq()
|
||||||
end
|
end
|
||||||
|
|
||||||
BEGIN_PROVIDER [ integer, idx_non_ref_from_sorted, (N_det) ]
|
BEGIN_PROVIDER [ integer, psi_from_sorted, (N_det) ]
|
||||||
&BEGIN_PROVIDER [ integer, psi_from_sorted, (N_det) ]
|
&BEGIN_PROVIDER [ integer, idx_non_ref_from_sorted, (N_det) ]
|
||||||
implicit none
|
implicit none
|
||||||
integer :: i,inpsisor
|
integer :: i,inpsisor
|
||||||
|
|
||||||
@ -30,10 +23,17 @@ end
|
|||||||
end do
|
end do
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
subroutine dress_with_alpha_buffer(delta_ij_loc, minilist, n_minilist, alpha)
|
subroutine dress_with_alpha_buffer(delta_ij_loc, minilist, n_minilist, alpha)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
implicit none
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
!delta_ij_loc(:,:,1) : dressing column for H
|
||||||
|
!delta_ij_loc(:,:,2) : dressing column for S2
|
||||||
|
!minilist : indices of determinants connected to alpha ( in psi_det_sorted )
|
||||||
|
!n_minilist : size of minilist
|
||||||
|
!alpha : alpha determinant
|
||||||
|
END_DOC
|
||||||
integer(bit_kind), intent(in) :: alpha(N_int,2)
|
integer(bit_kind), intent(in) :: alpha(N_int,2)
|
||||||
integer,intent(in) :: minilist(n_minilist), n_minilist
|
integer,intent(in) :: minilist(n_minilist), n_minilist
|
||||||
double precision, intent(inout) :: delta_ij_loc(N_states,N_det,2)
|
double precision, intent(inout) :: delta_ij_loc(N_states,N_det,2)
|
||||||
@ -49,22 +49,36 @@ subroutine dress_with_alpha_buffer(delta_ij_loc, minilist, n_minilist, alpha)
|
|||||||
double precision :: ci_inv(N_states)
|
double precision :: ci_inv(N_states)
|
||||||
integer :: exc(0:2,2,2)
|
integer :: exc(0:2,2,2)
|
||||||
integer :: h1,h2,p1,p2,s1,s2
|
integer :: h1,h2,p1,p2,s1,s2
|
||||||
integer(bit_kind) :: tmp_det(N_int,2)
|
integer(bit_kind) :: tmp_det(N_int,2), ctrl
|
||||||
integer :: i_state, k_sd, l_sd, m_sd, ll_sd, i_I
|
integer :: i_state, k_sd, l_sd, m_sd, ll_sd, i_I
|
||||||
double precision, allocatable :: hij_cache(:), sij_cache(:)
|
double precision, allocatable :: hij_cache(:), sij_cache(:)
|
||||||
double precision :: Delta_E_inv(N_states)
|
double precision :: Delta_E_inv(N_states)
|
||||||
double precision :: sdress, hdress
|
double precision :: sdress, hdress
|
||||||
double precision :: c0(N_states)
|
double precision :: c0(N_states)
|
||||||
logical :: ok
|
logical :: ok, ok2
|
||||||
|
integer :: old_ninc
|
||||||
|
double precision :: shdress
|
||||||
|
|
||||||
|
|
||||||
|
if(n_minilist == 1) return
|
||||||
|
|
||||||
|
shdress = 0d0
|
||||||
|
old_ninc = ninc
|
||||||
|
|
||||||
if (perturbative_triples) then
|
if (perturbative_triples) then
|
||||||
PROVIDE one_anhil fock_virt_total fock_core_inactive_total one_creat
|
PROVIDE one_anhil fock_virt_total fock_core_inactive_total one_creat
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
do i_I=1,N_det_ref
|
||||||
|
call get_excitation_degree(alpha,psi_ref(1,1,i_I),degree1,N_int)
|
||||||
|
if(degree1 <= 2) return
|
||||||
|
end do
|
||||||
|
|
||||||
allocate(hij_cache(N_det), sij_cache(N_det))
|
allocate(hij_cache(N_det), sij_cache(N_det))
|
||||||
allocate (dIa_hla(N_states,N_det), dIa_sla(N_states,N_det))
|
allocate (dIa_hla(N_states,N_det), dIa_sla(N_states,N_det))
|
||||||
allocate (idx_alpha(0:n_minilist))
|
allocate (idx_alpha(0:n_minilist))
|
||||||
|
|
||||||
|
|
||||||
do i_state=1,N_states
|
do i_state=1,N_states
|
||||||
c0(i_state) = 1.d0/psi_coef(dressed_column_idx(i_state),i_state)
|
c0(i_state) = 1.d0/psi_coef(dressed_column_idx(i_state),i_state)
|
||||||
enddo
|
enddo
|
||||||
@ -82,7 +96,20 @@ subroutine dress_with_alpha_buffer(delta_ij_loc, minilist, n_minilist, alpha)
|
|||||||
end if
|
end if
|
||||||
end do
|
end do
|
||||||
|
|
||||||
if( xor(ok, idx_non_ref_from_sorted(k_sd) > 0)) stop "BUGUE"
|
!if(ok) then
|
||||||
|
! call get_excitation(psi_det_sorted(1,1,k_sd),alpha,exc,degree1,phase,N_int)
|
||||||
|
! if(degree1 == 0 .or. degree1 > 2) stop "minilist error"
|
||||||
|
! call decode_exc(exc,degree1,h1,p1,h2,p2,s1,s2)
|
||||||
|
!
|
||||||
|
! if(h1 > 10 .or. p1 < 7 .or. p1 == 8 .or. p1 == 9) ok = .false.
|
||||||
|
! if(ok .and. degree1 == 2) then
|
||||||
|
! if(h2 > 10 .or. p2 < 7 .or. p2 == 8 .or. p2 == 9) ok = .false.
|
||||||
|
! end if
|
||||||
|
! !if(degree1 == 0 .or. degree1 > 2) stop "minilist error"
|
||||||
|
! !iand(xor(psi_det_sorted(i,2,k_sd), alpha(i,2)), alpha(i,2))
|
||||||
|
!end if
|
||||||
|
|
||||||
|
!if( xor(ok, idx_non_ref_from_sorted(k_sd) > 0)) stop "BUGUE"
|
||||||
if(ok) then
|
if(ok) then
|
||||||
ll_sd += 1
|
ll_sd += 1
|
||||||
idx_alpha(ll_sd) = k_sd
|
idx_alpha(ll_sd) = k_sd
|
||||||
@ -92,7 +119,7 @@ subroutine dress_with_alpha_buffer(delta_ij_loc, minilist, n_minilist, alpha)
|
|||||||
call get_s2(alpha,psi_det_sorted(1,1,k_sd),N_int,sij_cache(k_sd))
|
call get_s2(alpha,psi_det_sorted(1,1,k_sd),N_int,sij_cache(k_sd))
|
||||||
end if
|
end if
|
||||||
enddo
|
enddo
|
||||||
|
if(ll_sd <= 1) return
|
||||||
idx_alpha(0) = ll_sd
|
idx_alpha(0) = ll_sd
|
||||||
|
|
||||||
|
|
||||||
@ -126,9 +153,12 @@ subroutine dress_with_alpha_buffer(delta_ij_loc, minilist, n_minilist, alpha)
|
|||||||
enddo
|
enddo
|
||||||
call apply_excitation(psi_ref(1,1,i_I), exc, tmp_det, ok, N_int)
|
call apply_excitation(psi_ref(1,1,i_I), exc, tmp_det, ok, N_int)
|
||||||
|
|
||||||
|
ok2 = .false.
|
||||||
do i_state=1,N_states
|
do i_state=1,N_states
|
||||||
dIK(i_state) = dij(i_I, idx_non_ref_from_sorted(idx_alpha(k_sd)), i_state)
|
dIK(i_state) = dij(i_I, idx_non_ref_from_sorted(idx_alpha(k_sd)), i_state)
|
||||||
|
if(dIK(i_state) /= 0d0) ok2 = .true.
|
||||||
enddo
|
enddo
|
||||||
|
if(.not. ok2) cycle
|
||||||
|
|
||||||
! <I| \l/ |alpha>
|
! <I| \l/ |alpha>
|
||||||
do i_state=1,N_states
|
do i_state=1,N_states
|
||||||
@ -174,6 +204,12 @@ subroutine dress_with_alpha_buffer(delta_ij_loc, minilist, n_minilist, alpha)
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
ok2 = .false.
|
||||||
|
do i_state=1,N_states
|
||||||
|
if(dIa(i_state) /= 0d0) ok2 = .true.
|
||||||
|
enddo
|
||||||
|
if(.not. ok2) cycle
|
||||||
|
|
||||||
do i_state=1,N_states
|
do i_state=1,N_states
|
||||||
ci_inv(i_state) = psi_ref_coef_inv(i_I,i_state)
|
ci_inv(i_state) = psi_ref_coef_inv(i_I,i_state)
|
||||||
enddo
|
enddo
|
||||||
@ -192,9 +228,15 @@ subroutine dress_with_alpha_buffer(delta_ij_loc, minilist, n_minilist, alpha)
|
|||||||
!print *, i_state, idx_alpha(l_sd)
|
!print *, i_state, idx_alpha(l_sd)
|
||||||
k_sd = idx_alpha(l_sd)
|
k_sd = idx_alpha(l_sd)
|
||||||
m_sd = psi_from_sorted(k_sd)
|
m_sd = psi_from_sorted(k_sd)
|
||||||
if(psi_det(1,1,m_sd) /= psi_det_sorted(1,1,k_sd)) stop "psi_from_sorted foireous"
|
hdress = dIa_hla(i_state,k_sd) * psi_ref_coef(i_I,i_state)! * c0(i_state)
|
||||||
hdress = dIa_hla(i_state,k_sd) * psi_ref_coef(i_I,i_state) * c0(i_state)
|
sdress = dIa_sla(i_state,k_sd) * psi_ref_coef(i_I,i_state)! * c0(i_state)
|
||||||
sdress = dIa_sla(i_state,k_sd) * psi_ref_coef(i_I,i_state) * c0(i_state)
|
!!$OMP ATOMIC
|
||||||
|
!shdress += 1d0
|
||||||
|
nalp += 1
|
||||||
|
if(hdress /= 0d0) then
|
||||||
|
ninc = ninc + 1
|
||||||
|
!print *, "grepme2", hdress, shdress
|
||||||
|
end if
|
||||||
!$OMP ATOMIC
|
!$OMP ATOMIC
|
||||||
delta_ij_loc(i_state,m_sd,1) += hdress
|
delta_ij_loc(i_state,m_sd,1) += hdress
|
||||||
!$OMP ATOMIC
|
!$OMP ATOMIC
|
||||||
@ -203,6 +245,11 @@ subroutine dress_with_alpha_buffer(delta_ij_loc, minilist, n_minilist, alpha)
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
!if(ninc /= old_ninc) then
|
||||||
|
! nalp = nalp + 1
|
||||||
|
! !print "(A8,I20,I20,E15.5)", "grepme", alpha(1,1), alpha(1,2), shdress
|
||||||
|
!end if
|
||||||
end subroutine
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
|
@ -343,7 +343,10 @@ subroutine mrcc_part_dress(delta_ij_, delta_ij_s2_, i_generator,n_selected,det_b
|
|||||||
!double precision, external :: get_dij, get_dij_index
|
!double precision, external :: get_dij, get_dij_index
|
||||||
double precision :: Delta_E_inv(N_states)
|
double precision :: Delta_E_inv(N_states)
|
||||||
double precision, intent(inout) :: contrib(N_states)
|
double precision, intent(inout) :: contrib(N_states)
|
||||||
double precision :: sdress, hdress
|
double precision :: sdress, hdress, shdress
|
||||||
|
integer :: old_ninc
|
||||||
|
|
||||||
|
old_ninc = ninc
|
||||||
|
|
||||||
if (perturbative_triples) then
|
if (perturbative_triples) then
|
||||||
PROVIDE one_anhil fock_virt_total fock_core_inactive_total one_creat
|
PROVIDE one_anhil fock_virt_total fock_core_inactive_total one_creat
|
||||||
@ -408,6 +411,9 @@ subroutine mrcc_part_dress(delta_ij_, delta_ij_s2_, i_generator,n_selected,det_b
|
|||||||
|
|
||||||
|
|
||||||
do i_alpha=1,N_tq
|
do i_alpha=1,N_tq
|
||||||
|
old_ninc = ninc
|
||||||
|
shdress = 0d0
|
||||||
|
|
||||||
if(key_mask(1,1) /= 0) then
|
if(key_mask(1,1) /= 0) then
|
||||||
call getMobiles(tq(1,1,i_alpha), key_mask, mobiles, Nint)
|
call getMobiles(tq(1,1,i_alpha), key_mask, mobiles, Nint)
|
||||||
|
|
||||||
@ -545,6 +551,9 @@ subroutine mrcc_part_dress(delta_ij_, delta_ij_s2_, i_generator,n_selected,det_b
|
|||||||
k_sd = idx_alpha(l_sd)
|
k_sd = idx_alpha(l_sd)
|
||||||
hdress = dIa_hla(i_state,k_sd) * psi_ref_coef(i_I,i_state)
|
hdress = dIa_hla(i_state,k_sd) * psi_ref_coef(i_I,i_state)
|
||||||
sdress = dIa_sla(i_state,k_sd) * psi_ref_coef(i_I,i_state)
|
sdress = dIa_sla(i_state,k_sd) * psi_ref_coef(i_I,i_state)
|
||||||
|
!!$OMP ATOMIC
|
||||||
|
if(hdress /= 0d0) ninc = ninc + 1
|
||||||
|
shdress += hdress
|
||||||
!$OMP ATOMIC
|
!$OMP ATOMIC
|
||||||
contrib(i_state) += hdress * psi_coef(dressed_column_idx(i_state), i_state) * psi_non_ref_coef(k_sd, i_state)
|
contrib(i_state) += hdress * psi_coef(dressed_column_idx(i_state), i_state) * psi_non_ref_coef(k_sd, i_state)
|
||||||
!$OMP ATOMIC
|
!$OMP ATOMIC
|
||||||
@ -554,7 +563,18 @@ subroutine mrcc_part_dress(delta_ij_, delta_ij_s2_, i_generator,n_selected,det_b
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
if(ninc /= old_ninc) then
|
||||||
|
nalp = nalp + 1
|
||||||
|
!print "(A8,I20,I20,E15.5)", "grepme", tq(1,1,i_alpha), tq(1,2,i_alpha), shdress
|
||||||
|
!if(tq(1,1,i_alpha) == 1007 .and. tq(1,2,i_alpha) == 17301943) then
|
||||||
|
! print *, "foinder", i_generator
|
||||||
|
! call debug_det(psi_det_generators(1,1, i_generator), N_int)
|
||||||
|
! call debug_det(tq(1,1,i_alpha), N_int)
|
||||||
|
! stop
|
||||||
|
! end if
|
||||||
|
end if
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
deallocate (dIa_hla,dIa_sla,hij_cache,sij_cache)
|
deallocate (dIa_hla,dIa_sla,hij_cache,sij_cache)
|
||||||
deallocate(miniList, idx_miniList)
|
deallocate(miniList, idx_miniList)
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
|
||||||
|
BEGIN_PROVIDER [ integer, nalp ]
|
||||||
|
&BEGIN_PROVIDER [ integer, ninc ]
|
||||||
|
nalp = 0
|
||||||
|
ninc = 0
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, dressing_column_h, (N_det,N_states) ]
|
BEGIN_PROVIDER [ double precision, dressing_column_h, (N_det,N_states) ]
|
||||||
&BEGIN_PROVIDER [ double precision, dressing_column_s, (N_det,N_states) ]
|
&BEGIN_PROVIDER [ double precision, dressing_column_s, (N_det,N_states) ]
|
||||||
implicit none
|
implicit none
|
||||||
@ -24,6 +31,8 @@
|
|||||||
tmp = u_dot_v(dressing_column_s(1,k), psi_coef(1,k), N_det)
|
tmp = u_dot_v(dressing_column_s(1,k), psi_coef(1,k), N_det)
|
||||||
dressing_column_s(l,k) -= tmp * f
|
dressing_column_s(l,k) -= tmp * f
|
||||||
enddo
|
enddo
|
||||||
|
print *, "NALP", nalp
|
||||||
|
print *, "NINC", ninc
|
||||||
print *, "DRESS", dressing_column_h(:10,1)
|
print *, "DRESS", dressing_column_h(:10,1)
|
||||||
! stop
|
! stop
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
Loading…
Reference in New Issue
Block a user