10#ifndef MUELU_LOCALLEXICOGRAPHICINDEXMANAGER_DECL_HPP
11#define MUELU_LOCALLEXICOGRAPHICINDEXMANAGER_DECL_HPP
14#include "Teuchos_CommHelpers.hpp"
16#include <Xpetra_Map_fwd.hpp>
19#include "MueLu_IndexManager.hpp"
44template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
46#undef MUELU_LOCALLEXICOGRAPHICINDEXMANAGER_SHORT
53 const int NumDimensions,
const int interpolationOrder,
54 const int MyRank,
const int NumRanks,
55 const Array<GO> GFineNodesPerDir,
56 const Array<LO> LFineNodesPerDir,
57 const Array<LO> CoarseRate,
const Array<GO> MeshData);
64 Array<LO>& ghostedNodeCoarseLIDs,
65 Array<int>& ghostedNodeCoarsePIDs,
66 Array<GO>& ghostedNodeCoarseGIDs)
const;
69 Array<GO>& coarseNodeCoarseGIDs,
70 Array<GO>& coarseNodeFineGIDs)
const;
80 void getFineNodeGID(
const GO i,
const GO j,
const GO k, GO& myGID)
const;
82 void getFineNodeLID(
const LO i,
const LO j,
const LO k, LO& myLID)
const;
123 const Array<LO> coarseNodeFineIndices, GO& myGID, LO& myPID,
129#define MUELU_LOCALLEXICOGRAPHICINDEXMANAGER_SHORT
Container class for mesh layout and indices calculation.
void getFineNodeGlobalTuple(const GO myGID, GO &i, GO &j, GO &k) const
std::vector< std::vector< GO > >::iterator myBlockEnd
void getGhostedNodesData(const RCP< const Map > fineMap, Array< LO > &ghostedNodeCoarseLIDs, Array< int > &ghostedNodeCoarsePIDs, Array< GO > &ghostedNodeCoarseGIDs) const
const int numRanks
Number of ranks used to decompose the problem.
void getFineNodeLocalTuple(const LO myLID, LO &i, LO &j, LO &k) const
void computeGlobalCoarseParameters()
int pk
Number of processors in each diretcion.
int myRankIndex
local process index for record in meshData after sorting.
virtual ~LocalLexicographicIndexManager()
void sortLocalLexicographicData()
void getFineNodeGhostedTuple(const LO myLID, LO &i, LO &j, LO &k) const
int numBlocks
Number of mesh block.
void getGhostedNodeFineLID(const LO i, const LO j, const LO k, LO &myLID) const
void getFineNodeGID(const GO i, const GO j, const GO k, GO &myGID) const
int myBlock
local mesh block ID.
void getGIDLocalLexicographic(const LO iGhosted, const LO jGhosted, const LO kGhosted, const Array< LO > coarseNodeFineIndices, GO &myGID, LO &myPID, LO &myLID) const
void getCoarseNodeLID(const LO i, const LO j, const LO k, LO &myLID) const
LocalLexicographicIndexManager()=default
std::vector< std::vector< GO > > getCoarseMeshData() 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 getGhostedNodeCoarseLID(const LO i, const LO j, const LO k, LO &myLID) const
void getCoarseNodeGID(const GO i, const GO j, const GO k, GO &myGID) const
std::vector< std::vector< GO > > coarseMeshData
layout of indices accross all processes after coarsening.
Array< int > rankIndices
mapping between rank ID and reordered rank ID.
void getCoarseNodeLocalTuple(const LO myLID, LO &i, LO &j, LO &k) const
void getFineNodeLID(const LO i, const LO j, const LO k, LO &myLID) const
const int myRank
Local rank ID.
std::vector< std::vector< GO > >::iterator myBlockStart
void getCoarseNodeFineLID(const LO i, const LO j, const LO k, LO &myLID) const
void getCoarseNodeGhostedLID(const LO i, const LO j, const LO k, LO &myLID) const
void getCoarseNodesData(const RCP< const Map > fineCoordinatesMap, Array< GO > &coarseNodeCoarseGIDs, Array< GO > &coarseNodeFineGIDs) const
void computeCoarseLocalLexicographicData()
Namespace for MueLu classes and methods.