31 #include <deal.II/multigrid/mg_transfer_block.templates.h> 33 #include <deal.II/multigrid/mg_transfer_component.templates.h> 34 #include <deal.II/multigrid/multigrid.templates.h> 52 template <
typename number>
54 : memory(nullptr, typeid(*this).name())
58 template <
typename number>
66 template <
typename number>
76 template <
typename number>
100 for (
unsigned int b = 0;
b < this->
mg_block.size(); ++
b)
109 template <
typename number>
122 for (
unsigned int b = 0;
b < this->
mg_block.size(); ++
b)
132 *aux, src.
block(this->mg_block[b]));
151 std::size_t result =
sizeof(*this);
155 sizeof(mg_target_component);
158 sizeof(component_start);
160 sizeof(mg_component_start);
176 std::size_t result =
sizeof(*this);
177 result +=
sizeof(
unsigned int) *
sizes.size();
197 template <
typename number>
199 : selected_component(0)
200 , mg_selected_component(0)
204 template <
typename number>
213 template <
typename number>
230 template <
typename number>
242 .Tvmult_add(dst, src);
248 template <
typename number>
255 template <
typename number>
264 template <
typename number>
287 template <
typename number>
298 .Tvmult_add(dst, src);
305 #include "multigrid.inst"
std::vector< std::shared_ptr< BlockSparseMatrix< double > > > prolongation_matrices
std::size_t memory_consumption() const
virtual VectorType * alloc()=0
virtual ~MGTransferBlock() override
static ::ExceptionBase & ExcNotInitialized()
virtual void prolongate(const unsigned int to_level, Vector< number > &dst, const Vector< number > &src) const override
std::vector< types::global_dof_index > block_start
static ::ExceptionBase & ExcIndexRange(int arg1, int arg2, int arg3)
SmartPointer< const MGConstrainedDoFs, MGTransferBlockBase > mg_constrained_dofs
virtual void free(const VectorType *const)=0
void add(const std::vector< size_type > &indices, const std::vector< OtherNumber > &values)
std::vector< std::vector< types::global_dof_index > > sizes
std::vector< std::shared_ptr< BlockSparseMatrix< double > > > prolongation_matrices
#define Assert(cond, exc)
std::size_t memory_consumption() const
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
virtual void restrict_and_add(const unsigned int from_level, Vector< number > &dst, const Vector< number > &src) const override
#define DEAL_II_NAMESPACE_CLOSE
virtual void restrict_and_add(const unsigned int from_level, BlockVector< number > &dst, const BlockVector< number > &src) const override
std::vector< std::shared_ptr< BlockSparsityPattern > > prolongation_sparsities
virtual void restrict_and_add(const unsigned int from_level, Vector< number > &dst, const Vector< number > &src) const override
const IndexSet & get_local_lines() const
SymmetricTensor< 2, dim, Number > b(const Tensor< 2, dim, Number > &F)
virtual void prolongate(const unsigned int to_level, Vector< number > &dst, const Vector< number > &src) const override
std::vector< unsigned int > mg_block
unsigned int mg_selected_component
std::vector< unsigned int > mg_target_component
std::vector< std::vector< types::global_dof_index > > mg_block_start
unsigned int n_blocks() const
SmartPointer< const AffineConstraints< double > > constraints
#define DEAL_II_NAMESPACE_OPEN
virtual void reinit(const size_type N, const bool omit_zeroing_entries=false)
SmartPointer< VectorMemory< Vector< number > >, MGTransferBlock< number > > memory
static ::ExceptionBase & ExcNotImplemented()
std::vector< number > factors
const AffineConstraints< double > & get_user_constraint_matrix(const unsigned int level) const
BlockType & block(const unsigned int i)
virtual void prolongate(const unsigned int to_level, BlockVector< number > &dst, const BlockVector< number > &src) const override
void initialize(const std::vector< number > &factors, VectorMemory< Vector< number >> &memory)
std::vector< bool > selected
unsigned int selected_block
std::enable_if< std::is_fundamental< T >::value, std::size_t >::type memory_consumption(const T &t)
unsigned int selected_component