31 template <rowsize cone_rs = NonUniformSize,
class ToPair>
39 "CheckedInverse: cone must be in Adj_PointToGlobal state");
41 "CheckedInverse: cone.trans.pLGhostMapping must be set");
43 "CheckedInverse: toPair.trans.pLGhostMapping must be set");
45 "CheckedInverse: toPair.father->pLGlobalMapping must be set");
48 {
return cone.trans.pLGhostMapping->operator()(-1,
i); };
50 {
return toPair.trans.pLGhostMapping->operator()(-1,
i); };
52 auto dslResult = MeshConnectivity::Inverse<cone_rs>(
57 toPair.father->pLGlobalMapping);
60 result.father = std::move(dslResult.father);
61 result.son = make_ssp<tAdjPair::t_arr>(
84 const std::unordered_map<index, index> &bGlobal2Local,
89 "CheckedComposeFiltered: AB must be in Adj_PointToGlobal state");
91 "CheckedComposeFiltered: BC must be in Adj_PointToGlobal state");
93 "CheckedComposeFiltered: AB.trans.pLGhostMapping must be set");
96 {
return AB.trans.pLGhostMapping->operator()(-1,
i); };
98 auto dslResult = MeshConnectivity::ComposeFiltered<rs_AB, rs_BC, out_rs>(
103 std::forward<Predicate>(pred),
104 std::forward<TArgs>(args)...);
107 result.father = std::move(dslResult.father);
108 result.son = make_ssp<typename ArrayAdjacencyPair<out_rs>::t_arr>(
109 ObjName{
"CheckedComposeFiltered.son"},
result.father->getMPI());
119 template <rowsize p2n_rs = NonUniformSize, rowsize e2p_rs = NonUniformSize>
134 "CheckedInterpolateGlobal: parent2node must be in Adj_PointToLocal state");
138 "CheckedInterpolateGlobal: nodeGhostMapping parameter does not match "
139 "parent2node.idx.targetMapping");
140 return MeshConnectivity::InterpolateGlobal<p2n_rs, e2p_rs>(
#define DNDS_assert_info(expr, info)
Debug-only assertion with an extra std::string info message.
Layered DAG of mesh adjacency relations with composable DSL operations.
Table mapping rank-local row indices to the global index space.
Mapping between a rank's main data and its ghost copies.
auto CheckedInterpolateGlobal(const AdjPairTracked< 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)
State-checked wrapper for MeshConnectivity::InterpolateGlobal.
AdjPairTracked< ArrayAdjacencyPair< out_rs > > CheckedComposeFiltered(const AdjPairTracked< ArrayAdjacencyPair< rs_AB > > &AB, const AdjPairTracked< ArrayAdjacencyPair< rs_BC > > &BC, const std::unordered_map< index, index > &bGlobal2Local, Predicate &&pred, TArgs &&...args)
std::function< OwnershipDecision(const std::vector< index > &parents, const std::vector< MPI_int > &parentRanks, index nLocalParents)> OwnershipResolverMulti
AdjPairTracked< tAdjPair > CheckedInverse(const AdjPairTracked< ArrayAdjacencyPair< cone_rs > > &cone, const ToPair &toPair, index nToLocal, const MPIInfo &mpi)
int32_t rowsize
Row-width / per-row element-count type (signed 32-bit).
DNDS_CONSTANT const rowsize NonUniformSize
Template parameter flag: "each row has an independent width".
int64_t index
Global row / DOF index type (signed 64-bit; handles multi-billion-cell meshes).
DNDS_DEVICE_CALLABLE index Size() const
Combined father + son row count.
Convenience bundle of a father, son, and attached ArrayTransformer.
ssp< TArray > father
Owned-side array (must be resized before ghost setup).
Flattened wrapper: inherits from TPair and adds AdjIndexInfo.
Lightweight bundle of an MPI communicator and the calling rank's coordinates.
Tag type for naming objects created via make_ssp.
OwnershipResolverMulti resolver