reload_current_dets Subroutine

public subroutine reload_current_dets()

Arguments

None

Contents

Source Code


Source Code

    subroutine reload_current_dets()
        ! routine to reload the saved y(n) CurrentDets array for the final
        ! y(n) + k/2 combination to move to the next time step y(n+1)
        ! have also to think about the death-step and annihilation step
        ! influences.. maybe have to write new death/born routines to split
        ! that from the spawned list creation..
        character(*), parameter :: this_routine = "reload_current_dets"

        ! copy the list
        WalkVecDets(:, 1:temp_totWalkers) = temp_det_list(:, 1:temp_totWalkers)

        ! and point to it
        CurrentDets => WalkVecDets

        ! also have to reset the number of determinants to the original
        ! value?!
        TotWalkers = temp_totWalkers

        ! and the hash
        ! cant just copy the hash-table like that have to associate all
        ! entries correctly
        ! here i 'just' have to reassign the original HashIndex with the
        ! stored CurrentDets list!
        call clear_hash_table(HashIndex)
        call fill_in_hash_table(HashIndex, nWalkerHashes, CurrentDets, &
                                int(TotWalkers), .true.)

        ! for correct load Balancin i also have to reset the the freeslot var.
        ! here i have to reset the freeslot values to the values after the
        ! first spawn loop, as the empty entries get determined there!
        ! and i only want to do an additional annihilation step to combine
        ! y(n) + k2
        ! also reload the positions of empty slots in the ensemble
        iStartFreeSlot = 1
        iEndFreeSlot = temp_iendfreeslot
        FreeSlot = temp_freeslot

        call reset_tot_parts()

    end subroutine reload_current_dets