46 #ifndef MUELU_LOCALLEXICOGRAPHICINDEXMANAGER_DECL_HPP 47 #define MUELU_LOCALLEXICOGRAPHICINDEXMANAGER_DECL_HPP 50 #include "Teuchos_CommHelpers.hpp" 52 #include <Xpetra_Map_fwd.hpp> 53 #include <Xpetra_Vector_fwd.hpp> 54 #include <Xpetra_VectorFactory_fwd.hpp> 57 #include "MueLu_IndexManager.hpp" 82 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
84 #undef MUELU_LOCALLEXICOGRAPHICINDEXMANAGER_SHORT 92 const int NumDimensions,
const int interpolationOrder,
93 const int MyRank,
const int NumRanks,
119 void getFineNodeGID(
const GO i,
const GO j,
const GO k, GO& myGID)
const;
121 void getFineNodeLID(
const LO i,
const LO j,
const LO k, LO& myLID)
const;
163 const Array<LO> coarseNodeFineIndices, GO& myGID, LO& myPID,
170 #define MUELU_LOCALLEXICOGRAPHICINDEXMANAGER_SHORT 171 #endif // MUELU_LOCALLEXICOGRAPHICINDEXMANAGER_DECL_HPP void getGhostedNodeFineLID(const LO i, const LO j, const LO k, LO &myLID) const
void sortLocalLexicographicData()
std::vector< std::vector< GO > > getCoarseMeshData() const
void getFineNodeLID(const LO i, const LO j, const LO k, LO &myLID) const
int myRankIndex
local process index for record in meshData after sorting.
void getCoarseNodeGID(const GO i, const GO j, const GO k, GO &myGID) const
void getCoarseNodeGlobalTuple(const GO myGID, GO &i, GO &j, GO &k) const
std::vector< std::vector< GO > > meshData
layout of indices accross all processes.
void getCoarseNodesData(const RCP< const Map > fineCoordinatesMap, Array< GO > &coarseNodeCoarseGIDs, Array< GO > &coarseNodeFineGIDs) const
void getCoarseNodeLID(const LO i, const LO j, const LO k, LO &myLID) const
void getFineNodeGhostedTuple(const LO myLID, LO &i, LO &j, LO &k) const
Namespace for MueLu classes and methods.
void getFineNodeLocalTuple(const LO myLID, LO &i, LO &j, LO &k) const
int numBlocks
Number of mesh block.
void getGhostedNodesData(const RCP< const Map > fineMap, Array< LO > &ghostedNodeCoarseLIDs, Array< int > &ghostedNodeCoarsePIDs, Array< GO > &ghostedNodeCoarseGIDs) const
void getCoarseNodeLocalTuple(const LO myLID, LO &i, LO &j, LO &k) const
virtual ~LocalLexicographicIndexManager()
int myBlock
local mesh block ID.
int pk
Number of processors in each diretcion.
void getGhostedNodeCoarseLID(const LO i, const LO j, const LO k, LO &myLID) const
void getFineNodeGlobalTuple(const GO myGID, GO &i, GO &j, GO &k) const
std::vector< std::vector< GO > >::iterator myBlockStart
Array< int > rankIndices
mapping between rank ID and reordered rank ID.
const int numRanks
Number of ranks used to decompose the problem.
void computeGlobalCoarseParameters()
void getCoarseNodeFineLID(const LO i, const LO j, const LO k, LO &myLID) const
std::vector< std::vector< GO > >::iterator myBlockEnd
void getFineNodeGID(const GO i, const GO j, const GO k, GO &myGID) const
void getCoarseNodeGhostedLID(const LO i, const LO j, const LO k, LO &myLID) const
LocalLexicographicIndexManager()=default
void computeCoarseLocalLexicographicData()
void getGIDLocalLexicographic(const LO iGhosted, const LO jGhosted, const LO kGhosted, const Array< LO > coarseNodeFineIndices, GO &myGID, LO &myPID, LO &myLID) const
const int myRank
Local rank ID.
Container class for mesh layout and indices calculation.
std::vector< std::vector< GO > > coarseMeshData
layout of indices accross all processes after coarsening.