46 #include "Xpetra_MapFactory.hpp"
48 #include "Xpetra_BlockedMap.hpp"
50 #include "Xpetra_TpetraMap.hpp"
54 #if defined(HAVE_XPETRA_EPETRA)
57 #if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES)
66 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
77 return Build(lib, numGlobalElements, indexBase, comm, lg);
79 #endif // TPETRA_ENABLE_DEPRECATED_CODE
82 RCP<Map<int, int, EpetraNode>>
96 #ifdef HAVE_XPETRA_TPETRA
108 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
114 size_t numLocalElements,
119 return Build(lib, numGlobalElements, numLocalElements, indexBase, comm);
121 #endif // TPETRA_ENABLE_DEPRECATED_CODE
124 RCP<Map<int, int, EpetraNode> >
128 size_t numLocalElements,
138 #ifdef HAVE_XPETRA_TPETRA
150 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
161 return Build(lib, numGlobalElements, elementList, indexBase, comm);
163 #endif // TPETRA_ENABLE_DEPRECATED_CODE
166 RCP<Map<int, int, EpetraNode> >
179 #ifdef HAVE_XPETRA_TPETRA
182 #endif // HAVE_XPETRA_TPETRA
208 "Xpetra::MapFactory::Build: When provided a BlockedMap numDofPerNode must set to be one. It is set to " << numDofPerNode <<
".");
212 LocalOrdinal N = Teuchos::as<LocalOrdinal>(map->getNodeNumElements());
219 newElements[i*numDofPerNode + j] = oldElements[i]*numDofPerNode + j;
223 #ifdef HAVE_XPETRA_TPETRA
228 #endif // HAVE_XPETRA_TPETRA
232 return rcp(
new EpetraMapT<int, Node>(map->getGlobalNumElements()*numDofPerNode, newElements, map->getIndexBase(), map->getComm()) );
251 #ifdef HAVE_XPETRA_TPETRA
253 #if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \
254 (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT))))
258 "Xpetra::MapFactory::createLocalMap: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=int");
260 #endif // HAVE_XPETRA_TPETRA
276 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
287 #endif // TPETRA_ENABLE_DEPRECATED_CODE
303 #ifdef HAVE_XPETRA_TPETRA
305 #if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \
306 (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT))))
310 "Xpetra::MapFactory::createLocalMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=int");
312 #endif // HAVE_XPETRA_TPETRA
328 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
339 #endif // TPETRA_ENABLE_DEPRECATED_CODE
355 #ifdef HAVE_XPETRA_TPETRA
357 #if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \
358 (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT))))
362 "Xpetra::MapFactory::createUniformContigMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=int");
364 #endif // HAVE_XPETRA_TPETRA
390 #ifdef HAVE_XPETRA_TPETRA
392 #if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \
393 (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT))))
397 "Xpetra::MapFactory::createUniformContigMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=int");
399 #endif // HAVE_XPETRA_TPETRA
417 size_t localNumElements,
426 #ifdef HAVE_XPETRA_TPETRA
428 #if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \
429 (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT))))
433 "Xpetra::MapFactory::createContigMap: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=int");
446 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
452 size_t localNumElements,
458 #endif // TPETRA_ENABLE_DEPRECATED_CODE
465 size_t localNumElements,
474 #ifdef HAVE_XPETRA_TPETRA
476 #if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \
477 (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT))))
481 "Xpetra::MapFactory::createContigMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=int");
498 #endif // #if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES)
508 #if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES)
519 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
530 return Build(lib, numGlobalElements, indexBase, comm, lg);
532 #endif // TPETRA_ENABLE_DEPRECATED_CODE
535 RCP<Map<int, long long, EpetraNode>>
549 #ifdef HAVE_XPETRA_TPETRA
561 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
567 size_t numLocalElements,
572 return Build(lib, numGlobalElements, numLocalElements, indexBase, comm);
574 #endif // TPETRA_ENABLE_DEPRECATED_CODE
577 RCP<Map<int, long long, EpetraNode> >
581 size_t numLocalElements,
591 #ifdef HAVE_XPETRA_TPETRA
603 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
614 return Build(lib, numGlobalElements, elementList, indexBase, comm);
616 #endif // TPETRA_ENABLE_DEPRECATED_CODE
619 RCP<Map<int, long long, EpetraNode> >
633 #ifdef HAVE_XPETRA_TPETRA
660 "Xpetra::MapFactory::Build: When provided a BlockedMap numDofPerNode must set to be one. It is set to " << numDofPerNode <<
".");
669 newElements[i*numDofPerNode + j] = oldElements[i]*numDofPerNode + j;
671 #ifdef HAVE_XPETRA_TPETRA
695 #ifdef HAVE_XPETRA_TPETRA
697 #if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \
698 (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))))
702 "Xpetra::MapFactory::createLocalMap: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=long long");
713 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
724 #endif // TPETRA_ENABLE_DEPRECATED_CODE
739 #ifdef HAVE_XPETRA_TPETRA
741 #if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \
742 (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))))
746 "Xpetra::MapFactory::createLocalMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=long long");
762 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
773 #endif // TPETRA_ENABLE_DEPRECATED_CODE
788 #ifdef HAVE_XPETRA_TPETRA
790 #if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \
791 (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))))
795 "Xpetra::MapFactory::createUniformContigMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=long long");
823 #ifdef HAVE_XPETRA_TPETRA
825 #if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \
826 (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))))
830 "Xpetra::MapFactory::createUniformContigMap: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=long long");
844 size_t localNumElements,
853 #ifdef HAVE_XPETRA_TPETRA
855 #if((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) \
856 || (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))))
858 Tpetra::createContigMapWithNode<int, GlobalOrdinal, Node>(numElements, localNumElements, comm)));
862 "Xpetra::MapFactory::createContigMap: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on "
863 "EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=long long");
874 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
880 size_t localNumElements,
886 #endif // TPETRA_ENABLE_DEPRECATED_CODE
893 size_t localNumElements,
902 #ifdef HAVE_XPETRA_TPETRA
904 #if((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) \
905 || (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))))
907 Tpetra::createContigMapWithNode<int, GlobalOrdinal, Node>(numElements, localNumElements, comm)));
911 "Xpetra::MapFactory::createContigMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not "
912 "instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=long long");
914 #endif // HAVE_XPETRA_TPETRA
931 #endif // #if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES)
934 #endif // #if defined(HAVE_XPETRA_EPETRA)
RCP< const T > getConst() const
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.
Kokkos::Compat::KokkosSerialWrapperNode EpetraNode
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.
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)
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.