MueLu  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MueLu_Q2Q1Q2CoarseGridFactory_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_Q2Q1Q2COARSEGRIDFACTORY_DECL_HPP
11 #define MUELU_Q2Q1Q2COARSEGRIDFACTORY_DECL_HPP
12 
13 #include "MueLu_ConfigDefs.hpp"
15 //#include "MueLu_Q2Q1Q2CoarseGridFactory_fwd.hpp"
16 
17 #include <Xpetra_Matrix_fwd.hpp>
18 
19 #include "MueLu_Level_fwd.hpp"
20 #include "MueLu_PFactory.hpp"
21 
22 namespace MueLu {
23 
30 template <class Scalar = DefaultScalar,
33  class Node = DefaultNode>
35 #undef MUELU_Q2Q1Q2COARSEGRIDFACTORY_SHORT
36 #include "MueLu_UseShortNames.hpp"
37 
38  public:
40 
41 
44 
46  virtual ~Q2Q1Q2CoarseGridFactory();
47 
49 
51 
52 
59  void DeclareInput(Level &fineLevel, Level &coarseLevel) const;
60 
62 
64 
65 
67  void Build(Level &fineLevel, Level &coarseLevel) const;
68 
69  void BuildCoarseGrid(Level &fineLevel, Level &coarseLevel) const;
70 
71  /* For our geometric multigrid needs, we will explicitly build the
72  coarse grid here and store it as level data. There are two
73  things we care about here: coordinates of the dofs and
74  element-dof lists.
75 
76  We will assume only that the elements are numbered
77  lexicographically, left-to-right, bottom-to-top. The order of
78  the degrees of freedom will only be assumed on coarse grids. It
79  can be anything on the finest grid (fineLevel.GetLevelID()==1).
80 
81  We further assume that the x- and y-components of velocity are
82  zippered together: UX1 UY1 UX2 UY2 ETC...
83  */
84 
86 
87  private:
88  // No parameters need to be stored... To save "P", use
89  // coarseLevel.Set("P", finalP, this);
90 
91 }; // class Q2Q1Q2CoarseGridFactory
92 
93 } // namespace MueLu
94 
95 #define MUELU_Q2Q1Q2COARSEGRIDFACTORY_SHORT
96 #endif // MUELU_Q2Q1Q2COARSEGRIDFACTORY_DECL_HPP
MueLu::DefaultLocalOrdinal LocalOrdinal
Tpetra::KokkosClassic::DefaultNode::DefaultNodeType DefaultNode
Factory for GMG Q2-Q1-Q2 interpolation.
Base class for factories that use two levels (fineLevel and coarseLevel).
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
void BuildCoarseGrid(Level &fineLevel, Level &coarseLevel) const
void DeclareInput(Level &fineLevel, Level &coarseLevel) const
Specifies the data that this class needs, and the factories that generate that data.
void Build(Level &fineLevel, Level &coarseLevel) const
Build an object with this factory.