Reference documentation for deal.II version 9.3.3
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
trilinos_epetra_communication_pattern.cc
Go to the documentation of this file.
1// ---------------------------------------------------------------------
2//
3// Copyright (C) 2015 - 2020 by the deal.II authors
4//
5// This file is part of the deal.II library.
6//
7// The deal.II library is free software; you can use it, redistribute
8// it, and/or modify it under the terms of the GNU Lesser General
9// Public License as published by the Free Software Foundation; either
10// version 2.1 of the License, or (at your option) any later version.
11// The full text of the license can be found in the file LICENSE.md at
12// the top level directory of deal.II.
13//
14// ---------------------------------------------------------------------
15
17
18#ifdef DEAL_II_WITH_TRILINOS
19
20# ifdef DEAL_II_WITH_MPI
21
23
24# include <Epetra_Map.h>
25
26# include <memory>
27
29
30namespace LinearAlgebra
31{
32 namespace EpetraWrappers
33 {
35 const IndexSet &vector_space_vector_index_set,
36 const IndexSet &read_write_vector_index_set,
37 const MPI_Comm &communicator)
38 {
39 // virtual functions called in constructors and destructors never use the
40 // override in a derived class
41 // for clarity be explicit on which function is called
42 CommunicationPattern::reinit(vector_space_vector_index_set,
43 read_write_vector_index_set,
44 communicator);
45 }
46
47
48
49 void
50 CommunicationPattern::reinit(const IndexSet &vector_space_vector_index_set,
51 const IndexSet &read_write_vector_index_set,
52 const MPI_Comm &communicator)
53 {
54 comm = std::make_shared<const MPI_Comm>(communicator);
55
56 Epetra_Map vector_space_vector_map =
57 vector_space_vector_index_set.make_trilinos_map(*comm, false);
58 Epetra_Map read_write_vector_map =
59 read_write_vector_index_set.make_trilinos_map(*comm, true);
60
61 // Target map is read_write_vector_map
62 // Source map is vector_space_vector_map. This map must have uniquely
63 // owned GID.
64 importer = std::make_unique<Epetra_Import>(read_write_vector_map,
65 vector_space_vector_map);
66 }
67
68
69
70 const MPI_Comm &
72 {
73 return *comm;
74 }
75
76
77
78 const Epetra_Import &
80 {
81 return *importer;
82 }
83 } // namespace EpetraWrappers
84} // namespace LinearAlgebra
85
87
88# endif
89
90#endif
Epetra_Map make_trilinos_map(const MPI_Comm &communicator=MPI_COMM_WORLD, const bool overlapping=false) const
Definition: index_set.cc:596
CommunicationPattern(const IndexSet &vector_space_vector_index_set, const IndexSet &read_write_vector_index_set, const MPI_Comm &communicator)
virtual void reinit(const IndexSet &vector_space_vector_index_set, const IndexSet &read_write_vector_index_set, const MPI_Comm &communicator) override
#define DEAL_II_NAMESPACE_OPEN
Definition: config.h:402
#define DEAL_II_NAMESPACE_CLOSE
Definition: config.h:403