SpECTRE  v2026.09.05
Loading...
Searching...
No Matches
ah::Storage::SingleTimeStorage< Fr > Struct Template Reference

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.

Detailed Description

template<typename Fr>
struct ah::Storage::SingleTimeStorage< Fr >

Holds all data necessary for a single horizon find.

Details

This includes volume variables which persist for the entire horizon find, and also interpolated variables that are updated for each iteration.

Member Data Documentation

◆ dependency

template<typename Fr>
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.

Details

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.

◆ element_order

template<typename Fr>
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.


The documentation for this struct was generated from the following file:
  • src/ParallelAlgorithms/ApparentHorizonFinder/Storage.hpp