46 #ifndef XPETRA_MAPFACTORY_DEF_HPP
47 #define XPETRA_MAPFACTORY_DEF_HPP
51 #ifdef HAVE_XPETRA_TPETRA
52 # include "Xpetra_TpetraMap.hpp"
54 #ifdef HAVE_XPETRA_EPETRA
58 #include "Xpetra_BlockedMap.hpp"
63 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
72 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
73 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
79 GlobalOrdinal indexBase,
84 return Build(lib, numGlobalElements, indexBase, comm, lg);
86 #endif // TPETRA_ENABLE_DEPRECATED_CODE
90 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
95 GlobalOrdinal indexBase,
101 #ifdef HAVE_XPETRA_TPETRA
112 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
113 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
119 size_t numLocalElements,
120 GlobalOrdinal indexBase,
124 return Build(lib, numGlobalElements, numLocalElements, indexBase, comm);
126 #endif // TPETRA_ENABLE_DEPRECATED_CODE
130 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
135 size_t numLocalElements,
136 GlobalOrdinal indexBase,
141 #ifdef HAVE_XPETRA_TPETRA
152 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
153 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
160 GlobalOrdinal indexBase,
164 return Build(lib, numGlobalElements, elementList, indexBase, comm);
166 #endif // TPETRA_ENABLE_DEPRECATED_CODE
170 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
176 GlobalOrdinal indexBase,
181 #ifdef HAVE_XPETRA_TPETRA
192 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
196 LocalOrdinal numDofPerNode)
206 "Xpetra::MapFactory::Build: When provided a BlockedMap numDofPerNode must set to be one. It is set to "
207 << numDofPerNode <<
".");
211 #ifdef HAVE_XPETRA_TPETRA
212 LocalOrdinal N = map->getNodeNumElements();
215 for(LocalOrdinal i = 0; i < N; i++)
217 for(LocalOrdinal j = 0; j < numDofPerNode; j++)
219 newElements[ i * numDofPerNode + j ] = oldElements[ i ] * numDofPerNode + j;
225 (map->getGlobalNumElements() * numDofPerNode, newElements, map->getIndexBase(), map->getComm())
236 #ifdef HAVE_XPETRA_KOKKOS_REFACTOR
237 #ifdef HAVE_XPETRA_TPETRA
238 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
243 const Kokkos::View<const GlobalOrdinal*, typename Node::device_type>& indexList,
244 GlobalOrdinal indexBase,
253 #endif // HAVE_XPETRA_TPETRA
254 #endif // HAVE_XPETRA_KOKKOS_REFACTOR
258 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
267 #ifdef HAVE_XPETRA_TPETRA
278 #endif // HAVE_XPETRA_TPETRA
286 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
287 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
298 #endif // TPETRA_ENABLE_DEPRECATED_CODE
301 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
310 #ifdef HAVE_XPETRA_TPETRA
315 #endif // HAVE_XPETRA_TPETRA
323 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
324 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
333 return createUniformContigMapWithNode(lib, numElements, comm);
335 #endif // TPETRA_ENABLE_DEPRECATED_CODE
339 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
348 #ifdef HAVE_XPETRA_TPETRA
351 Tpetra::createUniformContigMapWithNode<LocalOrdinal, GlobalOrdinal, Node>(numElements, comm)));
352 #endif // HAVE_XPETRA_TPETRA
360 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
369 #ifdef HAVE_XPETRA_TPETRA
372 Tpetra::createUniformContigMapWithNode<LocalOrdinal, GlobalOrdinal, Node>(numElements, comm)));
373 #endif // HAVE_XPETRA_TPETRA
380 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
385 size_t localNumElements,
390 #ifdef HAVE_XPETRA_TPETRA
393 Tpetra::createContigMapWithNode<LocalOrdinal, GlobalOrdinal, Node>(numElements, localNumElements, comm)));
394 #endif // HAVE_XPETRA_TPETRA
402 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
403 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
409 size_t localNumElements,
415 #endif // TPETRA_ENABLE_DEPRECATED_CODE
419 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
424 size_t localNumElements,
429 #ifdef HAVE_XPETRA_TPETRA
433 Tpetra::createContigMapWithNode<LocalOrdinal, GlobalOrdinal, Node>(numElements, localNumElements, comm)));
435 #endif // HAVE_XPETRA_TPETRA
445 #endif // XPETRA_MAPFACTORY_DEF_HPP
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.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
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.
Exception throws to report errors in the internal logical of the program.
#define XPETRA_FACTORY_ERROR_IF_EPETRA(lib)
MapFactory()
Private constructor. This is a static class.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
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.
Teuchos::RCP< const TpetraMap< LocalOrdinal, GlobalOrdinal, Node > > createLocalMapWithNode(size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm)
Non-member function to create a locally replicated Map with a specified node.
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.
#define XPETRA_FACTORY_END
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.
#define XPETRA_MONITOR(funcName)
Teuchos::RCP< const TpetraMap< LocalOrdinal, GlobalOrdinal, Node > > createContigMapWithNode(global_size_t numElements, size_t localNumElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm)
Non-member function to create a (potentially) non-uniform, contiguous Map with a user-specified node...
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.