|
SpECTRE
v2025.08.19
|
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. | |
Holds the ylm::Strahlkorper and associated quantities for a single FastFlow iteration.
| 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.
If an element of the vector is std::nullopt, then that point is outside the domain.
| 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.
The grid points inside are indexed according to block_coord_holders.
| 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.