subroutine InitFCIMC_trial()
! Use the code generated for the KPFCIQMC excited state calculations
! to initialise the FCIQMC simulation.
! integer :: nexcit, ndets_this_proc, i, det(nel)
integer :: nexcit, ndets_this_proc, det(nel)
integer(int64) :: i
type(basisfn) :: sym
real(dp) :: evals(inum_runs / nreplicas)
HElement_t(dp), allocatable :: evecs_this_proc(:, :)
integer(MPIArg) :: space_sizes(0:nProcessors - 1), space_displs(0:nProcessors - 1)
character(*), parameter :: this_routine = 'InitFCIMC_trial'
nexcit = inum_runs / nreplicas
! Create the trial excited states
if (allocated(trial_init_reorder)) then
call calc_trial_states_lanczos(init_trial_in, nexcit, ndets_this_proc, &
SpawnedParts, evecs_this_proc, evals, &
space_sizes, space_displs, trial_init_reorder)
else
call calc_trial_states_lanczos(init_trial_in, nexcit, ndets_this_proc, &
SpawnedParts, evecs_this_proc, evals, &
space_sizes, space_displs)
end if
! Determine the walker populations associated with these states
call set_trial_populations(nexcit, ndets_this_proc, evecs_this_proc)
! Set the trial excited states as the FCIQMC wave functions
call set_trial_states(ndets_this_proc, evecs_this_proc, SpawnedParts, &
.false., tPairedReplicas)
deallocate(evecs_this_proc)
if (tSetInitialRunRef) call set_initial_run_references()
! Add an initialisation check on symmetries.
if ((.not. tHub) .and. (.not. tUEG)) then
do i = 1, TotWalkers
call decode_bit_det(det, CurrentDets(:, i))
call getsym_wrapper(det, sym)
if (sym%sym%S /= HFSym%sym%S .or. sym%ml /= HFSym%Ml) &
call stop_all(this_routine, "Invalid det found")
end do
end if
end subroutine InitFCIMC_trial