DNDSR 0.2.1
Distributed Numeric Data Structure for CFV
Loading...
Searching...
No Matches
DNDS::Geom::MeshConnectivity Struct Reference

#include <MeshConnectivity.hpp>

Collaboration diagram for DNDS::Geom::MeshConnectivity:
[legend]

Public Member Functions

void registerAdj (AdjKind kind, ssp< AdjVariant > adjPtr)
 
template<class TPair >
void registerAdj (AdjKind kind, TPair &pair)
 
template<class TPair >
void registerAdj (AdjKind kind, const TPair &pair)
 
template<class TPair >
void registerAdj (AdjKind kind, AdjPairTracked< TPair > &pair)
 Overload for AdjPairTracked<TPair>: unwrap to base TPair.
 
template<class TPair >
void registerAdj (AdjKind kind, const AdjPairTracked< TPair > &pair)
 Const overload for AdjPairTracked<TPair>.
 
void registerGlobalMapping (EntityKind kind, const ssp< GlobalOffsetsMapping > &gm)
 Register a GlobalOffsetsMapping for an EntityKind.
 
ssp< AdjVariantresolveAdj (AdjKind kind) const
 
const ssp< GlobalOffsetsMapping > & getGlobalMapping (EntityKind kind) const
 
bool hasAdj (AdjKind kind) const
 Check whether an AdjKind is registered.
 
ConeAdjaddCone (int fromDepth, int toDepth)
 
ConeAdjfindCone (int fromDepth, int toDepth)
 Find a cone by (fromDepth, toDepth). Returns nullptr if not found.
 
const ConeAdjfindCone (int fromDepth, int toDepth) const
 
bool hasCone (int fromDepth, int toDepth) const
 
SupportAdjaddSupport (int fromDepth, int toDepth)
 
SupportAdjfindSupport (int fromDepth, int toDepth)
 Find a support by (fromDepth, toDepth). Returns nullptr if not found.
 
const SupportAdjfindSupport (int fromDepth, int toDepth) const
 
bool hasSupport (int fromDepth, int toDepth) const
 
GhostResult evaluateGhostTree (const CompiledGhostTree &tree, const MPIInfo &mpi) const
 

Static Public Member Functions

template<rowsize cone_rs = NonUniformSize>
static tAdjPair Inverse (const ArrayAdjacencyPair< cone_rs > &cone, index nToLocal, const MPIInfo &mpi, const std::function< index(index)> &fromLocal2Global, const std::function< index(index)> &toLocal2Global, const ssp< GlobalOffsetsMapping > &toGlobalMapping)
 
template<rowsize rs_AB = NonUniformSize, rowsize rs_BC = NonUniformSize, rowsize out_rs = NonUniformSize>
static ArrayAdjacencyPair< out_rs > Compose (const ArrayAdjacencyPair< rs_AB > &AB, const ArrayAdjacencyPair< rs_BC > &BC, index nALocal, const std::unordered_map< index, index > &bGlobal2Local, const std::function< index(index)> &aLocal2Global, bool removeSelf=false)
 
template<rowsize rs_AB = NonUniformSize, rowsize rs_BC = NonUniformSize, rowsize out_rs = NonUniformSize, class Predicate = SharedCountPredicate>
static ArrayAdjacencyPair< out_rs > ComposeFiltered (const ArrayAdjacencyPair< rs_AB > &AB, const ArrayAdjacencyPair< rs_BC > &BC, index nALocal, const std::unordered_map< index, index > &bGlobal2Local, const std::function< index(index)> &aLocal2Global, Predicate &&pred, const std::function< bool(index aLocal, index cGlobal, const std::vector< index > &sharedBGlobals)> &matchExtra=nullptr)
 
template<rowsize p2n_rs = NonUniformSize>
static InterpolateResult Interpolate (const ArrayAdjacencyPair< p2n_rs > &parent2node, const SubEntityQuery &query, index nParent, index nNode, const MPIInfo &mpi)
 
template<rowsize p2n_rs = NonUniformSize>
static InterpolateDistributedResult InterpolateDistributed (const ArrayAdjacencyPair< p2n_rs > &parent2node, const OffsetAscendIndexMapping &parentGhostMapping, const SubEntityQuery &query, index nLocalParents, index nTotalParents, index nNode, const OwnershipResolver2 &resolver, const OffsetAscendIndexMapping &nodeGhostMapping, const MPIInfo &mpi)
 
