17 #ifndef __deal2__mg_transfer_h
18 #define __deal2__mg_transfer_h
20 #include <deal.II/base/config.h>
22 #include <deal.II/lac/block_vector.h>
23 #include <deal.II/lac/constraint_matrix.h>
24 #include <deal.II/lac/sparse_matrix.h>
25 #include <deal.II/lac/block_sparsity_pattern.h>
26 #include <deal.II/lac/trilinos_sparse_matrix.h>
28 #include <deal.II/lac/vector_memory.h>
30 #include <deal.II/multigrid/mg_base.h>
31 #include <deal.II/multigrid/mg_constrained_dofs.h>
32 #include <deal.II/base/mg_level_object.h>
34 #include <deal.II/dofs/dof_handler.h>
36 #include <deal.II/base/std_cxx1x/shared_ptr.h>
42 template <
int dim,
int spacedim>
class DoFHandler;
46 template <
class VECTOR>
50 typedef ::SparseMatrix<typename VECTOR::value_type>
Matrix;
52 template <
class CSP,
class DH>
53 static void reinit(Matrix &matrix, Sparsity &sparsity,
int level,
const CSP &csp,
const DH &)
60 #ifdef DEAL_II_WITH_TRILINOS
64 typedef ::TrilinosWrappers::SparsityPattern
Sparsity;
65 typedef ::TrilinosWrappers::SparseMatrix
Matrix;
67 template <
class CSP,
class DH>
68 static void reinit(Matrix &matrix, Sparsity &sparsity,
int level,
const CSP &csp, DH &dh)
70 matrix.
reinit(dh.locally_owned_mg_dofs(level+1),
71 dh.locally_owned_mg_dofs(level),
72 csp, MPI_COMM_WORLD,
true);
80 typedef ::TrilinosWrappers::SparsityPattern
Sparsity;
81 typedef ::TrilinosWrappers::SparseMatrix
Matrix;
83 template <
class CSP,
class DH>
84 static void reinit(Matrix &matrix, Sparsity &sparsity,
int level,
const CSP &csp, DH &dh)
111 template <
class VECTOR>
136 template <
int dim,
int spacedim>
139 virtual void prolongate (
const unsigned int to_level,
141 const VECTOR &src)
const;
145 const VECTOR &src)
const;
153 template <
int dim,
class InVector,
int spacedim>
157 const InVector &src)
const;
171 template <
int dim,
class OutVector,
int spacedim>
185 template <
int dim,
class OutVector,
int spacedim>
254 std::vector<types::global_dof_index>
sizes;
276 std::vector<std::vector<std::pair<types::global_dof_index, unsigned int> > >
286 std::vector<std::vector<std::pair<types::global_dof_index, unsigned int> > >
296 std::vector<std::vector<std::pair<types::global_dof_index, unsigned int> > >
331 DEAL_II_NAMESPACE_CLOSE
DeclException0(ExcNoProlongation)
void build_matrices(const DoFHandler< dim, spacedim > &mg_dof)
std::vector< unsigned int > component_to_block_map
std::vector< std::vector< std::pair< types::global_dof_index, unsigned int > > > copy_indices
std::vector< std_cxx1x::shared_ptr< typename internal::MatrixSelector< VECTOR >::Sparsity > > prolongation_sparsities
SmartPointer< const ConstraintMatrix, MGTransferPrebuilt< VECTOR > > constraints
void print_matrices(std::ostream &os) const
void reinit(const SparsityType &sparsity_pattern)
virtual void reinit(const SparsityPattern &sparsity)
void set_component_to_block_map(const std::vector< unsigned int > &map)
std::vector< std_cxx1x::shared_ptr< typename internal::MatrixSelector< VECTOR >::Matrix > > prolongation_matrices
virtual void restrict_and_add(const unsigned int from_level, VECTOR &dst, const VECTOR &src) const
std::vector< std::vector< std::pair< types::global_dof_index, unsigned int > > > copy_indices_from_me
virtual ~MGTransferPrebuilt()
void copy_from(const size_type n_rows, const size_type n_cols, const ForwardIterator begin, const ForwardIterator end, const bool optimize_diagonal) DEAL_II_DEPRECATED
void copy_from_mg(const DoFHandler< dim, spacedim > &mg_dof, OutVector &dst, const MGLevelObject< VECTOR > &src) const
void copy_from_mg_add(const DoFHandler< dim, spacedim > &mg_dof, OutVector &dst, const MGLevelObject< VECTOR > &src) const
std::size_t memory_consumption() const
virtual void prolongate(const unsigned int to_level, VECTOR &dst, const VECTOR &src) const
std::vector< std::vector< bool > > interface_dofs
SmartPointer< const MGConstrainedDoFs, MGTransferPrebuilt< VECTOR > > mg_constrained_dofs
std::vector< types::global_dof_index > sizes
void copy_to_mg(const DoFHandler< dim, spacedim > &mg_dof, MGLevelObject< VECTOR > &dst, const InVector &src) const
std::vector< std::vector< std::pair< types::global_dof_index, unsigned int > > > copy_indices_to_me
void print_indices(std::ostream &os) const