46 #ifndef MUELU_INDEXMANAGER_DECL_HPP 47 #define MUELU_INDEXMANAGER_DECL_HPP 50 #include "Teuchos_CommHelpers.hpp" 51 #include "Teuchos_OrdinalTraits.hpp" 53 #include <Xpetra_Map_fwd.hpp> 54 #include <Xpetra_Vector_fwd.hpp> 55 #include <Xpetra_VectorFactory_fwd.hpp> 80 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
82 #undef MUELU_INDEXMANAGER_SHORT 89 const RCP<const Teuchos::Comm<int> >
comm_;
133 const int interpolationOrder,
const Array<GO> GFineNodesPerDir,
134 const Array<LO> LFineNodesPerDir);
145 Array<LO>& ghostedNodeCoarseLIDs,
146 Array<int>& ghostedNodeCoarsePIDs,
147 Array<GO>& ghostedNodeCoarseGIDs)
const = 0;
150 Array<GO>& coarseNodeCoarseGIDs,
151 Array<GO>& coarseNodeFineGIDs)
const = 0;
225 virtual void getFineNodeGID(
const GO i,
const GO j,
const GO k, GO& myGID)
const = 0;
227 virtual void getFineNodeLID(
const LO i,
const LO j,
const LO k, LO& myLID)
const = 0;
233 virtual void getCoarseNodeGID(
const GO i,
const GO j,
const GO k, GO& myGID)
const = 0;
235 virtual void getCoarseNodeLID(
const LO i,
const LO j,
const LO k, LO& myLID)
const = 0;
249 #define MUELU_INDEXMANAGER_SHORT 250 #endif // MUELU_INDEXMANAGER_DECL_HPP const bool coupled_
Flag for coupled vs uncoupled aggregation mode, if true aggregation is coupled.
Array< LO > getLocalFineNodesPerDir() const
Array< int > getCoarseningEndRates() const
GO getNumGlobalFineNodes() const
virtual void getFineNodeGhostedTuple(const LO myLID, LO &i, LO &j, LO &k) const =0
LO numGhostedNodes
local number of ghosted nodes (i.e. ghost + coarse nodes).
LO numGhostNodes
local number of ghost nodes
Array< GO > gCoarseNodesPerDir
global number of nodes per direction remaining after coarsening.
LO getOffset(int const dim) const
virtual void getCoarseNodeLocalTuple(const LO myLID, LO &i, LO &j, LO &k) const =0
Array< GO > startIndices
lowest global tuple (i,j,k) of a node on the local process
GO gNumFineNodes10
global number of nodes per 0-1 slice.
virtual void getCoarseNodeGlobalTuple(const GO myGID, GO &i, GO &j, GO &k) const =0
Array< GO > startGhostedCoarseNode
lowest coarse global tuple (i,j,k) of a node remaing on the local process after coarsening.
LO getNumLocalGhostedNodes() const
LO getNumLocalCoarseNodes() const
Array< LO > getCoarseNodeOffsets() const
GO getStartIndex(int const dim) const
Namespace for MueLu classes and methods.
Array< LO > getOffsets() const
virtual void getGhostedNodesData(const RCP< const Map > fineMap, Array< LO > &ghostedNodeCoarseLIDs, Array< int > &ghostedNodeCoarsePIDs, Array< GO > &ghostedNodeCoarseGIDs) const =0
int getCoarseningEndRate(const int dim) const
Array< LO > offsets
distance between lowest (resp. highest) index to the lowest (resp. highest) ghostedNodeIndex in that ...
const Array< GO > gFineNodesPerDir
global number of nodes per direction.
int getInterpolationOrder() const
virtual void getFineNodeGlobalTuple(const GO myGID, GO &i, GO &j, GO &k) const =0
const Array< LO > lFineNodesPerDir
local number of nodes per direction.
Array< LO > getLocalCoarseNodesPerDir() const
virtual void getFineNodeGID(const GO i, const GO j, const GO k, GO &myGID) const =0
Array< LO > ghostedNodesPerDir
local number of ghosted nodes (i.e. ghost + coarse nodes) per direction
LO getNumLocalFineNodes() const
LO lNumCoarseNodes
local number of nodes remaining after coarsening.
virtual void getFineNodeLocalTuple(const LO myLID, LO &i, LO &j, LO &k) const =0
LO numGhostedNodes10
local number of ghosted nodes (i.e. ghost + coarse nodes) per 0-1 slice.
Array< int > coarseRate
coarsening rate in each direction
GO gNumFineNodes
global number of nodes.
const int interpolationOrder_
Interpolation order used by grid transfer operators using these aggregates.
virtual void computeGlobalCoarseParameters()=0
LO getCoarseNodeOffset(int const dim) const
virtual void getCoarseNodeGhostedLID(const LO i, const LO j, const LO k, LO &myLID) const =0
LO lNumFineNodes
local number of nodes.
virtual void getCoarseNodeLID(const LO i, const LO j, const LO k, LO &myLID) const =0
virtual void getCoarseNodeFineLID(const LO i, const LO j, const LO k, LO &myLID) const =0
virtual void getCoarseNodesData(const RCP< const Map > fineCoordinatesMap, Array< GO > &coarseNodeCoarseGIDs, Array< GO > &coarseNodeFineGIDs) const =0
const int numDimensions
Number of spacial dimensions in the problem.
Array< LO > lCoarseNodesPerDir
local number of nodes per direction remaing after coarsening.
Array< int > endRate
adapted coarsening rate at the edge of the mesh in each direction.
bool ghostInterface[6]
flags indicating if ghost points are needed at ilo, ihi, jlo, jhi, klo and khi boundaries.
const RCP< const Teuchos::Comm< int > > comm_
Communicator used by uncoupled aggregation.
bool getMeshEdge(const int dir) const
bool ghostedDir[6]
flags indicating if ghost points are needed at ilo, ihi, jlo, jhi, klo and khi boundaries.
LO getLocalFineNodesInDir(const int dim) const
bool meshEdge[6]
flags indicating if we run into the edge of the mesh in ilo, ihi, jlo, jhi, klo or khi...
GO minGlobalIndex
lowest GID of any node in the local process
LO lNumCoarseNodes10
local number of nodes per 0-1 slice remaining after coarsening.
LO getLocalCoarseNodesInDir(const int dim) const
GO getStartGhostedCoarseNode(int const dim) const
virtual void getGhostedNodeFineLID(const LO i, const LO j, const LO k, LO &myLID) const =0
LO getGhostedNodesInDir(const int dim) const
virtual std::vector< std::vector< GO > > getCoarseMeshData() const =0
Array< GO > getStartIndices() const
Base class for MueLu classes.
virtual void getGhostedNodeCoarseLID(const LO i, const LO j, const LO k, LO &myLID) const =0
GO getGlobalCoarseNodesInDir(const int dim) const
int getNumDimensions() const
GO getGlobalFineNodesInDir(const int dim) const
virtual void getCoarseNodeGID(const GO i, const GO j, const GO k, GO &myGID) const =0
GO getNumGlobalCoarseNodes() const
Array< GO > getGlobalCoarseNodesPerDir() const
GO gNumCoarseNodes10
global number of nodes per 0-1 slice remaining after coarsening.
LO lNumFineNodes10
local number of nodes per 0-1 slice.
void computeMeshParameters()
Array< GO > getGlobalFineNodesPerDir() const
Array< int > getCoarseningRates() const
bool isAggregationCoupled() const
virtual void getFineNodeLID(const LO i, const LO j, const LO k, LO &myLID) const =0
Array< LO > coarseNodeOffsets
distance between lowest (resp. highest) index to the lowest (resp. highest) coarseNodeIndex in that d...
Array< GO > getStartGhostedCoarseNodes() const
bool getGhostInterface(const int dir) const
Array< LO > getGhostedNodesPerDir() const
GO gNumCoarseNodes
global number of nodes remaining after coarsening.
Container class for mesh layout and indices calculation.
int getCoarseningRate(const int dim) const