core
Shared MPI block decomposition + asynchronous ghost-layer exchange (header-only C++20)
Loading...
Searching...
No Matches
peclet::core::amr::DistributedOctree< Dim, Bits >::FaceGatherPlan Struct Reference

Static topology of the face-neighbour gather: which out-slots are filled from a local leaf (directSlot/directLeaf) and which must be gathered from an owner (remoteCoords at remoteSlot). More...

#include <distributed_octree.hpp>

Public Attributes

std::vector< IndexdirectSlot
 
std::vector< IndexdirectLeaf
 out[directSlot[k]] = field[directLeaf[k]]
 
std::vector< std::array< Coord, Dim > > remoteCoords
 owner-gathered coords (incl. owner==rank)
 
std::vector< IndexremoteSlot
 out[remoteSlot[k]] = covered value
 
Index nFaces = 0
 local leaves * 2*Dim
 

Detailed Description

template<int Dim, unsigned Bits = (Dim == 2 ? 32u : (Dim == 3 ? 21u : 16u))>
struct peclet::core::amr::DistributedOctree< Dim, Bits >::FaceGatherPlan

Static topology of the face-neighbour gather: which out-slots are filled from a local leaf (directSlot/directLeaf) and which must be gathered from an owner (remoteCoords at remoteSlot).

This is the per-face neighborInfo classification, which depends only on the decomposition — not the field — so a matvec loop can build it once and reuse it (C1), mirroring how DistributedFvOperator caches its ghost coords. Slots left in neither list keep the sentinel (domain boundary / no neighbour). Invalidated by rebalance (rebuild after a decomposition change); the AMR solvers hold the decomposition fixed across a solve.

Definition at line 420 of file distributed_octree.hpp.

Member Data Documentation

◆ directSlot

template<int Dim, unsigned Bits = (Dim == 2 ? 32u : (Dim == 3 ? 21u : 16u))>
std::vector<Index> peclet::core::amr::DistributedOctree< Dim, Bits >::FaceGatherPlan::directSlot

◆ directLeaf

template<int Dim, unsigned Bits = (Dim == 2 ? 32u : (Dim == 3 ? 21u : 16u))>
std::vector<Index> peclet::core::amr::DistributedOctree< Dim, Bits >::FaceGatherPlan::directLeaf

out[directSlot[k]] = field[directLeaf[k]]

Definition at line 421 of file distributed_octree.hpp.

Referenced by peclet::core::amr::DistributedOctree< Dim, Bits >::buildFaceGatherPlan().

◆ remoteCoords

template<int Dim, unsigned Bits = (Dim == 2 ? 32u : (Dim == 3 ? 21u : 16u))>
std::vector<std::array<Coord, Dim> > peclet::core::amr::DistributedOctree< Dim, Bits >::FaceGatherPlan::remoteCoords

owner-gathered coords (incl. owner==rank)

Definition at line 423 of file distributed_octree.hpp.

Referenced by peclet::core::amr::DistributedOctree< Dim, Bits >::buildFaceGatherPlan().

◆ remoteSlot

template<int Dim, unsigned Bits = (Dim == 2 ? 32u : (Dim == 3 ? 21u : 16u))>
std::vector<Index> peclet::core::amr::DistributedOctree< Dim, Bits >::FaceGatherPlan::remoteSlot

out[remoteSlot[k]] = covered value

Definition at line 424 of file distributed_octree.hpp.

Referenced by peclet::core::amr::DistributedOctree< Dim, Bits >::buildFaceGatherPlan().

◆ nFaces

template<int Dim, unsigned Bits = (Dim == 2 ? 32u : (Dim == 3 ? 21u : 16u))>
Index peclet::core::amr::DistributedOctree< Dim, Bits >::FaceGatherPlan::nFaces = 0

local leaves * 2*Dim

Definition at line 425 of file distributed_octree.hpp.

Referenced by peclet::core::amr::DistributedOctree< Dim, Bits >::buildFaceGatherPlan().


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