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
|