| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(out) | :: | err |
subroutine perform_verlet_iteration(err) implicit none integer, intent(out) :: err integer :: TotWalkersNew call init_verlet_iteration() call update_elapsed_time() ! load H^2 psi into spawnedParts call obtain_h2_psi() ! merge delta_psi and spawnedParts into the new delta_psi (which is stored in ! spawnedParts) call update_delta_psi() ! merge delta_psi (now spawnedParts) into CurrentDets ! We need to cast TotWalkers to a regular int to pass it to the annihilation ! as it is modified, we need to pass an lvalue and cannot just pass int(TotWalkers) TotWalkersNew = int(TotWalkers) call end_iter_stats(TotWalkersNew) ! for semistochastic method, we add in the core -> core spawns ! if(tSemiStochastic) call deterministic_annihilation(iter_data_fciqmc) call AnnihilateSpawnedParts(spawnBufSize, TotWalkersNew, iter_data_fciqmc, err) ! Updating the statistics is usually done in the annihilation, but since we ! explicitly carry out the annihilation, this has to be included explicitly ! (We can not use DirectAnnihilation because we need the communicated spawnedParts ! in between to update delta_psi) call CalcHashTableStats(TotWalkersNew, iter_data_fciqmc) TotWalkers = TotWalkersNew end subroutine perform_verlet_iteration