template<rowsize p2n_rs = NonUniformSize, rowsize e2p_rs = NonUniformSize>
static InterpolateGlobalResultT< e2p_rs > InterpolateGlobal (const ArrayAdjacencyPair< p2n_rs > &parent2node, const tPbiPair &parent2nodePbi, const OffsetAscendIndexMapping &parentGhostMapping, const GlobalOffsetsMapping &parentGlobalMapping, const OffsetAscendIndexMapping &nodeGhostMapping, const SubEntityQueryPbi &query, index nLocalParents, index nTotalParents, index nNode, const OwnershipResolverMulti &resolver, const MPIInfo &mpi)
 

Public Attributes

int meshDim {0}
 
std::vector< ConeAdjcones
 
std::vector< SupportAdjsupports
 
std::unordered_map< AdjKind, ssp< AdjVariant >, AdjKindHashadjRegistry
 
std::unordered_map< EntityKind, ssp< GlobalOffsetsMapping > > globalMappings
 

Detailed Description

Manages the layered DAG of mesh adjacency relations.

Cones (downward adjacencies) and supports (upward adjacencies) are stored in separate vectors. Each is identified by a (fromDepth, toDepth) pair using dynamic depth tags (e.g., (dim, 0) for cell→node).

Adjacency data is stored via ssp<AdjVariant> for shared ownership. Both the DAG's ConeAdj/SupportAdj and the legacy mesh members can share the same underlying arrays (shallow copy of ssp<Array> pointers).

The adjacency registry (adjRegistry) maps AdjKind tags to ssp<AdjVariant> for use by the ghost traversal system. No raw pointers. Only a restricted set of adjacencies may be registered:

  • Direct cones/supports (inter-level, e.g., Cell2Node, Node2Cell)
  • Intra-level adjacencies via Node or Face (e.g., Cell2Cell, Cell2CellFace) More complex composed adjacencies are NOT stored in the registry.

Definition at line 835 of file MeshConnectivity.hpp.

Member Function Documentation

◆ addCone()

ConeAdj & DNDS::Geom::MeshConnectivity::addCone ( int  fromDepth,
int  toDepth 
)

Add a new cone for (fromDepth, toDepth). Returns reference. Asserts no duplicate exists.

Definition at line 62 of file MeshConnectivity.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ addSupport()

SupportAdj & DNDS::Geom::MeshConnectivity::addSupport ( int  fromDepth,
int  toDepth 
)

Add a new support for (fromDepth, toDepth). Returns reference. Asserts no duplicate exists.

Definition at line 95 of file MeshConnectivity.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Compose()

template<rowsize rs_AB, rowsize rs_BC, rowsize out_rs>
ArrayAdjacencyPair< out_rs > DNDS::Geom::MeshConnectivity::Compose ( const ArrayAdjacencyPair< rs_AB > &  AB,
const ArrayAdjacencyPair< rs_BC > &  BC,
index  nALocal,
const std::unordered_map< index, index > &  bGlobal2Local,
const std::function< index(index)> &  aLocal2Global,
bool  removeSelf = false 
)
static

Compose two adjacencies: A→B + B→C → A→C (delegates to ComposeFiltered with SharedCountPredicate{1}).

Template Parameters
rs_ABRow-size of AB adjacency.
rs_BCRow-size of BC adjacency.
out_rsRow-size of output (NonUniformSize or fixed).

Definition at line 1352 of file MeshConnectivity.hpp.

◆ ComposeFiltered()

template<rowsize rs_AB, rowsize rs_BC, rowsize out_rs, class Predicate >
ArrayAdjacencyPair< out_rs > DNDS::Geom::MeshConnectivity::ComposeFiltered ( const ArrayAdjacencyPair< rs_AB > &  AB,
const ArrayAdjacencyPair< rs_BC > &  BC,
index  nALocal,
const std::unordered_map< index, index > &  bGlobal2Local,
const std::function< index(index)> &  aLocal2Global,
Predicate &&  pred,
const std::function< bool(index aLocal, index cGlobal, const std::vector< index > &sharedBGlobals)> &  matchExtra = nullptr 
)
static

Compose two adjacencies with on-the-fly predicate filtering.

For each row a in AB, iterates b in AB[a], collects c in BC[b]. Counts shared B-entities per candidate, applies predicate.

Ghost prerequisite

