| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fcimc_iter_data) | :: | iter_data |
subroutine collate_iter_data(iter_data) type(fcimc_iter_data) :: iter_data logical :: ltmp character(len=*), parameter :: this_routine = 'collate_iter_data' ! We should update tau searching if it is enabled, or if it has been ! enabled, and now tau is outside the range acceptable for tau ! searching if (t_scale_tau_to_death .and. tau_search_method == possible_tau_search_methods%OFF) then call MPIAllLORLogical(scale_tau_to_death_triggered, ltmp) scale_tau_to_death_triggered = ltmp end if ! for now with the new tau-search also update tau in variable shift ! mode.. if (.not. tFillingStochRDMOnFly) then if (tau_search_method == possible_tau_search_methods%CONVENTIONAL) then call update_tau() else if (tau_search_method == possible_tau_search_methods%HISTOGRAMMING) then call update_tau_hist() else if (scale_tau_to_death_triggered) then ASSERT(tau_search_method == possible_tau_search_methods%OFF) ASSERT(t_scale_tau_to_death) call scale_tau_to_death() end if end if ! quick fix for the double occupancy: if (t_calc_double_occ_av) then ! sum up the squared norm after shift has set in TODO ! and use the mean value if multiple runs are used ! still thinking about if i only want to calc it after ! equilibration sum_norm_psi_squared = sum_norm_psi_squared + & sum(all_norm_psi_squared) / real(inum_runs, dp) ! and also sum up the double occupancy: sum_double_occ = sum_double_occ + all_inst_double_occ end if #ifdef DEBUG_ if (.not. tfirst_cycle) then ! realtime case is handled seperately with the check_update_growth function ! as each RK step has to be monitored separately ! Write this 'ASSERTROOT' out explicitly to avoid line lengths problems if ((iProcIndex == root) .and. .not. tSpinProject .and. .not. tTrialShift .and. & all(abs(iter_data%update_growth_tot - (AllTotParts - AllTotPartsOld)) > 1.0e-5)) then write(stderr, *) "update_growth: ", iter_data%update_growth_tot write(stderr, *) "AllTotParts: ", AllTotParts write(stderr, *) "AllTotPartsOld: ", AllTotPartsOld call stop_all(this_routine, & "Assertation failed: all(iter_data%update_growth_tot.eq.AllTotParts-AllTotPartsOld)") end if end if #endif end subroutine collate_iter_data