8 #include "Teuchos_CommHelpers.hpp"
9 #include "Teuchos_DefaultComm.hpp"
10 #include "Teuchos_RCP.hpp"
11 #include "Teuchos_Array.hpp"
12 #include "Tpetra_Core.hpp"
13 #include "Tpetra_Map.hpp"
14 #include "Tpetra_Vector.hpp"
22 int main(
int narg,
char **arg)
24 typedef Tpetra::Map<>
map_t;
25 typedef map_t::local_ordinal_type
lno_t;
26 typedef map_t::global_ordinal_type
gno_t;
29 Tpetra::ScopeGuard tscope(&narg, &arg);
30 Teuchos::RCP<const Teuchos::Comm<int> > comm = Tpetra::getDefaultComm();
31 int me = comm->getRank();
37 lno_t numLocalCoords = 15;
38 lno_t offset = me * 10;
40 Teuchos::Array<gno_t> gids(numLocalCoords);
41 for (lno_t i = 0 ; i < numLocalCoords; i++)
42 gids[i] = static_cast<gno_t> (offset + i);
45 Teuchos::OrdinalTraits<Tpetra::global_size_t>::invalid();
46 Teuchos::RCP<const map_t> mapWithCopies =
47 rcp(
new map_t(numGlobalCoords, gids(), 0, comm));
50 Teuchos::RCP<const map_t> oneToOneMap =
51 Tpetra::createOneToOne<lno_t, gno_t>(mapWithCopies);
54 typedef Tpetra::Vector<scalar_t, lno_t, gno_t> vector_t;
56 vector_t vecWithCopies(mapWithCopies);
57 vector_t oneToOneVec(oneToOneMap);
60 for (lno_t i = 0; i <
lno_t(oneToOneMap->getLocalNumElements()); i++)
61 oneToOneVec.replaceLocalValue(i, me);
64 Teuchos::RCP<const Tpetra::Import<lno_t, gno_t> > importer =
65 Tpetra::createImport<lno_t, gno_t>(oneToOneMap, mapWithCopies);
66 vecWithCopies.doImport(oneToOneVec, *importer, Tpetra::REPLACE);
69 std::cout << me <<
" ONE TO ONE VEC ("
70 << oneToOneMap->getGlobalNumElements() <<
"): ";
71 lno_t nlocal =
lno_t(oneToOneMap->getLocalNumElements());
72 for (lno_t i = 0; i < nlocal; i++)
73 std::cout <<
"[" << oneToOneMap->getGlobalElement(i) <<
" "
74 << oneToOneVec.getData()[i] <<
"] ";
75 std::cout << std::endl;
78 std::cout << me <<
" VEC WITH COPIES ("
79 << mapWithCopies->getGlobalNumElements() <<
"): ";
80 nlocal =
lno_t(mapWithCopies->getLocalNumElements());
81 for (lno_t i = 0; i < nlocal; i++)
82 std::cout <<
"[" << mapWithCopies->getGlobalElement(i) <<
" "
83 << vecWithCopies.getData()[i] <<
"] ";
84 std::cout << std::endl;
map_t::global_ordinal_type gno_t
int main(int narg, char **arg)
map_t::local_ordinal_type lno_t
Tpetra::global_size_t global_size_t