subroutine create_overlap_pert_vec()
! Read in the popsfile and apply perturbation operator overlap_pert.
use FciMCData, only: TotWalkers, CurrentDets
use PopsfileMod, only: read_popsfile_wrapper
use util_mod, only: int_fmt
integer :: mem_reqd, ierr
character(len=*), parameter :: t_r = "create_overlap_pert_vec"
if (allocated(perturbed_ground)) deallocate(perturbed_ground)
! Once this is finished, the vector that we want will be stored in
! CurrentDets. The total number of determinants will be TotWalkers.
call read_popsfile_wrapper(overlap_pert)
! Print info about memory usage to the user.
! Memory required in MB.
mem_reqd = int(TotWalkers / 1000000_int64) * (NIfTotKP + 1) * size_n_int
write(stdout, '(a73,'//int_fmt(mem_reqd, 1)//')') "About to allocate array to hold the perturbed &
&ground state. Memory required (MB):", mem_reqd
write(stdout, '(a13)', advance='no') "Allocating..."
call neci_flush(stdout)
allocate(perturbed_ground(0:NIfTot, TotWalkers), stat=ierr)
if (ierr /= 0) then
write(stdout, '(1x,a11,1x,i5)') "Error code:", ierr
call stop_all(t_r, "Error allocating array.")
else
write(stdout, '(1x,a5)') "Done."
end if
call neci_flush(stdout)
perturbed_ground = CurrentDets(0:NIfTot, 1:TotWalkers)
end subroutine create_overlap_pert_vec