mirror of
https://github.com/LCPQ/quantum_package
synced 2024-12-22 12:23:48 +01:00
Trying Multi-state
This commit is contained in:
parent
3924fdc4b0
commit
d45d53be71
@ -79,7 +79,7 @@ program fci_zmq
|
|||||||
|
|
||||||
if (N_det == N_det_max) then
|
if (N_det == N_det_max) then
|
||||||
threshold_davidson = threshold_davidson_in
|
threshold_davidson = threshold_davidson_in
|
||||||
TOUCH threshold_davidson
|
SOFT_TOUCH threshold_davidson
|
||||||
endif
|
endif
|
||||||
call diagonalize_CI
|
call diagonalize_CI
|
||||||
call save_wavefunction
|
call save_wavefunction
|
||||||
@ -88,7 +88,7 @@ program fci_zmq
|
|||||||
|
|
||||||
if (N_det < N_det_max) then
|
if (N_det < N_det_max) then
|
||||||
threshold_davidson = threshold_davidson_in
|
threshold_davidson = threshold_davidson_in
|
||||||
TOUCH threshold_davidson
|
SOFT_TOUCH threshold_davidson
|
||||||
call diagonalize_CI
|
call diagonalize_CI
|
||||||
call save_wavefunction
|
call save_wavefunction
|
||||||
call ezfio_set_cas_sd_zmq_energy(CI_energy(1))
|
call ezfio_set_cas_sd_zmq_energy(CI_energy(1))
|
||||||
|
@ -79,7 +79,7 @@ program fci_zmq
|
|||||||
|
|
||||||
if (N_det == N_det_max) then
|
if (N_det == N_det_max) then
|
||||||
threshold_davidson = threshold_davidson_in
|
threshold_davidson = threshold_davidson_in
|
||||||
TOUCH threshold_davidson
|
SOFT_TOUCH threshold_davidson
|
||||||
endif
|
endif
|
||||||
call diagonalize_CI
|
call diagonalize_CI
|
||||||
call save_wavefunction
|
call save_wavefunction
|
||||||
|
@ -173,6 +173,41 @@ END_PROVIDER
|
|||||||
enddo
|
enddo
|
||||||
call u_0_S2_u_0(CI_eigenvectors_s2_dressed,CI_eigenvectors_dressed,N_det,psi_det,N_int,&
|
call u_0_S2_u_0(CI_eigenvectors_s2_dressed,CI_eigenvectors_dressed,N_det,psi_det,N_int,&
|
||||||
N_states_diag,size(CI_eigenvectors_dressed,1))
|
N_states_diag,size(CI_eigenvectors_dressed,1))
|
||||||
|
|
||||||
|
double precision :: u_dot_u
|
||||||
|
double precision, allocatable :: h(:,:), s(:,:)
|
||||||
|
allocate (h(N_states,N_states), s(N_states,N_states))
|
||||||
|
do i=1,N_states
|
||||||
|
do j=1,N_states
|
||||||
|
s(i,j) = u_dot_v(CI_eigenvectors_dressed(1,i),CI_eigenvectors_dressed(1,j),N_det)
|
||||||
|
print *, 'S(',i,',',j,')', s(i,j)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
|
||||||
|
do i=1,N_states
|
||||||
|
h(i,i) = CI_electronic_energy_dressed(i)
|
||||||
|
do j=i+1,N_states
|
||||||
|
h(j,i) = (CI_electronic_energy_dressed(j)-CI_electronic_energy_dressed(i)) * s(i,j)
|
||||||
|
h(i,j) = -h(j,i)
|
||||||
|
print *, 'h(',i,',',i,')', h(i,j)
|
||||||
|
enddo
|
||||||
|
print *, 'h(',i,',',i,')', h(i,i)
|
||||||
|
enddo
|
||||||
|
call lapack_diag(eigenvalues,eigenvectors, h,size(h,1),N_states)
|
||||||
|
do i=1,N_states
|
||||||
|
CI_electronic_energy_dressed(i) = eigenvalues(i)
|
||||||
|
do j=1,N_states
|
||||||
|
h(i,j) = eigenvectors(i,j)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
do k=1,N_states
|
||||||
|
eigenvectors(1:N_det,k) = 0.d0
|
||||||
|
do i=1,N_states
|
||||||
|
eigenvectors(1:N_det,k) += CI_eigenvectors_dressed(1:N_det,k) * h(k,i)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
deallocate(h,s)
|
||||||
|
|
||||||
deallocate (eigenvectors,eigenvalues)
|
deallocate (eigenvectors,eigenvalues)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user