|
SpECTRE
v2026.09.05
|
Holds all data necessary for a single horizon find. More...
#include <Storage.hpp>
Public Member Functions | |
| void | pup (PUP::er &p) |
Public Attributes | |
| std::unordered_map< ElementId< 3 >, VolumeVariables< Fr > > | all_volume_variables |
| Map between ElementIds and the volume variables from that element. | |
| std::vector< ElementId< 3 > > | element_order {} |
| Elements in which we have found points to interpolate to in previous iterations, to try first before searching all elements. | |
| Iteration< Fr > | current_iteration |
| The Iteration data for the current fast flow iteration. | |
| ylm::Strahlkorper< Fr > | previous_iteration_surface |
| The previous iteration surface, used if interpolation fails. | |
| Destination | destination {} |
| The ah::Destination for this horizon find. | |
| std::optional< std::string > | dependency = std::nullopt |
| The dependency that was sent along with the volume data for this horizon find, if any. | |
| bool | time_is_ready = false |
| Whether we have checked if the functions of time are up to date for this horizon find. | |
Holds all data necessary for a single horizon find.
This includes volume variables which persist for the entire horizon find, and also interpolated variables that are updated for each iteration.
| std::optional<std::string> ah::Storage::SingleTimeStorage< Fr >::dependency = std::nullopt |
The dependency that was sent along with the volume data for this horizon find, if any.
This is copied into ah::Tags::Dependency right before the callbacks for this horizon find are invoked, on success as well as on failure, so that e.g. ah::callbacks::SendDependencyToObserverWriter can tell the ObserverWriter whether to write or drop the volume data it holds for this time.
| std::vector<ElementId<3> > ah::Storage::SingleTimeStorage< Fr >::element_order {} |
Elements in which we have found points to interpolate to in previous iterations, to try first before searching all elements.
This is only a performance optimization. The interpolated values don't depend on the order because points that lie directly on shared element boundaries are always assigned to the same element (see element_contains). Otherwise, the interpolated values at these points would fluctuate with the order in which element data arrives, which can prevent convergence (see https://github.com/sxs-collaboration/spectre/issues/3899) and makes simulations nondeterministic.