subroutine dealloc_real_time_memory
use replica_data, only: clean_iter_data
implicit none
integer :: ierr
character(*), parameter :: this_routine = "dealloc_real_time_memory"
if (numSnapshotOrbs > 0) deallocate(snapShotOrbs, stat=ierr)
if (allocated(numCycShiftExcess)) deallocate(numCycShiftExcess, stat=ierr)
deallocate(DiagVec, stat=ierr)
call LogMemDealloc(this_routine, DiagVecTag)
call clean_iter_data(second_spawn_iter_data)
deallocate(shift_damping, stat=ierr)
deallocate(temp_freeslot, stat=ierr)
deallocate(current_overlap, stat=ierr)
deallocate(gs_energy, stat=ierr)
deallocate(dyn_norm_red, stat=ierr)
deallocate(dyn_norm_psi, stat=ierr)
deallocate(pert_norm, stat=ierr)
deallocate(gf_overlap, stat=ierr)
deallocate(TotPartsPeak, stat=ierr)
deallocate(temp_det_list, stat=ierr)
call clean_overlap_states()
call clear_pops_pert(pops_pert)
call clear_pops_pert(overlap_pert)
if (allocated(tauCache)) deallocate(tauCache)
end subroutine dealloc_real_time_memory