All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Xpetra_MapFactory_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 #ifndef XPETRA_MAPFACTORY_DECL_HPP
47 #define XPETRA_MAPFACTORY_DECL_HPP
48 
49 #include "Xpetra_ConfigDefs.hpp"
50 
51 #include "Xpetra_Map.hpp"
52 #include "Xpetra_Exceptions.hpp"
53 
54 namespace Xpetra {
55 
61 template<class LocalOrdinal,
62  class GlobalOrdinal,
63  class Node = typename Map<LocalOrdinal, GlobalOrdinal>::node_type>
65 {
66 
67 
68  private:
69 
70 
73 
74 
75  public:
76 
77 
79 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
80  TPETRA_DEPRECATED
82  Build(UnderlyingLib lib,
83  global_size_t numGlobalElements,
84  GlobalOrdinal indexBase,
85  const Teuchos::RCP<const Teuchos::Comm<int>>& comm,
86  LocalGlobal lg,
87  const Teuchos::RCP<Node>& /* node */);
88 #endif // TPETRA_ENABLE_DEPRECATED_CODE
89 
90 
92  Build(UnderlyingLib lib,
93  global_size_t numGlobalElements,
94  GlobalOrdinal indexBase,
95  const Teuchos::RCP<const Teuchos::Comm<int>>& comm,
97 
98 
100 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
101  TPETRA_DEPRECATED
103  Build(UnderlyingLib lib,
104  global_size_t numGlobalElements,
105  size_t numLocalElements,
106  GlobalOrdinal indexBase,
107  const Teuchos::RCP<const Teuchos::Comm<int>>& comm,
108  const Teuchos::RCP<Node>& /* node */);
109 #endif // TPETRA_ENABLE_DEPRECATED_CODE
110 
111 
113  Build(UnderlyingLib lib,
114  global_size_t numGlobalElements,
115  size_t numLocalElements,
116  GlobalOrdinal indexBase,
117  const Teuchos::RCP<const Teuchos::Comm<int>>& comm);
118 
119 
121 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
122  TPETRA_DEPRECATED
124  Build(UnderlyingLib lib,
125  global_size_t numGlobalElements,
126  const Teuchos::ArrayView<const GlobalOrdinal>& elementList,
127  GlobalOrdinal indexBase,
128  const Teuchos::RCP<const Teuchos::Comm<int>>& comm,
129  const Teuchos::RCP<Node>& /* node */);
130 #endif // TPETRA_ENABLE_DEPRECATED_CODE
131 
132 
134  Build(UnderlyingLib lib,
135  global_size_t numGlobalElements,
136  const Teuchos::ArrayView<const GlobalOrdinal>& elementList,
137  GlobalOrdinal indexBase,
138  const Teuchos::RCP<const Teuchos::Comm<int>>& comm);
139 
140 
145  LocalOrdinal numDofPerNode);
146 
147 
148 #ifdef HAVE_XPETRA_KOKKOS_REFACTOR
149 #ifdef HAVE_XPETRA_TPETRA
151  Build(UnderlyingLib lib,
152  global_size_t numGlobalElements,
153  const Kokkos::View<const GlobalOrdinal*, typename Node::device_type>& indexList,
154  GlobalOrdinal indexBase,
155  const Teuchos::RCP<const Teuchos::Comm<int>>& comm);
156 #endif
157 #endif // HAVE_XPETRA_KOKKOS_REFACTOR
158 
159 
163  size_t numElements,
164  const Teuchos::RCP<const Teuchos::Comm<int>>& comm);
165 
166 
168 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
169  TPETRA_DEPRECATED
172  size_t numElements,
173  const Teuchos::RCP<const Teuchos::Comm<int>>& comm,
174  const Teuchos::RCP<Node>& /* node */);
175 #endif // TPETRA_ENABLE_DEPRECATED_CODE
176 
177 
180  size_t numElements,
181  const Teuchos::RCP<const Teuchos::Comm<int>>& comm);
182 
183 
185 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
186  TPETRA_DEPRECATED
189  global_size_t numElements,
190  const Teuchos::RCP<const Teuchos::Comm<int>>& comm,
191  const Teuchos::RCP<Node>& /* node */);
192 #endif // TPETRA_ENABLE_DEPRECATED_CODE
193 
194 
197  global_size_t numElements,
198  const Teuchos::RCP<const Teuchos::Comm<int>>& comm);
199 
200 
204  global_size_t numElements,
205  const Teuchos::RCP<const Teuchos::Comm<int>>& comm);
206 
207 
211  global_size_t numElements,
212  size_t localNumElements,
213  const Teuchos::RCP<const Teuchos::Comm<int>>& comm);
214 
215 
217 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
218  TPETRA_DEPRECATED
221  global_size_t numElements,
222  size_t localNumElements,
223  const Teuchos::RCP<const Teuchos::Comm<int>>& comm,
224  const Teuchos::RCP<Node>& /* node */);
225 #endif // TPETRA_ENABLE_DEPRECATED_CODE
226 
227 
230  global_size_t numElements,
231  size_t localNumElements,
232  const Teuchos::RCP<const Teuchos::Comm<int>>& comm);
233 
234 
235 }; // class MapFactory
236 
237 
238 
242 
243 
244 #if defined(HAVE_XPETRA_EPETRA)
245 
246 
247 #if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES)
248 
249 
250  template <>
251  class MapFactory<int, int, EpetraNode>
252  {
253 
254  typedef int LocalOrdinal;
255  typedef int GlobalOrdinal;
256  typedef EpetraNode Node;
257 
258  private:
259 
261  MapFactory();
262 
263  public:
264 
265 
266 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
267  TPETRA_DEPRECATED
269  Build (UnderlyingLib lib,
270  global_size_t numGlobalElements,
271  int indexBase,
272  const Teuchos::RCP<const Teuchos::Comm<int> > &comm,
273  LocalGlobal lg,
274  const Teuchos::RCP<Node>& /* node */ );
275 #endif // TPETRA_ENABLE_DEPRECATED_CODE
276 
277 
279  Build (UnderlyingLib lib,
280  global_size_t numGlobalElements,
281  int indexBase,
282  const Teuchos::RCP<const Teuchos::Comm<int> > &comm,
284 
285 
286 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
287  TPETRA_DEPRECATED
289  Build (UnderlyingLib lib,
290  global_size_t numGlobalElements,
291  size_t numLocalElements,
292  int indexBase,
293  const Teuchos::RCP<const Teuchos::Comm<int> > &comm,
294  const Teuchos::RCP<Node>& /* node */ );
295 #endif // TPETRA_ENABLE_DEPRECATED_CODE
296 
297 
299  Build (UnderlyingLib lib,
300  global_size_t numGlobalElements,
301  size_t numLocalElements,
302  int indexBase,
303  const Teuchos::RCP<const Teuchos::Comm<int> > &comm);
304 
305 
306 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
307  TPETRA_DEPRECATED
309  Build(UnderlyingLib lib,
310  global_size_t numGlobalElements,
311  const Teuchos::ArrayView<const GlobalOrdinal> &elementList,
312  int indexBase,
313  const Teuchos::RCP<const Teuchos::Comm<int> > &comm,
314  const Teuchos::RCP<Node>& /* node */ );
315 #endif // TPETRA_ENABLE_DEPRECATED_CODE
316 
317 
319  Build(UnderlyingLib lib,
320  global_size_t numGlobalElements,
321  const Teuchos::ArrayView<const GlobalOrdinal> &elementList,
322  int indexBase,
323  const Teuchos::RCP<const Teuchos::Comm<int> > &comm);
324 
329  LocalOrdinal numDofPerNode);
330 
331 
334  size_t numElements,
335  const Teuchos::RCP< const Teuchos::Comm< int > > &comm);
336 
337 
338  // TODO remove this
339 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
340  TPETRA_DEPRECATED
343  size_t numElements,
344  const Teuchos::RCP< const Teuchos::Comm< int > > &comm,
345  const Teuchos::RCP<Node> & /* node */);
346 #endif // TPETRA_ENABLE_DEPRECATED_CODE
347 
348 
351  size_t numElements,
352  const Teuchos::RCP< const Teuchos::Comm< int > > &comm);
353 
354 
355  // TODO remove this
356 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
357  TPETRA_DEPRECATED
360  const Teuchos::RCP< const Teuchos::Comm< int > > &comm,
361  const Teuchos::RCP<Node>& /* node */);
362 #endif // TPETRA_ENABLE_DEPRECATED_CODE
363 
364 
365 
368  const Teuchos::RCP< const Teuchos::Comm< int > > &comm);
369 
370 
373  global_size_t numElements,
374  const Teuchos::RCP< const Teuchos::Comm< int > > &comm);
375 
376 
379  global_size_t numElements,
380  size_t localNumElements,
381  const Teuchos::RCP< const Teuchos::Comm< int > > &comm);
382 
383 
384 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
385  TPETRA_DEPRECATED
388  global_size_t numElements,
389  size_t localNumElements,
390  const Teuchos::RCP< const Teuchos::Comm< int > > &comm,
391  const Teuchos::RCP<Node> & /* node */);
392 #endif // TPETRA_ENABLE_DEPRECATED_CODE
393 
394 
397  global_size_t numElements,
398  size_t localNumElements,
399  const Teuchos::RCP< const Teuchos::Comm< int > > &comm);
400 
401  }; // class MapFactory<int, int ... > specialization
402 
403 
404 #endif // #if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES)
405 
406 
407 
408 
409 
410 
411 // we need the Epetra specialization only if Epetra is enabled
412 #if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES)
413 
414 
415  template <>
416  class MapFactory<int, long long, EpetraNode>
417  {
418 
419  typedef int LocalOrdinal;
420  typedef long long GlobalOrdinal;
421  typedef EpetraNode Node;
422 
423  private:
424 
426  MapFactory();
427 
428  public:
429 
430 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
431  TPETRA_DEPRECATED
433  Build (UnderlyingLib lib,
434  global_size_t numGlobalElements,
435  int indexBase,
436  const Teuchos::RCP<const Teuchos::Comm<int> > &comm,
437  LocalGlobal lg,
438  const Teuchos::RCP<Node>& /* node */);
439 #endif // TPETRA_ENABLE_DEPRECATED_CODE
440 
441 
443  Build (UnderlyingLib lib,
444  global_size_t numGlobalElements,
445  int indexBase,
446  const Teuchos::RCP<const Teuchos::Comm<int> > &comm,
448 
449 
450 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
451  TPETRA_DEPRECATED
453  Build (UnderlyingLib lib,
454  global_size_t numGlobalElements,
455  size_t numLocalElements,
456  int indexBase,
457  const Teuchos::RCP<const Teuchos::Comm<int> > &comm,
458  const Teuchos::RCP<Node>& /* node */);
459 #endif // TPETRA_ENABLE_DEPRECATED_CODE
460 
461 
463  Build (UnderlyingLib lib,
464  global_size_t numGlobalElements,
465  size_t numLocalElements,
466  int indexBase,
467  const Teuchos::RCP<const Teuchos::Comm<int> > &comm);
468 
469 
470 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
471  TPETRA_DEPRECATED
473  Build(UnderlyingLib lib,
474  global_size_t numGlobalElements,
475  const Teuchos::ArrayView<const GlobalOrdinal> &elementList,
476  int indexBase,
477  const Teuchos::RCP<const Teuchos::Comm<int> > &comm,
478  const Teuchos::RCP<Node>& /* node */);
479 #endif // TPETRA_ENABLE_DEPRECATED_CODE
480 
481 
483  Build(UnderlyingLib lib,
484  global_size_t numGlobalElements,
485  const Teuchos::ArrayView<const GlobalOrdinal> &elementList,
486  int indexBase,
487  const Teuchos::RCP<const Teuchos::Comm<int> > &comm);
488 
489 
494  LocalOrdinal numDofPerNode);
495 
496 
499  size_t numElements,
500  const Teuchos::RCP< const Teuchos::Comm< int > > &comm);
501 
502 
503 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
504  TPETRA_DEPRECATED
507  size_t numElements,
508  const Teuchos::RCP< const Teuchos::Comm< int > > &comm,
509  const Teuchos::RCP<Node> & /* node */);
510 #endif // TPETRA_ENABLE_DEPRECATED_CODE
511 
512 
515  size_t numElements,
516  const Teuchos::RCP< const Teuchos::Comm< int > > &comm);
517 
518 
519 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
520  TPETRA_DEPRECATED
523  const Teuchos::RCP< const Teuchos::Comm< int > > &comm,
524  const Teuchos::RCP<Node>& /* node */);
525 #endif // TPETRA_ENABLE_DEPRECATED_CODE
526 
527 
530  const Teuchos::RCP< const Teuchos::Comm< int > > &comm);
531 
532 
535  global_size_t numElements,
536  const Teuchos::RCP< const Teuchos::Comm< int > > &comm);
537 
538 
541  global_size_t numElements,
542  size_t localNumElements,
543  const Teuchos::RCP< const Teuchos::Comm< int > > &comm);
544 
545 
546 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
547  TPETRA_DEPRECATED
550  global_size_t numElements,
551  size_t localNumElements,
552  const Teuchos::RCP< const Teuchos::Comm< int > > &comm,
553  const Teuchos::RCP<Node> & /* node */ );
554 #endif // TPETRA_ENABLE_DEPRECATED_CODE
555 
556 
559  global_size_t numElements,
560  size_t localNumElements,
561  const Teuchos::RCP< const Teuchos::Comm< int > > &comm);
562 
563  }; // class MapFactory<int, long long, EpetraNode> specialization
564 
565 
566 #endif // #if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES)
567 
568 
569 #endif // #if defined(HAVE_XPETRA_EPETRA)
570 
571 
572 } // namespace Xpetra
573 
574 
575 #define XPETRA_MAPFACTORY_SHORT
576 
577 #endif // XPETRA_MAPFACTORY_DECL_HPP
578 
579 // TODO: removed unused methods
static Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createLocalMap(UnderlyingLib lib, size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int >> &comm)
Create a locally replicated Map with the default node.
static Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createContigMap(UnderlyingLib lib, global_size_t numElements, size_t localNumElements, const Teuchos::RCP< const Teuchos::Comm< int >> &comm)
Create a (potentially) non-uniform, contiguous Map with the default node.
MapFactory()
Private constructor. This is a static class.
static Teuchos::RCP< Map< LocalOrdinal, GlobalOrdinal, Node > > Build(UnderlyingLib lib, global_size_t numGlobalElements, GlobalOrdinal indexBase, const Teuchos::RCP< const Teuchos::Comm< int >> &comm, LocalGlobal lg=Xpetra::GloballyDistributed)
Map constructor with Xpetra-defined contiguous uniform distribution.
static Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createContigMapWithNode(UnderlyingLib lib, global_size_t numElements, size_t localNumElements, const Teuchos::RCP< const Teuchos::Comm< int >> &comm)
Create a (potentially) non-uniform, contiguous Map with a user-specified node.
size_t global_size_t
Global size_t object.
static Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createUniformContigMapWithNode(UnderlyingLib lib, global_size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int >> &comm)
Create a uniform, contiguous Map with a user-specified node.
static Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createLocalMapWithNode(UnderlyingLib lib, size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int >> &comm)
Create a locally replicated Map with a specified node.
Create an Xpetra::Map instance.
static Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createUniformContigMap(UnderlyingLib lib, global_size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int >> &comm)
Create a uniform, contiguous Map with the default node.