10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-12-23 21:03:56 +01:00

Bug in diagonalize CI

This commit is contained in:
Anthony Scemama 2016-06-16 00:14:02 +02:00
parent 5502f94503
commit 149c69b161

View File

@ -69,7 +69,7 @@ END_PROVIDER
if (diag_algorithm == "Davidson") then if (diag_algorithm == "Davidson") then
call davidson_diag(psi_det,CI_eigenvectors,CI_electronic_energy, & call davidson_diag(psi_det,CI_eigenvectors,CI_electronic_energy,&
size(CI_eigenvectors,1),N_det,N_states_diag,N_int,output_determinants) size(CI_eigenvectors,1),N_det,N_states_diag,N_int,output_determinants)
do j=1,N_states_diag do j=1,N_states_diag
call get_s2_u0(psi_det,CI_eigenvectors(1,j),N_det,size(CI_eigenvectors,1),CI_eigenvectors_s2(j)) call get_s2_u0(psi_det,CI_eigenvectors(1,j),N_det,size(CI_eigenvectors,1),CI_eigenvectors_s2(j))
@ -125,8 +125,6 @@ END_PROVIDER
CI_eigenvectors_s2(i_state+i_other_state) = s2 CI_eigenvectors_s2(i_state+i_other_state) = s2
enddo enddo
deallocate(index_good_state_array,good_state_array)
else else
print*,'' print*,''
print*,'!!!!!!!! WARNING !!!!!!!!!' print*,'!!!!!!!! WARNING !!!!!!!!!'
@ -145,6 +143,7 @@ END_PROVIDER
CI_eigenvectors_s2(j) = s2_eigvalues(j) CI_eigenvectors_s2(j) = s2_eigvalues(j)
enddo enddo
endif endif
deallocate(index_good_state_array,good_state_array)
deallocate(s2_eigvalues) deallocate(s2_eigvalues)
else else
! Select the "N_states_diag" states of lowest energy ! Select the "N_states_diag" states of lowest energy
@ -205,12 +204,12 @@ END_PROVIDER
do i = 1, N_det do i = 1, N_det
CI_eigenvectors(i,j) = psi_coef(i,index_good_state_array(iorder(j))) CI_eigenvectors(i,j) = psi_coef(i,index_good_state_array(iorder(j)))
enddo enddo
! call u0_H_u_0(e_0,CI_eigenvectors(1,j),n_det,psi_det,N_int) ! call u0_H_u_0(e_0,CI_eigenvectors(1,j),n_det,psi_det,N_int)
! print*,'e = ',CI_electronic_energy(j) ! print*,'e = ',CI_electronic_energy(j)
! print*,'<e> = ',e_0 ! print*,'<e> = ',e_0
! call get_s2_u0(psi_det,CI_eigenvectors(1,j),N_det,size(CI_eigenvectors,1),s2) ! call get_s2_u0(psi_det,CI_eigenvectors(1,j),N_det,size(CI_eigenvectors,1),s2)
! print*,'s^2 = ',CI_eigenvectors_s2(j) ! print*,'s^2 = ',CI_eigenvectors_s2(j)
! print*,'<s^2>= ',s2 ! print*,'<s^2>= ',s2
enddo enddo
deallocate(e_array,iorder) deallocate(e_array,iorder)
@ -226,8 +225,6 @@ END_PROVIDER
call u0_H_u_0(e_0,CI_eigenvectors(1,i_state + i_other_state),n_det,psi_det,N_int) call u0_H_u_0(e_0,CI_eigenvectors(1,i_state + i_other_state),n_det,psi_det,N_int)
CI_electronic_energy(i_state + i_other_state) = e_0 CI_electronic_energy(i_state + i_other_state) = e_0
enddo enddo
deallocate(index_good_state_array,good_state_array)
else else
@ -250,8 +247,9 @@ END_PROVIDER
deallocate(e_array,iorder) deallocate(e_array,iorder)
endif endif
deallocate(s2_eigvalues) deallocate(s2_eigvalues)
endif deallocate(index_good_state_array,good_state_array)
endif
END_PROVIDER END_PROVIDER