DNDSR 0.2.1
Distributed Numeric Data Structure for CFV
Loading...
Searching...
No Matches
DNDS::Geom::InterpolateGlobalResultT< e2p_rs > Struct Template Reference

#include <MeshConnectivity.hpp>

Collaboration diagram for DNDS::Geom::InterpolateGlobalResultT< e2p_rs >:
[legend]

Public Attributes

tAdjPair parent2entity
 
tPbiPair parent2entityPbi
 
tAdjPair entity2node
 
ArrayAdjacencyPair< e2p_rs > entity2parent
 
tPbiPair entity2nodePbi
 
tElemInfoArrayPair entityElemInfo
 Per-B elem info. Father-only (owned B).
 
index nOwnedEntities {0}
 Number of owned B entities (father size).
 

Detailed Description

template<rowsize e2p_rs = NonUniformSize>
struct DNDS::Geom::InterpolateGlobalResultT< e2p_rs >

Result of distributed interpolation with globally-unique B entities.

Given A→C cone (global C indices, A is ghosted via A→C→A), creates globally-unique B entities (faces or edges) with ownership resolution.

Outputs

  • parent2entity: A→B mapping in global B indices. Father = local A, son = ghost A. Slot ordering matches element topology: slot j is face/edge j as defined by Element::ObtainFace(j)/ObtainEdge(j). Some son entries may be UnInitIndex (fully-ghost B not resolved by the push protocol — resolved later by the caller's ghost B pull).
  • parent2entityPbi: Parallel to parent2entity. One NodePeriodicBits per (A, B) slot — the uniform XOR between A's sub-entity node-pbi and B's stored entity2nodePbi. To get B's node coords in A's frame: apply parent2entityPbi to entity2nodePbi, then GetCoordByBits. For faces, this is at most 1-bit (a face crosses one periodic boundary). For edges, can be multi-bit (e.g., P1|P2 for a corner edge). Zero for the first parent. Empty if not periodic. Computed locally — no MPI push needed (depends only on cell2nodePbi and entity2nodePbi, both available after Step 2b).
  • entity2node: B→C mapping in global C indices. Father-only (owned B). Node ordering is from the first-discovered parent's ExtractFaceNodes/ ExtractEdgeNodes call — this is the entity's own canonical ordering.
  • entity2nodePbi: B→C pbi. Father-only. Parallel to entity2node. Pbi from the first-discovered parent's perspective (the entity's own frame). Other parents' perspectives differ by parent2entityPbi. Empty if not periodic.
  • entity2parent: B→A mapping in global A indices. Father-only. Variable-width: 1 (boundary) or 2 (internal) for faces, 1..N for edges. Complete under A→C→A ghosting (all parents sharing any C-vertex with a local A are present as ghosts, so all parents of any locally-visible B entity are enumerated).
  • entityElemInfo: Per-entity element info. Father-only.

Ghost B entities

NOT included. Use evaluateGhostTree(A → A2B → B) to pull them, then BorrowAndPull on entity2node / entity2nodePbi / entityElemInfo. parent2entityPbi for ghost A parents is already populated (the push only carries the global B index; pbi is local). After ghost B pull, entity2parent for ghost B can be obtained via Inverse(parent2entity) or by ghost-pulling entity2parent itself.

Template Parameters
e2p_rsRow-size of entity2parent (NonUniformSize = variable, 2 = fixed for faces, etc.).

Definition at line 694 of file MeshConnectivity.hpp.

Member Data Documentation

◆ entity2node

template<rowsize e2p_rs = NonUniformSize>
tAdjPair DNDS::Geom::InterpolateGlobalResultT< e2p_rs >::entity2node

B → C (global C indices). Father-only (owned B). Node order: first-discovered parent's extraction order.

Definition at line 703 of file MeshConnectivity.hpp.

◆ entity2nodePbi

template<rowsize e2p_rs = NonUniformSize>
tPbiPair DNDS::Geom::InterpolateGlobalResultT< e2p_rs >::entity2nodePbi

B → C pbi. Father-only (owned B). First-discovered parent's perspective (entity's own frame). Parallel to entity2node. Empty if not periodic.

Definition at line 708 of file MeshConnectivity.hpp.

◆ entity2parent

template<rowsize e2p_rs = NonUniformSize>
ArrayAdjacencyPair<e2p_rs> DNDS::Geom::InterpolateGlobalResultT< e2p_rs >::entity2parent

B → A (global A indices). Father-only (owned B). Width 1-2 for faces, 1-N for edges. Complete under A→C→A ghosting.

Definition at line 705 of file MeshConnectivity.hpp.

◆ entityElemInfo

template<rowsize e2p_rs = NonUniformSize>
tElemInfoArrayPair DNDS::Geom::InterpolateGlobalResultT< e2p_rs >::entityElemInfo

Per-B elem info. Father-only (owned B).

Definition at line 711 of file MeshConnectivity.hpp.

◆ nOwnedEntities

template<rowsize e2p_rs = NonUniformSize>
index DNDS::Geom::InterpolateGlobalResultT< e2p_rs >::nOwnedEntities {0}

Number of owned B entities (father size).

Definition at line 712 of file MeshConnectivity.hpp.

◆ parent2entity

template<rowsize e2p_rs = NonUniformSize>
tAdjPair DNDS::Geom::InterpolateGlobalResultT< e2p_rs >::parent2entity

A → B (global B indices). Father = local A, son = ghost A. Slot j = face/edge j per topology.

Definition at line 696 of file MeshConnectivity.hpp.

◆ parent2entityPbi

template<rowsize e2p_rs = NonUniformSize>
tPbiPair DNDS::Geom::InterpolateGlobalResultT< e2p_rs >::parent2entityPbi

A → B pbi (parallel to parent2entity). Uniform XOR: A's sub-entity node-pbi vs B's stored entity2nodePbi. Faces: at most 1 bit. Edges: multi-bit. 0 for B's first parent. Empty if not periodic. No push needed — computed locally in Step 2b.

Definition at line 698 of file MeshConnectivity.hpp.


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