SpECTRE  v2025.08.19
ah::Storage::Iteration< Fr > Struct Template Reference

Holds the ylm::Strahlkorper and associated quantities for a single FastFlow iteration. More...

#include <Storage.hpp>

Public Member Functions

bool interpolation_is_complete () const
 Whether all points in interpolated_vars have been filled.
 
void reset_for_next_iteration ()
 
void pup (PUP::er &p)
 

Public Attributes

ylm::Strahlkorper< Fr > strahlkorper
 The surface for this iteration.
 
std::optional< std::vector< BlockLogicalCoords< 3 > > > block_coord_holders
 Holds the list of all points (in block logical coordinates) that need to be interpolated onto. More...
 
Variables< ah::vars_to_interpolate_to_target< 3, Fr > > interpolated_vars {}
 Holds the interpolated Variables on the points in block_coord_holders. More...
 
std::vector< bool > indices_interpolated_to_thus_far {}
 Keeps track of the indices in interpolated_vars that have already been interpolated to.
 
std::unordered_set< ElementId< 3 > > intersecting_element_ids {}
 Holds the element IDs of all elements that intersect with the current iteration surface. Used to determine which elements will send data for the next horizon find.
 
std::vector< size_t > offsets_of_newly_interpolated_points {}
 Offsets of newly interpolated points in the overall tensor (used as memory buffer)
 
std::array< std::vector< double >, 3 > x_element_logical_of_newly_interpolated_points {}
 Logical coordinates of newly interpolated points (used as memory buffer) More...
 
std::vector< double > newly_interpolated_vars_buffer {}
 Buffer for newly interpolated variables (used as memory buffer)
 
size_t compute_coords_retries = 0
 How many times we've tried to compute the coordinates for this iteration.
 

Detailed Description

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

Holds the ylm::Strahlkorper and associated quantities for a single FastFlow iteration.

Member Data Documentation

◆ block_coord_holders

template<typename Fr >
std::optional<std::vector<BlockLogicalCoords<3> > > ah::Storage::Iteration< Fr >::block_coord_holders

Holds the list of all points (in block logical coordinates) that need to be interpolated onto.

Details

If an element of the vector is std::nullopt, then that point is outside the domain.

◆ interpolated_vars

template<typename Fr >
Variables<ah::vars_to_interpolate_to_target<3, Fr> > ah::Storage::Iteration< Fr >::interpolated_vars {}

Holds the interpolated Variables on the points in block_coord_holders.

Details

The grid points inside are indexed according to block_coord_holders.

◆ x_element_logical_of_newly_interpolated_points

template<typename Fr >
std::array<std::vector<double>, 3> ah::Storage::Iteration< Fr >::x_element_logical_of_newly_interpolated_points {}

Logical coordinates of newly interpolated points (used as memory buffer)

These std::vectors are used to reserve memory and then append points to them as we find them in an element. The memory is reused for each element. Then, a non-owning DataVector is created by pointing into this memory. That's why this is a std::array of std::vectors, not vice versa.


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