16 #include <deal.II/base/std_cxx14/memory.h> 18 #include <deal.II/lac/trilinos_tpetra_communication_pattern.h> 20 #ifdef DEAL_II_TRILINOS_WITH_TPETRA 22 # ifdef DEAL_II_WITH_MPI 24 # include <deal.II/base/index_set.h> 26 # include <Tpetra_Map.hpp> 30 DEAL_II_NAMESPACE_OPEN
34 namespace TpetraWrappers
36 CommunicationPattern::CommunicationPattern(
37 const IndexSet &vector_space_vector_index_set,
38 const IndexSet &read_write_vector_index_set,
39 const MPI_Comm &communicator)
44 CommunicationPattern::reinit(vector_space_vector_index_set,
45 read_write_vector_index_set,
52 CommunicationPattern::reinit(
const IndexSet &vector_space_vector_index_set,
53 const IndexSet &read_write_vector_index_set,
54 const MPI_Comm &communicator)
56 comm = std::make_shared<const MPI_Comm>(communicator);
58 auto vector_space_vector_map =
59 Teuchos::rcp(
new Tpetra::Map<int, types::global_dof_index>(
60 vector_space_vector_index_set.make_tpetra_map(*comm,
false)));
61 auto read_write_vector_map =
62 Teuchos::rcp(
new Tpetra::Map<int, types::global_dof_index>(
63 read_write_vector_index_set.make_tpetra_map(*comm,
true)));
69 std_cxx14::make_unique<Tpetra::Import<int, types::global_dof_index>>(
70 read_write_vector_map, vector_space_vector_map);
72 std_cxx14::make_unique<Tpetra::Export<int, types::global_dof_index>>(
73 read_write_vector_map, vector_space_vector_map);
79 CommunicationPattern::get_mpi_communicator()
const 86 const Tpetra::Import<int, types::global_dof_index> &
87 CommunicationPattern::get_tpetra_import()
const 89 return *tpetra_import;
94 const Tpetra::Export<int, types::global_dof_index> &
95 CommunicationPattern::get_tpetra_export()
const 97 return *tpetra_export;
102 DEAL_II_NAMESPACE_CLOSE