SpECTRE  v2024.04.12
intrp::Vars::Info< VolumeDim, TagList > Struct Template Reference

Holds a Variables interpolated onto a list of points, and information about those points, for a local Interpolator. More...

#include <InterpolatedVars.hpp>

Public Attributes

std::vector< std::optional< IdPair< domain::BlockId, tnsr::I< double, VolumeDim, typename ::Frame::BlockLogical > > > > 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 Elements 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 Elements send data to this Interpolator.
 
std::unordered_set< ElementId< VolumeDim > > interpolation_is_done_for_these_elements {}
 Holds the ElementIds of Elements for which interpolation has already been done for this Info.
 

Detailed Description

template<size_t VolumeDim, typename TagList>
struct intrp::Vars::Info< VolumeDim, TagList >

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.

Member Data Documentation

◆ block_coord_holders

template<size_t VolumeDim, typename TagList >
std::vector<std::optional< IdPair<domain::BlockId, tnsr::I<double, VolumeDim, typename ::Frame::BlockLogical> > > > 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 Elements. 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 Elements 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 Elements).


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