save_current_dets Subroutine

public subroutine save_current_dets()

Arguments

None

Contents

Source Code


Source Code

    subroutine save_current_dets()
        use real_time_data, only: TotPartsStorage
        ! routine to copy the currentDets array and all the associated
        ! pointers an hashtable related quantities to the 2nd temporary
        ! list, from which the first spawn and y(n) + k1/2 addition is done
        ! and the k2 spawing list is created to then use CurrentDets to go to
        ! the next time-step y(n+1) = y(n) + k2
        character(*), parameter :: this_routine = "save_current_dets"

        ! save the WalkVecDets variable, i think thats the only necessary
        ! variable, the pointers don't count
        temp_det_list(:, 1:TotWalkers) = WalkVecDets(:, 1:TotWalkers)

        ! for now also store the pointer, but thats not needed i guess
        temp_det_pointer => temp_det_list

        ! and the freeslot.. although this one gets reinitialized to 0
        ! every iteration or not? yeah it is.. so i only have to reset it
        ! twice in the rt-fciqmc before the y(n) + k2 combination
        ! do that in the reload_current_dets routine!
        ! same with n_determ_states var.

        ! also have to save current number of determinants! (maybe totparts too?)
        temp_totWalkers = TotWalkers

        ! And save the old TotParts value, as this might have changed and iter_data is reset
        ! (some weird scenario in which CalcHashTableStats is called at the end of the
        ! time-step and and then modifies both TotParts and iter_data correctly, but iter_data
        ! is reset at the beginning of the iteration, so TotParts also has to)
        TotPartsStorage = TotParts

    end subroutine save_current_dets