46#ifndef MUELU_NOTAYAGGREGATIONFACTORY_DECL_HPP_
47#define MUELU_NOTAYAGGREGATIONFACTORY_DECL_HPP_
50#ifdef HAVE_MUELU_KOKKOS_REFACTOR
53#include <Xpetra_Map_fwd.hpp>
54#include <Xpetra_Vector_fwd.hpp>
55#include <Xpetra_VectorFactory_fwd.hpp>
56#include <Xpetra_MapFactory_fwd.hpp>
59#include <Xpetra_Matrix.hpp>
77class NotayAggregationFactory :
public SingleLevelFactoryBase {
78#undef MUELU_NOTAYAGGREGATIONFACTORY_SHORT
84 using local_matrix_type =
typename Matrix::local_matrix_type;
85 using device_type =
typename local_matrix_type::device_type;
86 using execution_space =
typename device_type::execution_space;
87 using magnitude_type =
typename Teuchos::ScalarTraits<Scalar>::magnitudeType;
88 using impl_scalar_type =
typename Kokkos::ArithTraits<Scalar>::val_type;
97 NotayAggregationFactory() { };
100 virtual ~NotayAggregationFactory() { }
102 RCP<const ParameterList> GetValidParameterList()
const;
114 void DeclareInput(Level ¤tLevel)
const;
122 void Build(Level ¤tLevel)
const;
125 void BuildInitialAggregates(
const Teuchos::ParameterList& params,
126 const RCP<const Matrix>& A,
127 const ArrayView<const LO>& orderingVector,
128 const magnitude_type kappa,
129 Aggregates& aggregates,
130 std::vector<unsigned>& aggStat,
131 LO& numNonAggregatedNodes,
132 LO& numDirichletNodes)
const;
135 void BuildFurtherAggregates(
const Teuchos::ParameterList& params,
136 const RCP<const Matrix>& A,
137 const Teuchos::ArrayView<const LO> & orderingVector,
138 const local_matrix_type& coarseA,
139 const magnitude_type kappa,
140 const row_sum_type& rowSum,
141 std::vector<LO>& localAggStat,
142 Array<LO>& localVertex2AggID,
143 LO& numLocalAggregates,
144 LO& numNonAggregatedNodes)
const;
146 void BuildOnRankLocalMatrix(
const local_matrix_type& localA,
147 local_matrix_type& onRankA)
const;
150 void BuildIntermediateProlongator(
const LO numRows,
151 const LO numDirichletNodes,
152 const LO numLocalAggregates,
153 const ArrayView<const LO>& localVertex2AggID,
154 local_matrix_type& intermediateP)
const;
157 void BuildCoarseLocalMatrix(
const local_matrix_type& intermediateP,
158 local_matrix_type& coarseA)
const;
161 void localSpGEMM(
const local_matrix_type& A,
162 const local_matrix_type& B,
163 const std::string matrixLabel,
164 local_matrix_type& C)
const;
174#define MUELU_NOTAYAGGREGATIONFACTORY_SHORT
MueLu::DefaultLocalOrdinal LocalOrdinal
MueLu::DefaultScalar Scalar
MueLu::DefaultGlobalOrdinal GlobalOrdinal
Namespace for MueLu classes and methods.
KokkosClassic::DefaultNode::DefaultNodeType DefaultNode