Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <optional> 7 : #include <set> 8 : #include <unordered_map> 9 : 10 : #include "DataStructures/LinkedMessageId.hpp" 11 : #include "ParallelAlgorithms/ApparentHorizonFinder/FastFlow.hpp" 12 : #include "ParallelAlgorithms/ApparentHorizonFinder/Storage.hpp" 13 : #include "Utilities/Gsl.hpp" 14 : 15 : namespace ah { 16 : /*! 17 : * \brief Cleans up the horizon finder after a horizon find has finished 18 : * 19 : * \details Removes the current time from the storage map, adds the current time 20 : * to the completed times, and then resets the current time. If the completed 21 : * times have more than 1000 entries, this will limit the size to 1000. 22 : */ 23 : template <typename Fr> 24 1 : void clean_up_horizon_finder( 25 : gsl::not_null<std::optional<LinkedMessageId<double>>*> 26 : current_time_optional, 27 : gsl::not_null<std::unordered_map<LinkedMessageId<double>, 28 : ah::Storage::SingleTimeStorage<Fr>>*> 29 : all_storage, 30 : gsl::not_null<std::set<LinkedMessageId<double>>*> completed_times, 31 : gsl::not_null<FastFlow*> fast_flow); 32 : } // namespace ah