10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-12-22 20:35:19 +01:00

Bug in analyze_wf

This commit is contained in:
Anthony Scemama 2017-12-04 10:31:54 +01:00
parent 0c190934a8
commit 7131a21be6
2 changed files with 6 additions and 2 deletions

View File

@ -3,6 +3,7 @@ program analyze_wf
BEGIN_DOC BEGIN_DOC
! Wave function analyzis ! Wave function analyzis
END_DOC END_DOC
PROVIDE mo_tot_num psi_det psi_coef
read_wf = .True. read_wf = .True.
SOFT_TOUCH read_wf SOFT_TOUCH read_wf
call run() call run()
@ -29,11 +30,11 @@ subroutine run
write(*,'(A)') '=============' write(*,'(A)') '============='
write(*,'(A)') '' write(*,'(A)') ''
do istate=1,N_states do istate=1,N_states
call get_occupation_from_dets(occupation,istate)
write(*,'(A)') '' write(*,'(A)') ''
write(*,'(A,I3)'), 'State ', istate write(*,'(A,I3)'), 'State ', istate
write(*,'(A)') '---------------' write(*,'(A)') '---------------'
write(*,'(A)') '' write(*,'(A)') ''
call get_occupation_from_dets(istate,occupation)
write (*,'(A)') '======== ================' write (*,'(A)') '======== ================'
class = 0 class = 0
do i=1,mo_tot_num do i=1,mo_tot_num

View File

@ -1,4 +1,4 @@
subroutine get_occupation_from_dets(occupation, istate) subroutine get_occupation_from_dets(istate,occupation)
implicit none implicit none
double precision, intent(out) :: occupation(mo_tot_num) double precision, intent(out) :: occupation(mo_tot_num)
integer, intent(in) :: istate integer, intent(in) :: istate
@ -9,6 +9,8 @@ subroutine get_occupation_from_dets(occupation, istate)
integer :: list(N_int*bit_kind_size,2) integer :: list(N_int*bit_kind_size,2)
integer :: n_elements(2) integer :: n_elements(2)
double precision :: c double precision :: c
ASSERT (istate > 0)
ASSERT (istate <= N_states)
occupation = 0.d0 occupation = 0.d0
do i=1,N_det do i=1,N_det
@ -16,6 +18,7 @@ subroutine get_occupation_from_dets(occupation, istate)
call bitstring_to_list_ab(psi_det(1,1,i), list, n_elements, N_int) call bitstring_to_list_ab(psi_det(1,1,i), list, n_elements, N_int)
do ispin=1,2 do ispin=1,2
do j=1,n_elements(ispin) do j=1,n_elements(ispin)
ASSERT ( list(j,ispin) < mo_tot_num )
occupation( list(j,ispin) ) += c occupation( list(j,ispin) ) += c
enddo enddo
enddo enddo