46 #ifndef XPETRA_MAPFACTORY_HPP 47 #define XPETRA_MAPFACTORY_HPP 52 #ifdef HAVE_XPETRA_TPETRA 55 #ifdef HAVE_XPETRA_EPETRA 67 template <class LocalOrdinal = Map<>::local_ordinal_type,
85 return KokkosClassic::Details::getNode<Node>();
92 GlobalOrdinal indexBase,
99 #ifdef HAVE_XPETRA_TPETRA 112 size_t numLocalElements,
113 GlobalOrdinal indexBase,
119 #ifdef HAVE_XPETRA_TPETRA 133 GlobalOrdinal indexBase,
139 #ifdef HAVE_XPETRA_TPETRA 151 LocalOrdinal numDofPerNode)
155 #ifdef HAVE_XPETRA_TPETRA 156 LocalOrdinal N = map->getNodeNumElements();
159 for (LocalOrdinal i = 0; i < N; i++)
160 for (LocalOrdinal j = 0; j < numDofPerNode; j++)
161 newElements[i*numDofPerNode + j] = oldElements[i]*numDofPerNode + j;
178 #ifdef HAVE_XPETRA_TPETRA 196 #ifdef HAVE_XPETRA_TPETRA 214 #ifdef HAVE_XPETRA_TPETRA 231 #ifdef HAVE_XPETRA_TPETRA 244 size_t localNumElements,
249 #ifdef HAVE_XPETRA_TPETRA 262 size_t localNumElements,
268 #ifdef HAVE_XPETRA_TPETRA 299 return KokkosClassic::Details::getNode<Node>();
311 #ifdef HAVE_XPETRA_TPETRA 316 #ifdef HAVE_XPETRA_EPETRA 317 #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES 329 size_t numLocalElements,
336 #ifdef HAVE_XPETRA_TPETRA 341 #ifdef HAVE_XPETRA_EPETRA 342 #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES 344 return rcp(
new EpetraMapT<int>(numGlobalElements, numLocalElements, indexBase, comm, node) );
354 #ifdef HAVE_XPETRA_TPETRA 359 #ifdef HAVE_XPETRA_EPETRA 360 #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES 362 return rcp(
new EpetraMapT<int>(numGlobalElements, elementList, indexBase, comm, node) );
373 LocalOrdinal N = map->getNodeNumElements();
376 for (LocalOrdinal i = 0; i < N; i++)
377 for (LocalOrdinal j = 0; j < numDofPerNode; j++)
378 newElements[i*numDofPerNode + j] = oldElements[i]*numDofPerNode + j;
380 #ifdef HAVE_XPETRA_TPETRA 385 #ifdef HAVE_XPETRA_EPETRA 386 #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES 388 return rcp(
new EpetraMapT<int>(map->getGlobalNumElements()*numDofPerNode, newElements, map->getIndexBase(), map->getComm(), map->getNode()) );
399 #ifdef HAVE_XPETRA_TPETRA 404 #ifdef HAVE_XPETRA_EPETRA 405 #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES 419 #ifdef HAVE_XPETRA_TPETRA 424 #ifdef HAVE_XPETRA_EPETRA 425 #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES 448 #ifdef HAVE_XPETRA_TPETRA 453 #ifdef HAVE_XPETRA_EPETRA 454 #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES 474 #ifdef HAVE_XPETRA_TPETRA 479 #ifdef HAVE_XPETRA_EPETRA 480 #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES 494 #ifdef HAVE_XPETRA_TPETRA 499 #ifdef HAVE_XPETRA_EPETRA 500 #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES 514 #ifdef HAVE_XPETRA_TPETRA 519 #ifdef HAVE_XPETRA_EPETRA 520 #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES 538 #ifdef HAVE_XPETRA_INT_LONG_LONG 542 typedef int LocalOrdinal;
543 typedef long long GlobalOrdinal;
560 return KokkosClassic::Details::getNode<Node>();
572 #ifdef HAVE_XPETRA_TPETRA 577 #ifdef HAVE_XPETRA_EPETRA 578 #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES 590 size_t numLocalElements,
597 #ifdef HAVE_XPETRA_TPETRA 602 #ifdef HAVE_XPETRA_EPETRA 603 #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES 615 #ifdef HAVE_XPETRA_TPETRA 620 #ifdef HAVE_XPETRA_EPETRA 621 #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES 634 LocalOrdinal N = map->getNodeNumElements();
637 for (LocalOrdinal i = 0; i < N; i++)
638 for (LocalOrdinal j = 0; j < numDofPerNode; j++)
639 newElements[i*numDofPerNode + j] = oldElements[i]*numDofPerNode + j;
641 #ifdef HAVE_XPETRA_TPETRA 646 #ifdef HAVE_XPETRA_EPETRA 647 #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES 649 return rcp(
new EpetraMapT<long long>(map->getGlobalNumElements()*numDofPerNode, newElements, map->getIndexBase(), map->getComm(), map->getNode()) );
660 #ifdef HAVE_XPETRA_TPETRA 665 #ifdef HAVE_XPETRA_EPETRA 666 #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES 680 #ifdef HAVE_XPETRA_TPETRA 685 #ifdef HAVE_XPETRA_EPETRA 686 #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES 709 #ifdef HAVE_XPETRA_TPETRA 714 #ifdef HAVE_XPETRA_EPETRA 715 #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES 735 #ifdef HAVE_XPETRA_TPETRA 740 #ifdef HAVE_XPETRA_EPETRA 741 #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES 755 #ifdef HAVE_XPETRA_TPETRA 760 #ifdef HAVE_XPETRA_EPETRA 761 #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES 775 #ifdef HAVE_XPETRA_TPETRA 780 #ifdef HAVE_XPETRA_EPETRA 781 #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES 798 #endif // HAVE_XPETRA_INT_LONG_LONG 802 #define XPETRA_MAPFACTORY_SHORT RCP< const T > getConst() const
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, const Teuchos::RCP< Node > &node)
Create a (potentially) non-uniform, contiguous Map with a user-specified node.
static Teuchos::RCP< Node > defaultArgNode()
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, const Teuchos::RCP< Node > &node=defaultArgNode())
Map constructor with Xpetra-defined contiguous uniform distribution.
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.
GlobalOrdinal global_ordinal_type
static Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createUniformContigMapWithNode(UnderlyingLib lib, global_size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm, const Teuchos::RCP< Node > &node)
Create a uniform, contiguous Map with a user-specified node.
MapFactory()
Private constructor. This is a static class.
static Teuchos::RCP< Map< LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &map, LocalOrdinal numDofPerNode)
Map constructor transforming degrees of freedom.
static Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createLocalMap(UnderlyingLib lib, size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm)
static Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createLocalMapWithNode(UnderlyingLib lib, size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm, const Teuchos::RCP< Node > &node)
static RCP< Map< LocalOrdinal, GlobalOrdinal, Node > > Build(UnderlyingLib lib, global_size_t numGlobalElements, const Teuchos::ArrayView< const GlobalOrdinal > &elementList, int indexBase, const Teuchos::RCP< const Teuchos::Comm< int > > &comm, const Teuchos::RCP< Node > &node=defaultArgNode())
static RCP< Map< LocalOrdinal, GlobalOrdinal, Node > > Build(UnderlyingLib lib, global_size_t numGlobalElements, int indexBase, const Teuchos::RCP< const Teuchos::Comm< int > > &comm, LocalGlobal lg=GloballyDistributed, const Teuchos::RCP< Node > &node=defaultArgNode())
static RCP< Map< LocalOrdinal, GlobalOrdinal, Node > > Build(UnderlyingLib lib, global_size_t numGlobalElements, size_t numLocalElements, int indexBase, const Teuchos::RCP< const Teuchos::Comm< int > > &comm, const Teuchos::RCP< Node > &node=defaultArgNode())
Map< int, GlobalOrdinal >::node_type Node
#define XPETRA_FACTORY_ERROR_IF_EPETRA(lib)
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, size_t numLocalElements, GlobalOrdinal indexBase, const Teuchos::RCP< const Teuchos::Comm< int > > &comm, const Teuchos::RCP< Node > &node=defaultArgNode())
Map constructor with a user-defined contiguous distribution.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
static Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createUniformContigMap(UnderlyingLib lib, global_size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm)
#define XPETRA_FACTORY_END
static Teuchos::RCP< Node > defaultArgNode()
size_t global_size_t
Global size_t object.
static Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createLocalMapWithNode(UnderlyingLib lib, size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm, const Teuchos::RCP< Node > &node)
Create a locally replicated Map with a specified node.
Create an Xpetra::Map instance.
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)
#define XPETRA_MONITOR(funcName)
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, const Teuchos::RCP< Node > &node)
static Teuchos::RCP< Map< LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &map, LocalOrdinal numDofPerNode)
Map constructor transforming degrees of freedom.
static Teuchos::RCP< Map< LocalOrdinal, GlobalOrdinal, Node > > Build(UnderlyingLib lib, global_size_t numGlobalElements, const Teuchos::ArrayView< const GlobalOrdinal > &elementList, GlobalOrdinal indexBase, const Teuchos::RCP< const Teuchos::Comm< int > > &comm, const Teuchos::RCP< Node > &node=defaultArgNode())
Map constructor with user-defined non-contiguous (arbitrary) distribution.
static Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createUniformContigMapWithNode(UnderlyingLib lib, global_size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm, const Teuchos::RCP< Node > &node)