BC must contain (father+son) all B-entities referenced by AB. The caller must ghost-pull BC for every global B-index that appears in any row of AB. The bGlobal2Local map must cover all such B-globals. If a B-global from AB is not in bGlobal2Local, the method asserts (fatal error indicating incomplete ghost pull).

Typical pattern: before calling ComposeFiltered, the caller builds BC (e.g., node2cell via Inverse), then ghost-pulls it for all off-rank B-entities referenced by local AB rows.

Template Parameters
rs_ABRow-size of AB adjacency.
rs_BCRow-size of BC adjacency.
PredicatePredicate type.
Parameters
ABA → B (father only, global B indices).
BCB → C (father+son, global C indices).
nALocalNumber of local A-entities.
bGlobal2LocalMaps global B-index to local-appended index in BC. Must contain every B-global that appears in AB.
aLocal2GlobalMaps local A-index to global A-index.
predPredicate(a_global, c_global, nShared) → keep?
matchExtraOptional second predicate called after pred passes. Receives (aLocal, cGlobal, sharedBGlobals) where sharedBGlobals is the list of B-entities through which A and C are connected. If set and returns false, the (A, C) pair is rejected. Used for periodic pbi filtering.
Returns
A → C adjacency, father-only. Variable or fixed-width depending on out_rs.
Template Parameters
out_rsRow-size of output (NonUniformSize = variable, or fixed: rows shorter than out_rs are padded with UnInitIndex, rows longer trigger assert).

Definition at line 1252 of file MeshConnectivity.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ evaluateGhostTree()

GhostResult DNDS::Geom::MeshConnectivity::evaluateGhostTree ( const CompiledGhostTree tree,
const MPIInfo mpi 
) const

Evaluate a compiled ghost tree to determine which entities to ghost.

BFS level-by-level evaluation with scratch pulls between levels. Produces a GhostResult containing per-EntityKind ghost index sets (union of all COLLECT nodes).

Parameters
treeCompiled ghost tree (from CompiledGhostTree::compile).
mpiMPI communicator.
Returns
Per-EntityKind sorted, deduplicated ghost indices.

Preconditions:

  • All AdjKind values in the tree must be registered via registerAdj().
  • The registered tAdjPair arrays must be in Adj_PointToGlobal state.
  • GlobalOffsetsMapping must be available for entity kinds at root level (to determine ownership).

Definition at line 378 of file MeshConnectivity_Ghost.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ findCone() [1/2]

ConeAdj * DNDS::Geom::MeshConnectivity::findCone ( int  fromDepth,
int  toDepth 
)

Find a cone by (fromDepth, toDepth). Returns nullptr if not found.

Definition at line 70 of file MeshConnectivity.cpp.

Here is the caller graph for this function:

◆ findCone() [2/2]

const ConeAdj * DNDS::Geom::MeshConnectivity::findCone ( int  fromDepth,
int  toDepth 
) const

Definition at line 78 of file MeshConnectivity.cpp.

◆ findSupport() [1/2]

SupportAdj * DNDS::Geom::MeshConnectivity::findSupport ( int  fromDepth,
int  toDepth 
)

Find a support by (fromDepth, toDepth). Returns nullptr if not found.

Definition at line 103 of file MeshConnectivity.cpp.

Here is the caller graph for this function:

◆ findSupport() [2/2]

const SupportAdj * DNDS::Geom::MeshConnectivity::findSupport ( int  fromDepth,
int  toDepth 
) const

Definition at line 111 of file MeshConnectivity.cpp.

◆ getGlobalMapping()

const ssp< GlobalOffsetsMapping > & DNDS::Geom::MeshConnectivity::getGlobalMapping ( EntityKind  kind) const

Resolve a GlobalOffsetsMapping for an EntityKind. Returns nullptr if not registered.

Definition at line 44 of file MeshConnectivity.cpp.

◆ hasAdj()

bool DNDS::Geom::MeshConnectivity::hasAdj ( AdjKind  kind) const

Check whether an AdjKind is registered.

Definition at line 53 of file MeshConnectivity.cpp.

Here is the caller graph for this function:

◆ hasCone()

bool DNDS::Geom::MeshConnectivity::hasCone ( int  fromDepth,
int  toDepth 
) const

Definition at line 86 of file MeshConnectivity.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hasSupport()

bool DNDS::Geom::MeshConnectivity::hasSupport ( int  fromDepth,
int  toDepth 
) const

Definition at line 119 of file MeshConnectivity.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Interpolate()

