Reference documentation for deal.II version 9.1.1
\(\newcommand{\dealcoloneq}{\mathrel{\vcenter{:}}=}\)
Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
MGTransferPrebuilt< VectorType > Class Template Reference

#include <deal.II/multigrid/mg_transfer.h>

Inheritance diagram for MGTransferPrebuilt< VectorType >:
[legend]

Public Member Functions

 MGTransferPrebuilt ()=default
 
 MGTransferPrebuilt (const MGConstrainedDoFs &mg_constrained_dofs)
 
 MGTransferPrebuilt (const AffineConstraints< double > &constraints, const MGConstrainedDoFs &mg_constrained_dofs)
 
virtual ~MGTransferPrebuilt () override=default
 
void initialize_constraints (const MGConstrainedDoFs &mg_constrained_dofs)
 
void initialize_constraints (const AffineConstraints< double > &constraints, const MGConstrainedDoFs &mg_constrained_dofs)
 
void clear ()
 
template<int dim, int spacedim>
void build_matrices (const DoFHandler< dim, spacedim > &mg_dof)
 
virtual void prolongate (const unsigned int to_level, VectorType &dst, const VectorType &src) const override
 
virtual void restrict_and_add (const unsigned int from_level, VectorType &dst, const VectorType &src) const override
 
std::size_t memory_consumption () const
 
void print_matrices (std::ostream &os) const
 
- Public Member Functions inherited from MGLevelGlobalTransfer< VectorType >
void clear ()
 
template<int dim, class InVector , int spacedim>
void copy_to_mg (const DoFHandler< dim, spacedim > &mg_dof, MGLevelObject< VectorType > &dst, const InVector &src) const
 
template<int dim, class OutVector , int spacedim>
void copy_from_mg (const DoFHandler< dim, spacedim > &mg_dof, OutVector &dst, const MGLevelObject< VectorType > &src) const
 
template<int dim, class OutVector , int spacedim>
void copy_from_mg_add (const DoFHandler< dim, spacedim > &mg_dof, OutVector &dst, const MGLevelObject< VectorType > &src) const
 
void set_component_to_block_map (const std::vector< unsigned int > &map)
 
std::size_t memory_consumption () const
 
void print_indices (std::ostream &os) const
 
- Public Member Functions inherited from MGTransferBase< VectorType >
virtual ~MGTransferBase () override=default
 
- Public Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
 Subscriptor (Subscriptor &&) noexcept
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
Subscriptoroperator= (Subscriptor &&) noexcept
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
unsigned int n_subscriptions () const
 
template<typename StreamType >
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Static Public Member Functions

static ::ExceptionBaseExcNoProlongation ()
 
static ::ExceptionBaseExcMatricesNotBuilt ()
 
- Static Public Member Functions inherited from Subscriptor
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 

Private Attributes

std::vector< std::shared_ptr< typename internal::MatrixSelector< VectorType >::Sparsity > > prolongation_sparsities
 
std::vector< std::shared_ptr< typename internal::MatrixSelector< VectorType >::Matrix > > prolongation_matrices
 
std::vector< std::vector< bool > > interface_dofs
 

Additional Inherited Members

- Protected Member Functions inherited from MGLevelGlobalTransfer< VectorType >
template<int dim, int spacedim>
void fill_and_communicate_copy_indices (const DoFHandler< dim, spacedim > &mg_dof)
 
- Protected Attributes inherited from MGLevelGlobalTransfer< VectorType >
std::vector< types::global_dof_indexsizes
 
std::vector< std::vector< std::pair< types::global_dof_index, types::global_dof_index > > > copy_indices
 
std::vector< std::vector< std::pair< types::global_dof_index, types::global_dof_index > > > copy_indices_global_mine
 
std::vector< std::vector< std::pair< types::global_dof_index, types::global_dof_index > > > copy_indices_level_mine
 
bool perform_plain_copy
 
std::vector< unsigned int > component_to_block_map
 
SmartPointer< const MGConstrainedDoFs, MGLevelGlobalTransfer< VectorType > > mg_constrained_dofs
 

Detailed Description

template<typename VectorType>
class MGTransferPrebuilt< VectorType >

Implementation of the MGTransferBase interface for which the transfer operations are prebuilt upon construction of the object of this class as matrices. This is the fast way, since it only needs to build the operation once by looping over all cells and storing the result in a matrix for each level, but requires additional memory.

See MGTransferBase to find out which of the transfer classes is best for your needs.

Author
Wolfgang Bangerth, Guido Kanschat, Timo Heister, Martin Kronbichler
Date
1999, 2000, 2001, 2002, 2003, 2004, 2012, 2015

Definition at line 661 of file mg_transfer.h.

Constructor & Destructor Documentation

◆ MGTransferPrebuilt() [1/3]

template<typename VectorType>
MGTransferPrebuilt< VectorType >::MGTransferPrebuilt ( )
default

Constructor without constraint matrices. Use this constructor only with discontinuous finite elements or with no local refinement.

◆ MGTransferPrebuilt() [2/3]

template<typename VectorType >
MGTransferPrebuilt< VectorType >::MGTransferPrebuilt ( const MGConstrainedDoFs mg_constrained_dofs)

Constructor with constraints. Equivalent to the default constructor followed by initialize_constraints().

Definition at line 49 of file mg_transfer_prebuilt.cc.

◆ MGTransferPrebuilt() [3/3]

template<typename VectorType >
MGTransferPrebuilt< VectorType >::MGTransferPrebuilt ( const AffineConstraints< double > &  constraints,
const MGConstrainedDoFs mg_constrained_dofs 
)

Constructor with constraints. Equivalent to the default constructor followed by initialize_constraints().

Deprecated:
constraints is unused.

Definition at line 58 of file mg_transfer_prebuilt.cc.

◆ ~MGTransferPrebuilt()

template<typename VectorType>
virtual MGTransferPrebuilt< VectorType >::~MGTransferPrebuilt ( )
overridevirtualdefault

Destructor.

Member Function Documentation

◆ initialize_constraints() [1/2]

template<typename VectorType >
void MGTransferPrebuilt< VectorType >::initialize_constraints ( const MGConstrainedDoFs mg_constrained_dofs)

Initialize the constraints to be used in build_matrices().

Definition at line 69 of file mg_transfer_prebuilt.cc.

◆ initialize_constraints() [2/2]

template<typename VectorType >
void MGTransferPrebuilt< VectorType >::initialize_constraints ( const AffineConstraints< double > &  constraints,
const MGConstrainedDoFs mg_constrained_dofs 
)

Initialize the constraints to be used in build_matrices().

Deprecated:
constraints is unused.

Definition at line 79 of file mg_transfer_prebuilt.cc.

◆ clear()

template<typename VectorType >
void MGTransferPrebuilt< VectorType >::clear ( )

Reset the object to the state it had right after the default constructor.

Definition at line 90 of file mg_transfer_prebuilt.cc.

◆ build_matrices()

template<typename VectorType >
template<int dim, int spacedim>
void MGTransferPrebuilt< VectorType >::build_matrices ( const DoFHandler< dim, spacedim > &  mg_dof)

Actually build the prolongation matrices for each level.

Definition at line 160 of file mg_transfer_prebuilt.cc.

◆ prolongate()

template<typename VectorType >
void MGTransferPrebuilt< VectorType >::prolongate ( const unsigned int  to_level,
VectorType &  dst,
const VectorType &  src 
) const
overridevirtual

Prolongate a vector from level to_level-1 to level to_level using the embedding matrices of the underlying finite element. The previous content of dst is overwritten.

  • src is a vector with as many elements as there are degrees of freedom on the coarser level involved.
  • dst has as many elements as there are degrees of freedom on the finer level.

Implements MGTransferBase< VectorType >.

Definition at line 102 of file mg_transfer_prebuilt.cc.

◆ restrict_and_add()

template<typename VectorType >
void MGTransferPrebuilt< VectorType >::restrict_and_add ( const unsigned int  from_level,
VectorType &  dst,
const VectorType &  src 
) const
overridevirtual

Restrict a vector from level from_level to level from_level-1 using the transpose operation of the prolongate method. If the region covered by cells on level from_level is smaller than that of level from_level-1 (local refinement), then some degrees of freedom in dst are active and will not be altered. For the other degrees of freedom, the result of the restriction is added.

  • src is a vector with as many elements as there are degrees of freedom on the finer level involved.
  • dst has as many elements as there are degrees of freedom on the coarser level.

Implements MGTransferBase< VectorType >.

Definition at line 116 of file mg_transfer_prebuilt.cc.

◆ memory_consumption()

template<typename VectorType >
std::size_t MGTransferPrebuilt< VectorType >::memory_consumption ( ) const

Memory used by this object.

Definition at line 395 of file mg_transfer_prebuilt.cc.

◆ print_matrices()

template<typename VectorType >
void MGTransferPrebuilt< VectorType >::print_matrices ( std::ostream &  os) const

Print all the matrices for debugging purposes.

Definition at line 381 of file mg_transfer_prebuilt.cc.

Member Data Documentation

◆ prolongation_sparsities

template<typename VectorType>
std::vector< std::shared_ptr<typename internal::MatrixSelector<VectorType>::Sparsity> > MGTransferPrebuilt< VectorType >::prolongation_sparsities
private

Sparsity patterns for transfer matrices.

Definition at line 784 of file mg_transfer.h.

◆ prolongation_matrices

template<typename VectorType>
std::vector< std::shared_ptr<typename internal::MatrixSelector<VectorType>::Matrix> > MGTransferPrebuilt< VectorType >::prolongation_matrices
private

The actual prolongation matrix. column indices belong to the dof indices of the mother cell, i.e. the coarse level. while row indices belong to the child cell, i.e. the fine level.

Definition at line 793 of file mg_transfer.h.

◆ interface_dofs

template<typename VectorType>
std::vector<std::vector<bool> > MGTransferPrebuilt< VectorType >::interface_dofs
private

Degrees of freedom on the refinement edge excluding those on the boundary.

Definition at line 799 of file mg_transfer.h.


The documentation for this class was generated from the following files: