Go to the documentation of this file.
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
Array< int > endRate
adapted coarsening rate at the edge of the mesh in each direction.
const Array< GO > gFineNodesPerDir
global number of nodes per direction.
LO lNumFineNodes
local number of nodes.
GO gNumCoarseNodes
global number of nodes remaining after coarsening.
virtual void getFineNodeGID(const GO i, const GO j, const GO k, GO &myGID) const =0
bool ghostInterface[6]
flags indicating if ghost points are needed at ilo, ihi, jlo, jhi, klo and khi boundaries.
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.
GO getNumGlobalCoarseNodes() const
LO getLocalCoarseNodesInDir(const int dim) const
LO getLocalFineNodesInDir(const int dim) const
bool getGhostInterface(const int dir) const
virtual void getCoarseNodeGlobalTuple(const GO myGID, GO &i, GO &j, GO &k) const =0
LO numGhostNodes
local number of ghost nodes
Array< GO > startGhostedCoarseNode
lowest coarse global tuple (i,j,k) of a node remaing on the local process after coarsening.
Array< GO > getStartIndices() const
Array< GO > getStartGhostedCoarseNodes() const
GO getStartIndex(int const dim) const
LO lNumFineNodes10
local number of nodes per 0-1 slice.
virtual void getFineNodeGlobalTuple(const GO myGID, GO &i, GO &j, GO &k) const =0
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
const Array< LO > lFineNodesPerDir
local number of nodes per direction.
Array< LO > lCoarseNodesPerDir
local number of nodes per direction remaing after coarsening.
int getCoarseningRate(const int dim) const
LO getGhostedNodesInDir(const int dim) const
GO getStartGhostedCoarseNode(int const dim) const
Namespace for MueLu classes and methods.
const bool coupled_
Flag for coupled vs uncoupled aggregation mode, if true aggregation is coupled.
Array< int > coarseRate
coarsening rate in each direction
bool isAggregationCoupled() const
Array< GO > gCoarseNodesPerDir
global number of nodes per direction remaining after coarsening.
Base class for MueLu classes.
virtual void getCoarseNodeGID(const GO i, const GO j, const GO k, GO &myGID) const =0
virtual void computeGlobalCoarseParameters()=0
virtual std::vector< std::vector< GO > > getCoarseMeshData() const =0
Array< LO > getGhostedNodesPerDir() const
Array< int > getCoarseningRates() const
Array< LO > coarseNodeOffsets
distance between lowest (resp. highest) index to the lowest (resp. highest) coarseNodeIndex in that d...
GO getGlobalCoarseNodesInDir(const int dim) const
LO getNumLocalFineNodes() const
const RCP< const Teuchos::Comm< int > > comm_
Communicator used by uncoupled aggregation.
virtual void getFineNodeLID(const LO i, const LO j, const LO k, LO &myLID) const =0
void computeMeshParameters()
Array< LO > getCoarseNodeOffsets() const
LO getNumLocalCoarseNodes() const
Array< int > getCoarseningEndRates() const
Array< LO > getOffsets() const
virtual void getGhostedNodesData(const RCP< const Map > fineMap, Array< LO > &ghostedNodeCoarseLIDs, Array< int > &ghostedNodeCoarsePIDs, Array< GO > &ghostedNodeCoarseGIDs) const =0
LO getOffset(int const dim) const
const int numDimensions
Number of spacial dimensions in the problem.
GO getGlobalFineNodesInDir(const int dim) const
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 getCoarseNodeLocalTuple(const LO myLID, LO &i, LO &j, LO &k) const =0
int getNumDimensions() const
LO lNumCoarseNodes
local number of nodes remaining after coarsening.
GO getNumGlobalFineNodes() const
LO lNumCoarseNodes10
local number of nodes per 0-1 slice remaining after coarsening.
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.
LO numGhostedNodes
local number of ghosted nodes (i.e. ghost + coarse nodes).
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.
LO getNumLocalGhostedNodes() const
const int interpolationOrder_
Interpolation order used by grid transfer operators using these aggregates.
int getCoarseningEndRate(const int dim) const
virtual void getGhostedNodeCoarseLID(const LO i, const LO j, const LO k, LO &myLID) const =0
Array< LO > offsets
distance between lowest (resp. highest) index to the lowest (resp. highest) ghostedNodeIndex in that ...
Container class for mesh layout and indices calculation.
int getInterpolationOrder() const
Array< GO > getGlobalCoarseNodesPerDir() const
GO gNumCoarseNodes10
global number of nodes per 0-1 slice remaining after coarsening.
Array< LO > getLocalCoarseNodesPerDir() const
virtual void getCoarseNodeGhostedLID(const LO i, const LO j, const LO k, LO &myLID) const =0
GO gNumFineNodes
global number of nodes.
virtual void getGhostedNodeFineLID(const LO i, const LO j, const LO k, LO &myLID) const =0
Array< LO > ghostedNodesPerDir
local number of ghosted nodes (i.e. ghost + coarse nodes) per direction
Array< LO > getLocalFineNodesPerDir() const
virtual void getFineNodeGhostedTuple(const LO myLID, LO &i, LO &j, LO &k) const =0
Array< GO > getGlobalFineNodesPerDir() const
LO getCoarseNodeOffset(int const dim) const
virtual void getCoarseNodesData(const RCP< const Map > fineCoordinatesMap, Array< GO > &coarseNodeCoarseGIDs, Array< GO > &coarseNodeFineGIDs) const =0