template<rowsize p2n_rs>
InterpolateResult DNDS::Geom::MeshConnectivity::Interpolate ( const ArrayAdjacencyPair< p2n_rs > &  parent2node,
const SubEntityQuery query,
index  nParent,
index  nNode,
const MPIInfo mpi 
)
static

Extract sub-entities (faces or edges) from parent→node connectivity. This is a local-only operation — no MPI communication.

Enumerates and deduplicates B entities within a contiguous block of parent A entities (typically local + ghost cells). Produces local-indexed parent→entity, entity→node, and entity→parent adjacencies.

Used internally by InterpolateGlobal (Step 1). Can also be used directly for rank-local analysis or testing.

Deduplication

Two sub-entities are considered the same B entity if:

  1. They have the same typeTag (from SubEntityDesc).
  2. Their sorted vertex sets (first nVertices nodes) are equal.
  3. query.matchExtra (if set) returns true — used for periodic meshes to implement the collaborating pbi check.

Ordering guarantees

  • parent2entity[iParent][j]: slot j = sub-entity j per query callbacks.
  • entity2node[iEnt]: nodes in first-discovered parent's extraction order.
  • entity2parent[iEnt]: parents in discovery order (first parent first).

Ghost note

The caller typically passes all A parents (father+son) so that shared sub-entities are deduplicated within the local view. If ghost A parents are omitted, shared B entities at rank boundaries will appear as separate single-sided entities.

Pbi note

InterpolateLocal does not handle pbi. parent2entityPbi in the result is left empty. InterpolateGlobal computes it in Step 2b after calling InterpolateLocal, using the parent2nodePbi input and extractPbi callback.

Parameters
parent2nodeParent → nodes (father-only or father+son). Accessed via operator[] for indices [0, nParent).
Template Parameters
p2n_rsRow-size of parent2node (NonUniformSize or fixed).
Parameters
queryUser-provided callbacks describing sub-entity topology.
nParentNumber of parent entities to process.
nNodeTotal number of nodes (for reverse-index sizing).
mpiMPI info (only for array allocation, no communication).
Returns
InterpolateResult with all adjacencies (local indices).

Definition at line 14 of file MeshConnectivity_Interpolate.hxx.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ InterpolateDistributed()

template<rowsize p2n_rs>
InterpolateDistributedResult DNDS::Geom::MeshConnectivity::InterpolateDistributed ( const ArrayAdjacencyPair< p2n_rs > &  parent2node,
const OffsetAscendIndexMapping parentGhostMapping,
const SubEntityQuery query,
index  nLocalParents,
index  nTotalParents,
index  nNode,
const OwnershipResolver2 resolver,
const OffsetAscendIndexMapping nodeGhostMapping,
const MPIInfo mpi 
)
static

Legacy distributed interpolation (2-parent only, no pbi output).

Superseded by InterpolateGlobal for production use. Retained for backward compatibility. Limitations vs InterpolateGlobal:

  • entity2parent is fixed-2 (tAdj2Pair), cannot represent N-parent edges.
  • No parent2entityPbi output.
  • No entity2nodePbi output.
  • Uses push-based ghost exchange (not pull via evaluateGhostTree).

Extends Interpolate by:

  1. Calling the local Interpolate on all parents (local + ghost).
  2. Using the OwnershipResolver callback to decide which rank owns each entity.
  3. Compacting owned entities and assigning global IDs.
  4. Push-based ghost exchange so non-owning ranks receive the entities they need.
  5. Resolving parent2entity so all entries (for both local and ghost parents) use local-appended entity indices.
Parameters
parent2nodeCSR: parent → nodes (father + son).
parentGhostMappingGhost mapping for parent entities (for global index lookups). Must map local-appended index to global parent index.
querySub-entity topology callbacks.
nLocalParentsNumber of local (owned/father) parents.
nTotalParentsTotal parents (father + son).
nNodeTotal number of nodes.
resolverOwnership callback.
nodeGhostMappingGhost mapping for nodes (local-appended → global). Used to convert entity2node to global before push and back to local on the receiver.
mpiMPI communicator.
Returns
InterpolateDistributedResult with owned + ghost entities.

Definition at line 176 of file MeshConnectivity_Interpolate.hxx.

Here is the call graph for this function:

◆ InterpolateGlobal()

