13#ifndef dealii_mg_transfer_h
14#define dealii_mg_transfer_h
46 template <
typename VectorType>
54 template <
typename SparsityPatternType,
int dim,
int spacedim>
59 const SparsityPatternType &sp,
64 matrix.reinit(sparsity);
68#ifdef DEAL_II_WITH_TRILINOS
69# ifdef DEAL_II_TRILINOS_WITH_EPETRA
70 template <
typename Number>
78 template <
typename SparsityPatternType,
int dim,
int spacedim>
83 const SparsityPatternType &sp,
104 template <
typename SparsityPatternType,
int dim,
int spacedim>
109 const SparsityPatternType &sp,
123# ifdef DEAL_II_WITH_MPI
124# ifdef DEAL_II_TRILINOS_WITH_TPETRA
125 template <
typename Number,
typename MemorySpace>
137 template <
typename SparsityPatternType,
int dim,
int spacedim>
142 const SparsityPatternType &sp,
156# ifdef DEAL_II_TRILINOS_WITH_EPETRA
165 template <
typename SparsityPatternType,
int dim,
int spacedim>
170 const SparsityPatternType &sp,
187 template <
typename Number>
188 struct MatrixSelector<
LinearAlgebra::distributed::Vector<Number>>
195 template <
typename SparsityPatternType,
int dim,
int spacedim>
200 const SparsityPatternType &,
206 "ERROR: MGTransferPrebuilt with LinearAlgebra::distributed::Vector currently "
207 "needs deal.II to be configured with Trilinos."));
213#ifdef DEAL_II_WITH_PETSC
222 template <
typename SparsityPatternType,
int dim,
int spacedim>
227 const SparsityPatternType &sp,
255template <
typename VectorType>
271 template <
int dim,
class InVector,
int spacedim>
275 const InVector &src)
const;
284 template <
int dim,
class OutVector,
int spacedim>
295 template <
int dim,
class OutVector,
int spacedim>
335 template <
int dim,
int spacedim>
343 std::vector<types::global_dof_index>
sizes;
353 std::vector<std::pair<types::global_dof_index, types::global_dof_index>>>
364 std::vector<std::pair<types::global_dof_index, types::global_dof_index>>>
375 std::vector<std::pair<types::global_dof_index, types::global_dof_index>>>
401 template <
int dim,
int spacedim>
416template <
typename Number,
typename MemorySpace>
420 LinearAlgebra::distributed::Vector<Number, MemorySpace>>
435 template <
int dim,
typename Number2,
int spacedim>
449 template <
int dim,
typename Number2,
int spacedim>
462 template <
int dim,
typename Number2,
int spacedim>
505 template <
int dim,
typename Number2,
int spacedim>
511 const bool solution_transfer)
const;
516 template <
int dim,
int spacedim>
524 std::vector<types::global_dof_index>
sizes;
615 std::function<void(
const unsigned int,
623 template <
int dim,
int spacedim>
640template <
typename VectorType>
677 template <
int dim,
int spacedim>
695 const VectorType &src)
const override;
715 const VectorType &src)
const override;
744 std::shared_ptr<typename internal::MatrixSelector<VectorType>::Sparsity>>
753 std::shared_ptr<typename internal::MatrixSelector<VectorType>::Matrix>>
const IndexSet & locally_owned_mg_dofs(const unsigned int level) const
MPI_Comm get_mpi_communicator() const
void assert_built(const DoFHandler< dim, spacedim > &dof_handler) const
std::vector< Table< 2, unsigned int > > solution_copy_indices_level_mine
std::vector< Table< 2, unsigned int > > copy_indices_level_mine
std::vector< Table< 2, unsigned int > > solution_copy_indices
std::vector< unsigned int > component_to_block_map
ObserverPointer< const MGConstrainedDoFs > mg_constrained_dofs
bool perform_renumbered_plain_copy
LinearAlgebra::distributed::Vector< Number, MemorySpace > ghosted_global_vector
std::function< void(const unsigned int, LinearAlgebra::distributed::Vector< Number, MemorySpace > &)> initialize_dof_vector
void copy_to_mg(const DoFHandler< dim, spacedim > &dof_handler, MGLevelObject< LinearAlgebra::distributed::Vector< Number, MemorySpace > > &dst, const LinearAlgebra::distributed::Vector< Number2, MemorySpace > &src) const
LinearAlgebra::distributed::Vector< Number, MemorySpace > solution_ghosted_global_vector
void copy_to_mg(const DoFHandler< dim, spacedim > &dof_handler, MGLevelObject< LinearAlgebra::distributed::Vector< Number, MemorySpace > > &dst, const LinearAlgebra::distributed::Vector< Number2, MemorySpace > &src, const bool solution_transfer) const
void set_component_to_block_map(const std::vector< unsigned int > &map)
void copy_from_mg(const DoFHandler< dim, spacedim > &dof_handler, LinearAlgebra::distributed::Vector< Number2, MemorySpace > &dst, const MGLevelObject< LinearAlgebra::distributed::Vector< Number, MemorySpace > > &src) const
void copy_from_mg_add(const DoFHandler< dim, spacedim > &dof_handler, LinearAlgebra::distributed::Vector< Number2, MemorySpace > &dst, const MGLevelObject< LinearAlgebra::distributed::Vector< Number, MemorySpace > > &src) const
std::vector< Table< 2, unsigned int > > copy_indices_global_mine
std::vector< types::global_dof_index > sizes
std::vector< Table< 2, unsigned int > > copy_indices
MGLevelObject< LinearAlgebra::distributed::Vector< Number, MemorySpace > > ghosted_level_vector
void print_indices(std::ostream &os) const
void assert_built(const DoFHandler< dim, spacedim > &dof_handler) const
std::vector< std::vector< std::pair< types::global_dof_index, types::global_dof_index > > > copy_indices_level_mine
std::size_t memory_consumption() const
void set_component_to_block_map(const std::vector< unsigned int > &map)
ObserverPointer< const MGConstrainedDoFs > mg_constrained_dofs
std::vector< std::vector< std::pair< types::global_dof_index, types::global_dof_index > > > copy_indices
void fill_and_communicate_copy_indices(const DoFHandler< dim, spacedim > &dof_handler)
std::vector< unsigned int > component_to_block_map
void copy_from_mg_add(const DoFHandler< dim, spacedim > &dof_handler, OutVector &dst, const MGLevelObject< VectorType > &src) const
std::vector< types::global_dof_index > sizes
std::vector< std::vector< std::pair< types::global_dof_index, types::global_dof_index > > > copy_indices_global_mine
void copy_from_mg(const DoFHandler< dim, spacedim > &dof_handler, OutVector &dst, const MGLevelObject< VectorType > &src) const
void copy_to_mg(const DoFHandler< dim, spacedim > &dof_handler, MGLevelObject< VectorType > &dst, const InVector &src) const
virtual ~MGTransferPrebuilt() override=default
std::vector< std::vector< bool > > interface_dofs
virtual void restrict_and_add(const unsigned int from_level, VectorType &dst, const VectorType &src) const override
void build(const DoFHandler< dim, spacedim > &dof_handler)
std::vector< std::shared_ptr< typename internal::MatrixSelector< VectorType >::Sparsity > > prolongation_sparsities
std::size_t memory_consumption() const
MGTransferPrebuilt()=default
virtual void prolongate(const unsigned int to_level, VectorType &dst, const VectorType &src) const override
std::vector< std::shared_ptr< typename internal::MatrixSelector< VectorType >::Matrix > > prolongation_matrices
void print_matrices(std::ostream &os) const
void initialize_constraints(const MGConstrainedDoFs &mg_constrained_dofs)
void copy_from(const size_type n_rows, const size_type n_cols, const ForwardIterator begin, const ForwardIterator end)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define DeclException0(Exception0)
static ::ExceptionBase & ExcMatricesNotBuilt()
static ::ExceptionBase & ExcNoProlongation()
static ::ExceptionBase & ExcNotImplemented()
#define AssertThrow(cond, exc)
static void reinit(Matrix &matrix, Sparsity &, int level, const SparsityPatternType &sp, const DoFHandler< dim, spacedim > &dh)
static void reinit(Matrix &matrix, Sparsity &, int level, const SparsityPatternType &sp, const DoFHandler< dim, spacedim > &dh)
static void reinit(Matrix &matrix, Sparsity &, int level, const SparsityPatternType &sp, const DoFHandler< dim, spacedim > &dh)
static void reinit(Matrix &matrix, Sparsity &, int level, const SparsityPatternType &sp, const DoFHandler< dim, spacedim > &dh)
static void reinit(Matrix &matrix, Sparsity &, int level, const SparsityPatternType &sp, const DoFHandler< dim, spacedim > &dh)
static const bool requires_distributed_sparsity_pattern
static void reinit(Matrix &matrix, Sparsity &sparsity, int level, const SparsityPatternType &sp, const DoFHandler< dim, spacedim > &)
::SparseMatrix< typename VectorType::value_type > Matrix
::SparsityPattern Sparsity