SpECTRE
v2025.03.17
|
Holds a Variables
interpolated onto a list of points, and information about those points, for a local Interpolator
.
More...
#include <InterpolatedVars.hpp>
Public Member Functions | |
Info (std::vector< BlockLogicalCoords< VolumeDim > > block_coord_holders_in, const size_t iteration_in=0, std::vector< Variables< TagList > > vars_in={}, std::vector< std::vector< size_t > > global_offsets_in={}, std::unordered_set< ElementId< VolumeDim > > interpolation_is_done_for_these_elements_in={}) | |
Public Attributes | |
std::vector< BlockLogicalCoords< VolumeDim > > | block_coord_holders |
block_coord_holders holds the list of all points (in block logical coordinates) that need to be interpolated onto for a given InterpolationTarget . More... | |
size_t | iteration {0_st} |
If a target needs to send points in a specific order, it should also send along which iteration the block_coord_holders are for. That way they can be properly ordered in the Interpolator. | |
std::vector< Variables< TagList > > | vars {} |
vars holds the interpolated Variables on some subset of the points in block_coord_holders . The grid points inside vars are indexed according to global_offsets below. The size of vars changes as more Element s send data to this Interpolator . | |
std::vector< std::vector< size_t > > | global_offsets {} |
global_offsets[j][i] is the index into block_coord_holders that corresponds to the index i of the DataVector held in vars[j] . The size of global_offsets changes as more Element s send data to this Interpolator . | |
std::unordered_set< ElementId< VolumeDim > > | interpolation_is_done_for_these_elements {} |
Holds the ElementId s of Element s for which interpolation has already been done for this Info . | |
Holds a Variables
interpolated onto a list of points, and information about those points, for a local Interpolator
.
TagList
is a tmpl::list
of tags that go into the Variables
.
std::vector<BlockLogicalCoords<VolumeDim> > intrp::Vars::Info< VolumeDim, TagList >::block_coord_holders |
block_coord_holders
holds the list of all points (in block logical coordinates) that need to be interpolated onto for a given InterpolationTarget
.
The number of interpolated points for which results are stored in this Info
(in vars
and global_offsets
below) corresponds to only the subset of the points in block_coord_holders
that are contained in local Element
s. Moreover, the number of interpolated points stored in this Info
will change as more Elements
send data to this Interpolator
, and will be less than or equal to the size of block_coord_holders
even after all Element
s have sent their data (this is because this Info
lives only on a single core, and this core will have access only to the local Element
s).