46 #ifndef MUELU_INDEXMANAGER_DEF_HPP 47 #define MUELU_INDEXMANAGER_DEF_HPP 49 #include "Teuchos_OrdinalTraits.hpp" 61 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
64 const int NumDimensions,
65 const int interpolationOrder,
66 const Array<GO> GFineNodesPerDir,
67 const Array<LO> LFineNodesPerDir) :
68 comm_(comm), coupled_(coupled), numDimensions(NumDimensions),
69 interpolationOrder_(interpolationOrder), gFineNodesPerDir(GFineNodesPerDir),
70 lFineNodesPerDir(LFineNodesPerDir) {
85 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
88 RCP<Teuchos::FancyOStream> out;
89 if(
const char* dbg = std::getenv(
"MUELU_INDEXMANAGER_DEBUG")) {
90 out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout));
91 out->setShowAllFrontMatter(
false).setShowProcRank(
true);
93 out = Teuchos::getFancyOStream(rcp(
new Teuchos::oblackholestream()));
105 for(
int dim = 0; dim < 3; ++dim) {
135 if( (rem != 0) && (rem <= Teuchos::as<double>(
coarseRate[dim]) / 2.0)) {
141 (rem > Teuchos::as<double>(
coarseRate[dim]) / 2.0)) {
162 *out <<
"lFineNodesPerDir: " << lFineNodesPerDir << std::endl;
163 *out <<
"endRate: " <<
endRate << std::endl;
171 *out <<
"offsets: " <<
offsets << std::endl;
187 for(
int dim = 0; dim < 3; ++dim) {
207 if(rem > (Teuchos::as<double>(
coarseRate[dim]) / 2.0) ) {
245 for(
int dim = 0; dim < 3; ++dim) {
257 *out <<
"lCoarseNodesPerDir: " << lCoarseNodesPerDir << std::endl;
259 *out <<
"ghostedNodesPerDir: " << ghostedNodesPerDir << std::endl;
261 *out <<
"lNumCoarseNodes=" << lNumCoarseNodes << std::endl;
267 #define MUELU_INDEXMANAGER_SHORT 268 #endif // MUELU_INDEXMANAGER_DEF_HPP const bool coupled_
Flag for coupled vs uncoupled aggregation mode, if true aggregation is coupled.
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.
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.
Array< GO > startGhostedCoarseNode
lowest coarse global tuple (i,j,k) of a node remaing on the local process after coarsening.
Namespace for MueLu classes and methods.
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.
const Array< LO > lFineNodesPerDir
local number of nodes per direction.
Array< LO > ghostedNodesPerDir
local number of ghosted nodes (i.e. ghost + coarse nodes) per direction
LO lNumCoarseNodes
local number of nodes remaining after coarsening.
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.
LO lNumFineNodes
local number of nodes.
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.
bool meshEdge[6]
flags indicating if we run into the edge of the mesh in ilo, ihi, jlo, jhi, klo or khi...
LO lNumCoarseNodes10
local number of nodes per 0-1 slice remaining after coarsening.
LO lNumFineNodes10
local number of nodes per 0-1 slice.
void computeMeshParameters()
Array< LO > coarseNodeOffsets
distance between lowest (resp. highest) index to the lowest (resp. highest) coarseNodeIndex in that d...
GO gNumCoarseNodes
global number of nodes remaining after coarsening.