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> 77 class 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 175 #endif //ifdef HAVE_MUELU_KOKKOS_REFACTOR MueLu::DefaultLocalOrdinal LocalOrdinal
KokkosClassic::DefaultNode::DefaultNodeType DefaultNode
Namespace for MueLu classes and methods.
MueLu::DefaultScalar Scalar
MueLu::DefaultGlobalOrdinal GlobalOrdinal