10
0
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-11-19 12:32:30 +01:00

Merge pull request #40 from QuantumPackage/dev-stable

Fix state following when N_states_diag is too small
This commit is contained in:
AbdAmmar 2024-08-27 15:25:04 +02:00 committed by GitHub
commit 07c4db5ae0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 45 deletions

View File

@ -594,6 +594,13 @@ subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_
state(l) = idx state(l) = idx
enddo enddo
! Check if all states are attributed. If not, exit and N_st_diag will be increased.
do l=1,N_st
if (state(l) == 0) then
return
endif
enddo
! tmp array before setting state_ok ! tmp array before setting state_ok
ok = .False. ok = .False.
do l = 1, N_st do l = 1, N_st
@ -627,47 +634,6 @@ subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_
! Swapped eigenvectors ! Swapped eigenvectors
prev_y = y prev_y = y
! if (state_following) then
!
! overlap = -1.d0
! do k=1,shift2
! do i=1,shift2
! overlap(k,i) = dabs(y(k,i))
! enddo
! enddo
! do k=1,N_st
! cmax = -1.d0
! do i=1,N_st
! if (overlap(i,k) > cmax) then
! cmax = overlap(i,k)
! order(k) = i
! endif
! enddo
! do i=1,N_st_diag
! overlap(order(k),i) = -1.d0
! enddo
! enddo
! overlap = y
! do k=1,N_st
! l = order(k)
! if (k /= l) then
! y(1:shift2,k) = overlap(1:shift2,l)
! endif
! enddo
! do k=1,N_st
! overlap(k,1) = lambda(k)
! overlap(k,2) = s2(k)
! enddo
! do k=1,N_st
! l = order(k)
! if (k /= l) then
! lambda(k) = overlap(l,1)
! s2(k) = overlap(l,2)
! endif
! enddo
!
! endif
! Express eigenvectors of h in the determinant basis ! Express eigenvectors of h in the determinant basis
! -------------------------------------------------- ! --------------------------------------------------
@ -703,7 +669,7 @@ subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_
if ((itertot>1).and.(iter == 1)) then if ((itertot>1).and.(iter == 1)) then
!don't print ! Don't print
continue continue
else else
write(*,'(1X,I3,1X,100(1X,F16.10,1X,F11.6,1X,ES11.3))') iter-1, to_print(1:3,1:N_st) write(*,'(1X,I3,1X,100(1X,F16.10,1X,F11.6,1X,ES11.3))') iter-1, to_print(1:3,1:N_st)

View File

@ -282,9 +282,8 @@ END_PROVIDER
print*,' Within the ',N_det,'determinants selected' print*,' Within the ',N_det,'determinants selected'
print*,' and the ',N_states_diag,'states requested' print*,' and the ',N_states_diag,'states requested'
print*,' We did not find only states with S^2 values close to ',expected_s2 print*,' We did not find only states with S^2 values close to ',expected_s2
print*,' We will then set the first N_states eigenvectors of the H matrix' print*,' You should consider more states, or change s2_eig, or just enlarge the CI space'
print*,' as the CI_eigenvectors' print*,'!!!!!!!! WARNING !!!!!!!!!'
print*,' You should consider more states and maybe ask for s2_eig to be .True. or just enlarge the CI space'
print*,'' print*,''
do j=1,min(N_states_diag,N_det) do j=1,min(N_states_diag,N_det)