29#include <deal.II/multigrid/mg_transfer_block.templates.h>
31#include <deal.II/multigrid/mg_transfer_component.templates.h>
32#include <deal.II/multigrid/multigrid.templates.h>
50template <
typename number>
52 :
memory(nullptr, typeid(*this).name())
56template <
typename number>
64template <
typename number>
74template <
typename number>
98 for (
unsigned int b = 0; b < this->
mg_block.size(); ++b)
102 dst.
block(this->mg_block[b]), src.
block(this->mg_block[b]));
107template <
typename number>
120 for (
unsigned int b = 0; b < this->
mg_block.size(); ++b)
130 *aux, src.
block(this->mg_block[b]));
138 dst.
block(this->mg_block[b]), src.
block(this->mg_block[b]));
149 std::size_t result =
sizeof(*this);
174 std::size_t result =
sizeof(*this);
175 result +=
sizeof(
unsigned int) *
sizes.size();
195template <
typename number>
202template <
typename number>
211template <
typename number>
228template <
typename number>
240 .Tvmult_add(dst, src);
246template <
typename number>
253template <
typename number>
262template <
typename number>
285template <
typename number>
296 .Tvmult_add(dst, src);
303#include "multigrid.inst"
unsigned int n_blocks() const
BlockType & block(const unsigned int i)
std::vector< unsigned int > mg_block
std::vector< std::vector< types::global_dof_index > > sizes
std::vector< bool > selected
std::vector< types::global_dof_index > block_start
std::vector< std::shared_ptr< BlockSparseMatrix< double > > > prolongation_matrices
std::vector< std::shared_ptr< BlockSparsityPattern > > prolongation_sparsities
SmartPointer< const MGConstrainedDoFs, MGTransferBlockBase > mg_constrained_dofs
std::vector< std::vector< types::global_dof_index > > mg_block_start
std::size_t memory_consumption() const
virtual void prolongate(const unsigned int to_level, Vector< number > &dst, const Vector< number > &src) const override
virtual void restrict_and_add(const unsigned int from_level, Vector< number > &dst, const Vector< number > &src) const override
unsigned int selected_block
std::vector< number > factors
virtual void prolongate(const unsigned int to_level, BlockVector< number > &dst, const BlockVector< number > &src) const override
virtual void restrict_and_add(const unsigned int from_level, BlockVector< number > &dst, const BlockVector< number > &src) const override
virtual ~MGTransferBlock() override
void initialize(const std::vector< number > &factors, VectorMemory< Vector< number > > &memory)
SmartPointer< VectorMemory< Vector< number > >, MGTransferBlock< number > > memory
std::vector< unsigned int > mg_target_component
ComponentMask component_mask
std::vector< unsigned int > target_component
std::vector< types::global_dof_index > component_start
std::vector< std::shared_ptr< BlockSparseMatrix< double > > > prolongation_matrices
std::vector< std::vector< types::global_dof_index > > mg_component_start
std::vector< std::shared_ptr< BlockSparsityPattern > > prolongation_sparsities
std::vector< std::vector< types::global_dof_index > > sizes
std::size_t memory_consumption() const
virtual void prolongate(const unsigned int to_level, Vector< number > &dst, const Vector< number > &src) const override
SmartPointer< const AffineConstraints< double > > constraints
unsigned int mg_selected_component
unsigned int selected_component
virtual void restrict_and_add(const unsigned int from_level, Vector< number > &dst, const Vector< number > &src) const override
virtual void reinit(const size_type N, const bool omit_zeroing_entries=false)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
static ::ExceptionBase & ExcIndexRange(std::size_t arg1, std::size_t arg2, std::size_t arg3)
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
static ::ExceptionBase & ExcNotInitialized()
std::enable_if_t< std::is_fundamental_v< T >, std::size_t > memory_consumption(const T &t)