46#ifndef MUELU_AGGREGATES_DECL_HPP
47#define MUELU_AGGREGATES_DECL_HPP
49#include <Xpetra_Map_fwd.hpp>
50#include <Xpetra_Vector_fwd.hpp>
51#include <Xpetra_VectorFactory_fwd.hpp>
52#include <Xpetra_MultiVector_fwd.hpp>
60#include "MueLu_IndexManager.hpp"
62#define MUELU_UNAGGREGATED -1
65#define MUELU_UNASSIGNED -1
103#undef MUELU_AGGREGATES_SHORT
197 const RCP<const Map>
GetMap()
const;
231 void print(Teuchos::FancyOStream &out,
const Teuchos::EVerbosityLevel verbLevel = verbLevel_default)
const;
266#define MUELU_AGGREGATES_SHORT
MueLu::DefaultLocalOrdinal LocalOrdinal
MueLu::DefaultGlobalOrdinal GlobalOrdinal
Container class for aggregation information.
Teuchos::ArrayRCP< bool > isRoot_
Teuchos::ArrayRCP< LO > ComputeAggregateSizes(bool forceRecompute=false) const
Compute sizes of aggregates.
GO nGlobalAggregates_
Number of global aggregates.
void SetNumGlobalAggregates(GO nGlobalAggregates)
Set number of global aggregates on current processor.
RCP< LOVector > & GetProcWinnerNonConst()
Returns nonconstant vector that maps local node IDs to owning processor IDs.
LO nAggregates_
Number of aggregates on this processor.
RCP< IndexManager > geoData_
RCP< LOMultiVector > & GetVertex2AggIdNonConst()
Returns a nonconstant vector that maps local node IDs to local aggregates IDs.
bool aggregatesIncludeGhosts_
Set to false iff aggregates do not include any DOFs belong to other processes.
void AggregatesCrossProcessors(const bool &flag)
Record whether aggregates include DOFs from other processes.
void print(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=verbLevel_default) const
Print the object with some verbosity level to an FancyOStream object.
bool AggregatesCrossProcessors() const
Return false if and only if no aggregates include DOFs from other processes.
const RCP< const Map > GetMap() const
returns (overlapping) map of aggregate/node distribution
GO GetNumGlobalAggregatesComputeIfNeeded()
Get global number of aggregates.
void SetIsRoot(LO i, bool value=true)
Set root node information.
RCP< IndexManager > & GetIndexManager()
Get the index manager used by structured aggregation algorithms.
bool IsRoot(LO i) const
Returns true if node with given local node id is marked to be a root node.
std::string description() const
Return a simple one-line description of this object.
const RCP< LOMultiVector > & GetVertex2AggId() const
Returns constant vector that maps local node IDs to local aggregates IDs.
RCP< LOVector > procWinner_
RCP< LOMultiVector > vertex2AggId_
Teuchos::ArrayRCP< LO > aggregateSizes_
Array of sizes of each local aggregate.
virtual ~Aggregates()
Destructor.
const RCP< LOVector > & GetProcWinner() const
Returns constant vector that maps local node IDs to owning processor IDs.
void ComputeNodesInAggregate(Array< LO > &aggPtr, Array< LO > &aggNodes, Array< LO > &unaggregated) const
Generates a compressed list of nodes in each aggregate, where the entries in aggNodes[aggPtr[i]] up t...
void SetIndexManager(RCP< IndexManager > &geoData)
Get the index manager used by structured aggregation algorithms.
LO GetNumAggregates() const
returns the number of aggregates of the current processor. Note: could/should be renamed to GetNumLoc...
void SetNumAggregates(LO nAggregates)
Set number of local aggregates on current processor.
Base class for MueLu classes.
MueLu representation of a graph.
Namespace for MueLu classes and methods.
KokkosClassic::DefaultNode::DefaultNodeType DefaultNode