SpECTRE  v2025.08.19
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. More...
 
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.
 
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

◆ 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 not only a performance optimization, but also important for robustness. If we try to interpolate from elements in a different order in each iteration, then points that lie directly on element boundaries can fluctuate in interpolated value, preventing convergence (see https://github.com/sxs-collaboration/spectre/issues/3899).


The documentation for this struct was generated from the following file: