diff --git a/plugins/analyze_wf/analyze_wf.irp.f b/plugins/analyze_wf/analyze_wf.irp.f index c37db55f..d8ede09a 100644 --- a/plugins/analyze_wf/analyze_wf.irp.f +++ b/plugins/analyze_wf/analyze_wf.irp.f @@ -3,6 +3,7 @@ program analyze_wf BEGIN_DOC ! Wave function analyzis END_DOC + PROVIDE mo_tot_num psi_det psi_coef read_wf = .True. SOFT_TOUCH read_wf call run() @@ -29,11 +30,11 @@ subroutine run write(*,'(A)') '=============' write(*,'(A)') '' do istate=1,N_states - call get_occupation_from_dets(occupation,istate) write(*,'(A)') '' write(*,'(A,I3)'), 'State ', istate write(*,'(A)') '---------------' write(*,'(A)') '' + call get_occupation_from_dets(istate,occupation) write (*,'(A)') '======== ================' class = 0 do i=1,mo_tot_num diff --git a/plugins/analyze_wf/occupation.irp.f b/plugins/analyze_wf/occupation.irp.f index d426dc14..c208cda3 100644 --- a/plugins/analyze_wf/occupation.irp.f +++ b/plugins/analyze_wf/occupation.irp.f @@ -1,4 +1,4 @@ -subroutine get_occupation_from_dets(occupation, istate) +subroutine get_occupation_from_dets(istate,occupation) implicit none double precision, intent(out) :: occupation(mo_tot_num) integer, intent(in) :: istate @@ -9,6 +9,8 @@ subroutine get_occupation_from_dets(occupation, istate) integer :: list(N_int*bit_kind_size,2) integer :: n_elements(2) double precision :: c + ASSERT (istate > 0) + ASSERT (istate <= N_states) occupation = 0.d0 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) do ispin=1,2 do j=1,n_elements(ispin) + ASSERT ( list(j,ispin) < mo_tot_num ) occupation( list(j,ispin) ) += c enddo enddo