MueLu  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MueLu_GlobalLexicographicIndexManager_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_GLOBALLEXICOGRPHICINDEXMANAGER_DECL_HPP
11 #define MUELU_GLOBALLEXICOGRPHICINDEXMANAGER_DECL_HPP
12 
13 // use for Teuchos:Comm<T>
14 #include "Teuchos_CommHelpers.hpp"
15 
16 #include <Xpetra_Map_fwd.hpp>
17 
18 #include <MueLu_ConfigDefs.hpp>
19 #include <MueLu_IndexManager.hpp>
21 
22 /*****************************************************************************
23 
24 ****************************************************************************/
25 
26 namespace MueLu {
27 
44 template <class LocalOrdinal = DefaultLocalOrdinal,
46  class Node = DefaultNode>
47 class GlobalLexicographicIndexManager : public IndexManager<LocalOrdinal, GlobalOrdinal, Node> {
48 #undef MUELU_GLOBALLEXICOGRAPHICINDEXMANAGER_SHORT
50 
51  public:
53 
54  GlobalLexicographicIndexManager(const RCP<const Teuchos::Comm<int> > comm, const bool coupled,
55  const int NumDimensions, const int interpolationOrder,
56  const Array<GO> GFineNodesPerDir,
57  const Array<LO> LFineNodesPerDir, const Array<LO> CoarseRate,
58  const GO MinGlobalIndex);
59 
61 
63 
64  void getGhostedNodesData(const RCP<const Map> fineMap,
65  Array<LO>& ghostedNodeCoarseLIDs,
66  Array<int>& ghostedNodeCoarsePIDs,
67  Array<GO>& ghostedNodeCoarseGIDs) const;
68 
69  void getCoarseNodesData(const RCP<const Map> fineCoordinatesMap,
70  Array<GO>& coarseNodeCoarseGIDs,
71  Array<GO>& coarseNodeFineGIDs) const;
72 
73  std::vector<std::vector<GO> > getCoarseMeshData() const;
74 
75  void getFineNodeGlobalTuple(const GO myGID, GO& i, GO& j, GO& k) const;
76 
77  void getFineNodeLocalTuple(const LO myLID, LO& i, LO& j, LO& k) const;
78 
79  void getFineNodeGhostedTuple(const LO myLID, LO& i, LO& j, LO& k) const;
80 
81  void getFineNodeGID(const GO i, const GO j, const GO k, GO& myGID) const;
82 
83  void getFineNodeLID(const LO i, const LO j, const LO k, LO& myLID) const;
84 
85  void getCoarseNodeGlobalTuple(const GO myGID, GO& i, GO& j, GO& k) const;
86 
87  void getCoarseNodeLocalTuple(const LO myLID, LO& i, LO& j, LO& k) const;
88 
89  void getCoarseNodeGID(const GO i, const GO j, const GO k, GO& myGID) const;
90 
91  void getCoarseNodeLID(const LO i, const LO j, const LO k, LO& myLID) const;
92 
93  void getCoarseNodeGhostedLID(const LO i, const LO j, const LO k, LO& myLID) const;
94 
95  void getCoarseNodeFineLID(const LO i, const LO j, const LO k, LO& myLID) const;
96 
97  void getGhostedNodeFineLID(const LO i, const LO j, const LO k, LO& myLID) const;
98 
99  void getGhostedNodeCoarseLID(const LO i, const LO j, const LO k, LO& myLID) const;
100 
101  private:
102 };
103 
104 } // namespace MueLu
105 
106 #define MUELU_GLOBALLEXICOGRPHICINDEXMANAGER_SHORT
107 #endif // MUELU_GLOBALLEXICOGRPHICINDEXMANAGER_DECL_HPP
void getCoarseNodesData(const RCP< const Map > fineCoordinatesMap, Array< GO > &coarseNodeCoarseGIDs, Array< GO > &coarseNodeFineGIDs) const
void getGhostedNodesData(const RCP< const Map > fineMap, Array< LO > &ghostedNodeCoarseLIDs, Array< int > &ghostedNodeCoarsePIDs, Array< GO > &ghostedNodeCoarseGIDs) const
MueLu::DefaultLocalOrdinal LocalOrdinal
Tpetra::KokkosClassic::DefaultNode::DefaultNodeType DefaultNode
void getCoarseNodeLID(const LO i, const LO j, const LO k, LO &myLID) const
GlobalOrdinal GO
LocalOrdinal LO
void getCoarseNodeGID(const GO i, const GO j, const GO k, GO &myGID) const
MueLu::DefaultNode Node
void getGhostedNodeFineLID(const LO i, const LO j, const LO k, LO &myLID) const
void getFineNodeGID(const GO i, const GO j, const GO k, GO &myGID) const
MueLu::DefaultGlobalOrdinal GlobalOrdinal
void getFineNodeGlobalTuple(const GO myGID, GO &i, GO &j, GO &k) const
void getCoarseNodeFineLID(const LO i, const LO j, const LO k, LO &myLID) const
std::vector< std::vector< GO > > getCoarseMeshData() const
void getCoarseNodeLocalTuple(const LO myLID, LO &i, LO &j, LO &k) const
void getCoarseNodeGhostedLID(const LO i, const LO j, const LO k, LO &myLID) const
void getCoarseNodeGlobalTuple(const GO myGID, GO &i, GO &j, GO &k) const
void getFineNodeLocalTuple(const LO myLID, LO &i, LO &j, LO &k) const
void getGhostedNodeCoarseLID(const LO i, const LO j, const LO k, LO &myLID) const
void getFineNodeGhostedTuple(const LO myLID, LO &i, LO &j, LO &k) const
void getFineNodeLID(const LO i, const LO j, const LO k, LO &myLID) const
Container class for mesh layout and indices calculation.