MueLu  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MueLu_FilteredAFactory_decl.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // MueLu: A package for multigrid based preconditioning
4 //
5 // Copyright 2012 NTESS and the MueLu contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef MUELU_FILTEREDAFACTORY_DECL_HPP
11 #define MUELU_FILTEREDAFACTORY_DECL_HPP
12 
13 #include <string>
14 
15 #include "MueLu_ConfigDefs.hpp"
17 
18 #include "MueLu_LWGraph.hpp"
19 #include "MueLu_Level_fwd.hpp"
22 #include "MueLu_Aggregates_fwd.hpp"
23 namespace MueLu {
24 
30 template <class Scalar = DefaultScalar,
33  class Node = DefaultNode>
35 #undef MUELU_FILTEREDAFACTORY_SHORT
36 #include "MueLu_UseShortNames.hpp"
37 
38  public:
40 
41 
43 
45  virtual ~FilteredAFactory() {}
46 
48 
50 
52 
53 
54  void DeclareInput(Level& currentLevel) const;
55 
57 
59 
60 
66  void Build(Level& currentLevel) const;
67 
69  private:
70  void BuildReuse(const Matrix& A, const LWGraph& G, const bool lumping, double dirichletThresh, Matrix& filteredA) const;
71  void BuildNew(const Matrix& A, const LWGraph& G, const bool lumping, double dirichletThresh, Matrix& filteredA) const;
72  void BuildNewUsingRootStencil(const Matrix& A, const LWGraph& G, double dirichletThresh, Level& currentLevel, Matrix& filteredA, bool use_spread_lumping, double DdomAllowGrowthRate, double DdomCap) const;
73  void ExperimentalLumping(const Matrix& A, Matrix& filteredA, double rho, double rho2) const;
74 
75 }; // class FilteredAFactory
76 
77 } // namespace MueLu
78 
79 #define MUELU_FILTEREDAFACTORY_SHORT
80 #endif // MUELU_FILTEREDAFACTORY_DECL_HPP
void BuildReuse(const Matrix &A, const LWGraph &G, const bool lumping, double dirichletThresh, Matrix &filteredA) const
MueLu::DefaultLocalOrdinal LocalOrdinal
Tpetra::KokkosClassic::DefaultNode::DefaultNodeType DefaultNode
RCP< const ParameterList > GetValidParameterList() const
Return a const parameter list of valid parameters that setParameterList() will accept.
void Build(Level &currentLevel) const
Build method.
MueLu::DefaultNode Node
MueLu::DefaultScalar Scalar
Tpetra::Details::DefaultTypes::scalar_type DefaultScalar
MueLu::DefaultGlobalOrdinal GlobalOrdinal
Class that holds all level-specific information.
Definition: MueLu_Level.hpp:63
virtual ~FilteredAFactory()
Destructor.
void ExperimentalLumping(const Matrix &A, Matrix &filteredA, double rho, double rho2) const
Lightweight MueLu representation of a compressed row storage graph.
void BuildNew(const Matrix &A, const LWGraph &G, const bool lumping, double dirichletThresh, Matrix &filteredA) const
void DeclareInput(Level &currentLevel) const
Input.
Factory for building filtered matrices using filtered graphs.
Base class for factories that use one level (currentLevel).
void BuildNewUsingRootStencil(const Matrix &A, const LWGraph &G, double dirichletThresh, Level &currentLevel, Matrix &filteredA, bool use_spread_lumping, double DdomAllowGrowthRate, double DdomCap) const