Xpetra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Xpetra_StridedMapFactory_decl.hpp
Go to the documentation of this file.
1 // @HEADER
2 //
3 // ***********************************************************************
4 //
5 // Xpetra: A linear algebra interface package
6 // Copyright 2012 Sandia Corporation
7 //
8 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9 // the U.S. Government retains certain rights in this software.
10 //
11 // Redistribution and use in source and binary forms, with or without
12 // modification, are permitted provided that the following conditions are
13 // met:
14 //
15 // 1. Redistributions of source code must retain the above copyright
16 // notice, this list of conditions and the following disclaimer.
17 //
18 // 2. Redistributions in binary form must reproduce the above copyright
19 // notice, this list of conditions and the following disclaimer in the
20 // documentation and/or other materials provided with the distribution.
21 //
22 // 3. Neither the name of the Corporation nor the names of the
23 // contributors may be used to endorse or promote products derived from
24 // this software without specific prior written permission.
25 //
26 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 //
38 // Questions? Contact
39 // Jonathan Hu (jhu@sandia.gov)
40 // Andrey Prokopenko (aprokop@sandia.gov)
41 // Ray Tuminaro (rstumin@sandia.gov)
42 //
43 // ***********************************************************************
44 //
45 // @HEADER
46 
47 #ifndef XPETRA_STRIDEDMAPFACTORY_DECL_HPP
48 #define XPETRA_STRIDEDMAPFACTORY_DECL_HPP
49 
50 #include <Tpetra_KokkosCompat_DefaultNode.hpp>
51 
52 #include "Xpetra_ConfigDefs.hpp"
53 
55 
56 namespace Xpetra {
57 
66 template <class LocalOrdinal,
67  class GlobalOrdinal,
68  class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
69 class StridedMapFactory {
70 #undef XPETRA_STRIDEDMAPFACTORY_SHORT
72 
73  private:
75  StridedMapFactory() = delete;
76 
77  public:
79  static RCP<Xpetra::StridedMap<LocalOrdinal, GlobalOrdinal, Node>>
80  Build(UnderlyingLib lib,
81  global_size_t numGlobalElements,
82  GlobalOrdinal indexBase,
83  std::vector<size_t>& stridingInfo,
84  const Teuchos::RCP<const Teuchos::Comm<int>>& comm,
85  LocalOrdinal stridedBlockId = -1,
86  GlobalOrdinal offset = 0,
88 
90  static RCP<StridedMap>
91  Build(UnderlyingLib lib,
92  global_size_t numGlobalElements,
93  size_t numLocalElements,
94  GlobalOrdinal indexBase,
95  std::vector<size_t>& stridingInfo,
96  const Teuchos::RCP<const Teuchos::Comm<int>>& comm,
97  LocalOrdinal stridedBlockId = -1,
98  GlobalOrdinal offset = 0);
99 
101  static RCP<StridedMap>
102  Build(const RCP<const Map>& map, std::vector<size_t>& stridingInfo, LocalOrdinal stridedBlockId = -1, GlobalOrdinal offset = 0);
103 
105  static RCP<StridedMap>
106  Build(const RCP<const StridedMap>& map, LocalOrdinal stridedBlockId);
107 
109  static RCP<StridedMap>
110  Build(const StridedMap& map);
111 
117  static RCP<StridedMap>
118  Build(UnderlyingLib lib,
119  global_size_t numGlobalElements,
120  const Teuchos::ArrayView<const GlobalOrdinal>& elementList,
121  GlobalOrdinal indexBase,
122  std::vector<size_t>& stridingInfo,
123  const Teuchos::RCP<const Teuchos::Comm<int>>& comm,
124  LocalOrdinal stridedBlockId = -1, // FIXME (mfh 03 Sep 2014) This breaks if LocalOrdinal is unsigned
125  GlobalOrdinal /* offset */ = 0);
126 
127 }; // class StridedMapFactory
128 
129 } // namespace Xpetra
130 
131 #define XPETRA_STRIDEDMAPFACTORY_SHORT
132 #endif // XPETRA_STRIDEDMAPFACTORY_DECL_HPP
133 
134 // TODO: removed unused methods
StridedMapFactory()=delete
Private constructor. This is a static class.
size_t global_size_t
Global size_t object.
static RCP< Xpetra::StridedMap< LocalOrdinal, GlobalOrdinal, Node > > Build(UnderlyingLib lib, global_size_t numGlobalElements, GlobalOrdinal indexBase, std::vector< size_t > &stridingInfo, const Teuchos::RCP< const Teuchos::Comm< int >> &comm, LocalOrdinal stridedBlockId=-1, GlobalOrdinal offset=0, LocalGlobal lg=Xpetra::GloballyDistributed)
Map constructor with Xpetra-defined contiguous uniform distribution.