10 #ifndef MUELU_AGGREGATIONPHASE2AALGORITHM_DECL_HPP_
11 #define MUELU_AGGREGATIONPHASE2AALGORITHM_DECL_HPP_
20 #include "MueLu_LWGraph.hpp"
49 #undef MUELU_AGGREGATIONPHASE2AALGORITHM_SHORT
77 LO& numNonAggregatedNodes)
const override;
83 LO& numNonAggregatedNodes)
const;
89 LO& numNonAggregatedNodes)
const;
92 std::string
description()
const override {
return "Phase 2a (secondary)"; }
100 #define MUELU_AGGREGATIONPHASE2AALGORITHM_SHORT
Kokkos::View< unsigned *, typename LWGraphHostType::device_type > AggStatHostType
MueLu::DefaultLocalOrdinal LocalOrdinal
void BuildAggregatesRandom(const Teuchos::ParameterList ¶ms, const LWGraph_kokkos &graph, Aggregates &aggregates, typename AggregationAlgorithmBase< LocalOrdinal, GlobalOrdinal, Node >::AggStatType &aggStat, LO &numNonAggregatedNodes) const
Lightweight MueLu representation of a compressed row storage graph.
Tpetra::KokkosClassic::DefaultNode::DefaultNodeType DefaultNode
Container class for aggregation information.
Pure virtual base class for all MueLu aggregation algorithms.
virtual ~AggregationPhase2aAlgorithm()
Destructor.
void SetupPhase(const ParameterList ¶ms, Teuchos::RCP< const Teuchos::Comm< int >> &comm, LO &numLocalNodes, LO &numNonAggregatedNodes) override
Local aggregation.
MueLu::DefaultGlobalOrdinal GlobalOrdinal
AggregationPhase2aAlgorithm(const RCP< const FactoryBase > &=Teuchos::null)
Constructor.
void BuildAggregates(const Teuchos::ParameterList ¶ms, const LWGraph_kokkos &graph, Aggregates &aggregates, typename AggregationAlgorithmBase< LocalOrdinal, GlobalOrdinal, Node >::AggStatType &aggStat, LO &numNonAggregatedNodes) const override
void BuildAggregatesNonKokkos(const ParameterList ¶ms, const LWGraph &graph, Aggregates &aggregates, typename AggregationAlgorithmBase< LocalOrdinal, GlobalOrdinal, Node >::AggStatHostType &aggStat, LO &numNonAggregatedNodes) const override
Among unaggregated points, see if we can make a reasonable size aggregate out of it.IdeaAmong unaggregated points, see if we can make a reasonable size aggregate out of it. We do this by looking at neighbors and seeing how many are unaggregated and on my processor. Loosely, base the number of new aggregates created on the percentage of unaggregated nodes.
void BuildAggregatesDeterministic(const Teuchos::ParameterList ¶ms, const LWGraph_kokkos &graph, Aggregates &aggregates, typename AggregationAlgorithmBase< LocalOrdinal, GlobalOrdinal, Node >::AggStatType &aggStat, LO &numNonAggregatedNodes) const
std::string description() const override
Return a simple one-line description of this object.
Lightweight MueLu representation of a compressed row storage graph.
Kokkos::View< unsigned *, typename LWGraphType::device_type > AggStatType