template<rowsize p2n_rs, rowsize e2p_rs>
InterpolateGlobalResultT< e2p_rs > DNDS::Geom::MeshConnectivity::InterpolateGlobal ( const ArrayAdjacencyPair< p2n_rs > &  parent2node,
const tPbiPair parent2nodePbi,
const OffsetAscendIndexMapping parentGhostMapping,
const GlobalOffsetsMapping parentGlobalMapping,
const OffsetAscendIndexMapping nodeGhostMapping,
const SubEntityQueryPbi query,
index  nLocalParents,
index  nTotalParents,
index  nNode,
const OwnershipResolverMulti resolver,
const MPIInfo mpi 
)
static

Distributed interpolation producing globally-unique B entities.

Given an A→C cone with pbi (where A is ghosted via A→C→A), creates globally-unique B entities (faces or edges). B entities are created only from local (non-ghost) A parents. Ghost A parents are used solely for deduplication — when a local A's sub-entity shares C-vertices with a ghost A's sub-entity, they are recognized as the same B entity.

Ghost prerequisites (caller's responsibility)

A must be ghosted by at least the A→C→A 1-hop node-neighbor set. Every A entity sharing at least one C-vertex with a local A must be present as a ghost. This guarantees:

  • All B entities at rank boundaries are locally deduplicated.
  • entity2parent is complete (all parents of any locally-visible B are enumerated).

If the ghost set is insufficient, shared B entities across ranks will appear as single-sided. This is a silent error the method cannot detect (boundary faces/edges are legitimately single-sided).

C (nodes) must be ghosted to cover all C-vertices referenced by ghost A parents. Typically guaranteed by the A→C→A ghost chain.

Algorithm

  1. Local enumeration + dedup (InterpolateLocal) on all A (father+son).
  2. Extract B→C pbi via extractPbi. Compute parent2entityPbi (uniform XOR per matched node between each parent's view and entity's stored first-parent view).
  3. Classify: fully local → owned; fully ghost → discard; straddling → ownership resolver callback.
  4. Compact owned entities, convert indices to global.
  5. Assign global B indices via createFatherGlobalMapping.
  6. Push (globalA, globalB, subIdx) triplets to peer ranks so they can fill parent2entity. parent2entityPbi is NOT pushed — it is a local property of (cell, slot) computed entirely from cell2nodePbi and entity2nodePbi.

Ghost B entities are NOT produced. Use evaluateGhostTree(A→A2B→B) after this call to pull them.

Ordering guarantees

parent2entity[iParent][j] corresponds to sub-entity j per element topology (ObtainFace(j) / ObtainEdge(j)). entity2node stores nodes in the first- discovered parent's extraction order. All pbi arrays are parallel to their adjacency counterparts.

Parameters
parent2nodeCSR: A → C (father+son, local C indices).
parent2nodePbiA → C pbi (father+son). Pass empty pair if not periodic.
parentGhostMappingGhost mapping for A (local-appended → global).
parentGlobalMappingGlobal offsets mapping for A (for rank lookup).
nodeGhostMappingGhost mapping for C (local-appended → global).
querySub-entity topology + pbi extraction callbacks.
nLocalParentsNumber of owned A.
nTotalParentsTotal A (father + son).
nNodeTotal C (father + son).
resolverN-parent ownership callback.
mpiMPI communicator.
Returns
InterpolateGlobalResultT<e2p_rs> with owned B entities in global indices.
Template Parameters
p2n_rsRow-size of parent2node input.
e2p_rsRow-size of entity2parent output (NonUniformSize = variable, 2 = fixed for faces). Fixed-width rows shorter than e2p_rs are padded with UnInitIndex.

Definition at line 442 of file MeshConnectivity_Interpolate.hxx.

Here is the call graph for this function:

◆ Inverse()

template<rowsize cone_rs>
tAdjPair DNDS::Geom::MeshConnectivity::Inverse ( const ArrayAdjacencyPair< cone_rs > &  cone,
index  nToLocal,
const MPIInfo mpi,
const std::function< index(index)> &  fromLocal2Global,
const std::function< index(index)> &  toLocal2Global,
const ssp< GlobalOffsetsMapping > &  toGlobalMapping 
)
static

Invert a cone to get its support (distributed, MPI push-back).

Given a cone adjacency A→B (for each A-entity, list of B-entities), compute the support adjacency B→A (for each B-entity, list of A-entities that reference it). Result is globally complete via MPI push-back.

The input cone can be any row-size (fixed or variable). The output support is always variable-width (tAdjPair) because fan-in is not known at compile time.

Template Parameters
cone_rsRow-size of the input cone (NonUniformSize or fixed).
Parameters
coneAdjacency: from → to (global indices).
nToLocalLocal number of "to" entities on this rank.
mpiMPI communicator.
fromLocal2GlobalMaps local from-entity index to global index.
toLocal2GlobalMaps local to-entity index to global index.
toGlobalMappingGlobal mapping for to-entities (ownership lookup).
Returns
CSR adjacency: to → from (global, complete). Father-only.

Definition at line 1370 of file MeshConnectivity.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ registerAdj() [1/5]

template<class TPair >
void DNDS::Geom::MeshConnectivity::registerAdj ( AdjKind  kind,
AdjPairTracked< TPair > &  pair 
)
inline

Overload for AdjPairTracked<TPair>: unwrap to base TPair.

Definition at line 888 of file MeshConnectivity.hpp.

Here is the call graph for this function:

◆ registerAdj() [2/5]

template<class TPair >
void DNDS::Geom::MeshConnectivity::registerAdj ( AdjKind  kind,
const AdjPairTracked< TPair > &  pair 
)
inline

Const overload for AdjPairTracked<TPair>.

Definition at line 895 of file MeshConnectivity.hpp.

Here is the call graph for this function:

◆ registerAdj() [3/5]

template<class TPair >
void DNDS::Geom::MeshConnectivity::registerAdj ( AdjKind  kind,
const TPair &  pair 
)
inline

Const overload: same as above but accepts a const reference. Safe because we only copy the father shared_ptr (no mutation).

Definition at line 878 of file MeshConnectivity.hpp.

Here is the call graph for this function:

◆ registerAdj() [4/5]

void DNDS::Geom::MeshConnectivity::registerAdj ( AdjKind  kind,
ssp< AdjVariant adjPtr 
)

Register an adjacency for ghost traversal. The ssp shares ownership with the ConeAdj/SupportAdj that holds the data. Overwrites any existing registration for the same AdjKind.

Definition at line 28 of file MeshConnectivity.cpp.

Here is the caller graph for this function:

◆ registerAdj() [5/5]

template<class TPair >
void DNDS::Geom::MeshConnectivity::registerAdj ( AdjKind  kind,
TPair &  pair 
)
inline

Convenience: register a specific pair type (tAdjPair, tAdj2Pair, etc.). Stores a father-only shallow reference. The evaluator creates its own scratch transformers internally for any ghost data it needs.

Definition at line 865 of file MeshConnectivity.hpp.

Here is the call graph for this function:

◆ registerGlobalMapping()

void DNDS::Geom::MeshConnectivity::registerGlobalMapping ( EntityKind  kind,
const ssp< GlobalOffsetsMapping > &  gm 
)

Register a GlobalOffsetsMapping for an EntityKind.

Definition at line 33 of file MeshConnectivity.cpp.

Here is the caller graph for this function:

◆ resolveAdj()

ssp< AdjVariant > DNDS::Geom::MeshConnectivity::resolveAdj ( AdjKind  kind) const

Resolve an AdjKind to the registered AdjVariant. Returns nullptr if not registered.

Definition at line 38 of file MeshConnectivity.cpp.

Member Data Documentation

◆ adjRegistry

std::unordered_map<AdjKind, ssp<AdjVariant>, AdjKindHash> DNDS::Geom::MeshConnectivity::adjRegistry

Maps AdjKind to the shared AdjVariant used by ghost chain evaluation. Only direct cones/supports and intra-level (via Node/Face) adjacencies are allowed. Registered via registerAdj(). Owns shared references (ssp) — no raw pointers.

Definition at line 849 of file MeshConnectivity.hpp.

◆ cones

std::vector<ConeAdj> DNDS::Geom::MeshConnectivity::cones

Definition at line 838 of file MeshConnectivity.hpp.

◆ globalMappings

std::unordered_map<EntityKind, ssp<GlobalOffsetsMapping> > DNDS::Geom::MeshConnectivity::globalMappings

Per-EntityKind global offsets mapping (for ownership determination). Must be registered for every EntityKind that appears as a root anchor or COLLECT target in any ghost chain.

Definition at line 854 of file MeshConnectivity.hpp.

◆ meshDim

int DNDS::Geom::MeshConnectivity::meshDim {0}

Definition at line 837 of file MeshConnectivity.hpp.

◆ supports

std::vector<SupportAdj> DNDS::Geom::MeshConnectivity::supports

Definition at line 839 of file MeshConnectivity.hpp.


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