16 #ifndef dealii_mg_transfer_h 17 #define dealii_mg_transfer_h 48 template <
typename VectorType>
56 template <
typename SparsityPatternType,
int dim,
int spacedim>
61 const SparsityPatternType &sp,
70 #ifdef DEAL_II_WITH_TRILINOS 71 template <
typename Number>
79 template <
typename SparsityPatternType,
int dim,
int spacedim>
84 const SparsityPatternType & sp,
87 const ::parallel::TriangulationBase<dim, spacedim> *dist_tria =
89 const ::parallel::TriangulationBase<dim, spacedim> *
>(
92 dist_tria !=
nullptr ? dist_tria->get_communicator() : MPI_COMM_SELF;
110 template <
typename SparsityPatternType,
int dim,
int spacedim>
115 const SparsityPatternType & sp,
118 const ::parallel::TriangulationBase<dim, spacedim> *dist_tria =
120 const ::parallel::TriangulationBase<dim, spacedim> *
>(
123 dist_tria !=
nullptr ? dist_tria->get_communicator() : MPI_COMM_SELF;
132 # ifdef DEAL_II_WITH_MPI 133 # ifdef DEAL_II_TRILINOS_WITH_TPETRA 134 template <
typename Number>
142 template <
typename SparsityPatternType,
int dim,
int spacedim>
147 const SparsityPatternType & sp,
150 const ::parallel::TriangulationBase<dim, spacedim> *dist_tria =
152 const ::parallel::TriangulationBase<dim, spacedim> *
>(
155 dist_tria !=
nullptr ? dist_tria->get_communicator() : MPI_COMM_SELF;
173 template <
typename SparsityPatternType,
int dim,
int spacedim>
178 const SparsityPatternType & sp,
181 const ::parallel::TriangulationBase<dim, spacedim> *dist_tria =
183 const ::parallel::TriangulationBase<dim, spacedim> *
>(
186 dist_tria !=
nullptr ? dist_tria->get_communicator() : MPI_COMM_SELF;
198 template <
typename Number>
206 template <
typename SparsityPatternType,
int dim,
int spacedim>
211 const SparsityPatternType &,
217 "ERROR: MGTransferPrebuilt with LinearAlgebra::distributed::Vector currently " 218 "needs deal.II to be configured with Trilinos."));
224 #ifdef DEAL_II_WITH_PETSC 233 template <
typename SparsityPatternType,
int dim,
int spacedim>
238 const SparsityPatternType & sp,
241 const ::parallel::TriangulationBase<dim, spacedim> *dist_tria =
243 const ::parallel::TriangulationBase<dim, spacedim> *
>(
246 dist_tria !=
nullptr ? dist_tria->get_communicator() : MPI_COMM_SELF;
270 template <
typename VectorType>
286 template <
int dim,
class InVector,
int spacedim>
290 const InVector & src)
const;
299 template <
int dim,
class OutVector,
int spacedim>
310 template <
int dim,
class OutVector,
int spacedim>
332 set_component_to_block_map(
const std::vector<unsigned int> &map);
344 print_indices(std::ostream &os)
const;
350 template <
int dim,
int spacedim>
352 fill_and_communicate_copy_indices(
358 std::vector<types::global_dof_index>
sizes;
368 std::vector<std::pair<types::global_dof_index, types::global_dof_index>>>
379 std::vector<std::pair<types::global_dof_index, types::global_dof_index>>>
390 std::vector<std::pair<types::global_dof_index, types::global_dof_index>>>
417 template <
int dim,
int spacedim>
432 template <
typename Number>
434 :
public MGTransferBase<LinearAlgebra::distributed::Vector<Number>>
449 template <
int dim,
typename Number2,
int spacedim>
462 template <
int dim,
typename Number2,
int spacedim>
474 template <
int dim,
typename Number2,
int spacedim>
497 set_component_to_block_map(
const std::vector<unsigned int> &map);
509 print_indices(std::ostream &os)
const;
516 template <
int dim,
typename Number2,
int spacedim>
521 const bool solution_transfer)
const;
526 template <
int dim,
int spacedim>
528 fill_and_communicate_copy_indices(
534 std::vector<types::global_dof_index>
sizes;
639 template <
int dim,
int spacedim>
656 template <
typename VectorType>
693 template <
int dim,
int spacedim>
702 template <
int dim,
int spacedim>
718 prolongate(
const unsigned int to_level,
738 restrict_and_add(
const unsigned int from_level,
762 print_matrices(std::ostream &os)
const;
769 std::shared_ptr<typename internal::MatrixSelector<VectorType>::Sparsity>>
778 std::shared_ptr<typename internal::MatrixSelector<VectorType>::Matrix>>
static void reinit(Matrix &matrix, Sparsity &, int level, const SparsityPatternType &sp, const DoFHandler< dim, spacedim > &dh)
std::vector< Table< 2, unsigned int > > copy_indices_global_mine
std::vector< std::vector< std::pair< types::global_dof_index, types::global_dof_index > > > copy_indices
Contents is actually a matrix.
static void reinit(Matrix &matrix, Sparsity &, int level, const SparsityPatternType &sp, const DoFHandler< dim, spacedim > &dh)
LinearAlgebra::distributed::Vector< Number > solution_ghosted_global_vector
std::vector< Table< 2, unsigned int > > solution_copy_indices_level_mine
std::vector< types::global_dof_index > sizes
std::vector< Table< 2, unsigned int > > copy_indices
#define AssertThrow(cond, exc)
std::vector< unsigned int > component_to_block_map
static void reinit(Matrix &matrix, Sparsity &sparsity, int level, const SparsityPatternType &sp, const DoFHandler< dim, spacedim > &)
LinearAlgebra::distributed::Vector< Number > ghosted_global_vector
virtual void reinit(const SparsityPattern &sparsity)
std::vector< Table< 2, unsigned int > > solution_copy_indices_global_mine
std::vector< std::vector< std::pair< types::global_dof_index, types::global_dof_index > > > copy_indices_level_mine
std::vector< Table< 2, unsigned int > > copy_indices_level_mine
#define DeclException0(Exception0)
bool perform_renumbered_plain_copy
#define DEAL_II_NAMESPACE_CLOSE
std::vector< unsigned int > component_to_block_map
static void reinit(Matrix &matrix, Sparsity &, int level, const SparsityPatternType &sp, const DoFHandler< dim, spacedim > &dh)
std::vector< std::vector< std::pair< types::global_dof_index, types::global_dof_index > > > copy_indices_global_mine
SmartPointer< const MGConstrainedDoFs, MGLevelGlobalTransfer< VectorType > > mg_constrained_dofs
void copy_from(const size_type n_rows, const size_type n_cols, const ForwardIterator begin, const ForwardIterator end)
SparseMatrix< double > SparseMatrix
std::vector< std::shared_ptr< typename internal::MatrixSelector< VectorType >::Sparsity > > prolongation_sparsities
void reinit(const MPI_Comm &communicator, const size_type m, const size_type n, const size_type local_rows, const size_type local_columns, const size_type n_nonzero_per_row, const bool is_symmetric=false, const size_type n_offdiag_nonzero_per_row=0)
std::vector< types::global_dof_index > sizes
SmartPointer< const MGConstrainedDoFs, MGLevelGlobalTransfer< LinearAlgebra::distributed::Vector< Number > > > mg_constrained_dofs
void reinit(const SparsityPatternType &sparsity_pattern)
static void reinit(Matrix &matrix, Sparsity &, int level, const SparsityPatternType &sp, const DoFHandler< dim, spacedim > &dh)
const Triangulation< dim, spacedim > & get_triangulation() const
#define DEAL_II_NAMESPACE_OPEN
MGLevelObject< LinearAlgebra::distributed::Vector< Number > > solution_ghosted_level_vector
std::vector< Table< 2, unsigned int > > solution_copy_indices
static ::ExceptionBase & ExcNotImplemented()
std::vector< std::vector< bool > > interface_dofs
const IndexSet & locally_owned_mg_dofs(const unsigned int level) const
std::vector< std::shared_ptr< typename internal::MatrixSelector< VectorType >::Matrix > > prolongation_matrices
#define DEAL_II_DEPRECATED
MGLevelObject< LinearAlgebra::distributed::Vector< Number > > ghosted_level_vector
static void reinit(Matrix &matrix, Sparsity &, int level, const SparsityPatternType &sp, const DoFHandler< dim, spacedim > &dh)
static const bool requires_distributed_sparsity_pattern
std::enable_if< std::is_fundamental< T >::value, std::size_t >::type memory_consumption(const T &t)