mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-11-08 22:43:38 +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:
commit
07c4db5ae0
@ -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)
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user