SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
LinearSolver::Schwarz::OverlapIterator Class Reference

Iterate over grid points in a region that extends partially into the volume. More...

#include <OverlapHelpers.hpp>

Public Member Functions

template<size_t Dim>
 OverlapIterator (const Index< Dim > &volume_extents, size_t overlap_extent, const Direction< Dim > &direction)
 operator bool () const
OverlapIteratoroperator++ ()
size_t volume_offset () const
 Offset into a DataVector that holds full volume data.
size_t overlap_offset () const
 Offset into a DataVector that holds data only on the overlap region.
void reset ()

Detailed Description

Iterate over grid points in a region that extends partially into the volume.

Here's an example how to use this iterator:

// Overlap region:
// + - - - + -xi->
// | X X O |
// | X X O |
// + - - - +
// v eta
const Index<2> volume_extents{{{3, 2}}};
const size_t overlap_extent = 2;
const auto direction = Direction<2>::lower_xi();
const std::array<size_t, 4> expected_volume_offsets{{0, 1, 3, 4}};
size_t i = 0;
for (OverlapIterator overlap_iterator{volume_extents, overlap_extent,
direction};
overlap_iterator; ++overlap_iterator) {
CHECK(overlap_iterator.volume_offset() ==
gsl::at(expected_volume_offsets, i));
CHECK(overlap_iterator.overlap_offset() == i);
++i;
}
CHECK(i == expected_volume_offsets.size());

The documentation for this class was generated from the following file:
  • src/ParallelAlgorithms/LinearSolver/Schwarz/OverlapHelpers.hpp