125#ifdef HAVE_XPETRA_TPETRA
136template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
140 const LocalOrdinal numDofPerNode,
const GlobalOrdinal gidOffset)
145 Teuchos::rcp_dynamic_cast<const BlockedMap<LocalOrdinal,GlobalOrdinal,Node>>(nodeMap);
150 "Xpetra::MapFactory::Build: When provided a BlockedMap numDofPerNode must set to be one. It is set to "
151 << numDofPerNode <<
".");
155#ifdef HAVE_XPETRA_TPETRA
156 LocalOrdinal numLocalElements = nodeMap->getLocalNumElements();
159 for (LocalOrdinal i = 0; i < numLocalElements; i++)
161 for (LocalOrdinal j = 0; j < numDofPerNode; j++)
163 newElements[i * numDofPerNode + j] = oldElements[i] * numDofPerNode + j + gidOffset;
169 (nodeMap->getGlobalNumElements() * numDofPerNode, newElements, nodeMap->getIndexBase(), nodeMap->getComm()));
179#ifdef HAVE_XPETRA_TPETRA
180template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
185 const Kokkos::View<const GlobalOrdinal*, typename Node::device_type>& indexList,
186 GlobalOrdinal indexBase,
199template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
208#ifdef HAVE_XPETRA_TPETRA
229template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
230Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>
234 const Teuchos::RCP<
const Teuchos::Comm<int>>& comm)
238#ifdef HAVE_XPETRA_TPETRA
254template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
255Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>
259 const Teuchos::RCP<
const Teuchos::Comm<int>>& comm)
263#ifdef HAVE_XPETRA_TPETRA
266 Tpetra::createUniformContigMapWithNode<LocalOrdinal, GlobalOrdinal, Node>(numElements, comm)));
275template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
276Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>
280 const Teuchos::RCP<
const Teuchos::Comm<int>>& comm)
284#ifdef HAVE_XPETRA_TPETRA
286 return rcp(
new Xpetra::TpetraMap<LocalOrdinal, GlobalOrdinal, Node>(
287 Tpetra::createUniformContigMapWithNode<LocalOrdinal, GlobalOrdinal, Node>(numElements, comm)));
295template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
296Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>
300 size_t localNumElements,
301 const Teuchos::RCP<
const Teuchos::Comm<int>>& comm)
305#ifdef HAVE_XPETRA_TPETRA
307 return rcp(
new Xpetra::TpetraMap<LocalOrdinal, GlobalOrdinal, Node>(
308 Tpetra::createContigMapWithNode<LocalOrdinal, GlobalOrdinal, Node>(numElements, localNumElements, comm)));
320template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
321Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>
325 size_t localNumElements,
326 const Teuchos::RCP<
const Teuchos::Comm<int>>& comm)
330#ifdef HAVE_XPETRA_TPETRA
334 Tpetra::createContigMapWithNode<LocalOrdinal, GlobalOrdinal, Node>(numElements, localNumElements, comm)));
344template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
345Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node> >
348 const Teuchos::RCP<
const Teuchos::Comm<int>>& newComm) {
350 using XMF = Xpetra::MapFactory<LocalOrdinal,GlobalOrdinal,Node>;
353 size_t Nlocal = oldmap->getLocalNumElements();
358 std::logic_error,
"MapFactory::copyMapWithNewComm needs the comm to match the map.");
362 if(!newComm.is_null()) {
363 if(oldmap->isContiguous()) {
364 newMap = XMF::Build(oldmap->lib(),INVALID,Nlocal,oldmap->getIndexBase(),newComm);
367 newMap = XMF::Build(oldmap->lib(),Nglobal,oldmap->getLocalElementList(),oldmap->getIndexBase(),newComm);