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

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

Inheritance diagram for MGSmootherBlock< MatrixType, RelaxationType, number >:
[legend]

Public Member Functions

 MGSmootherBlock (VectorMemory< BlockVector< number >> &mem, const unsigned int steps=1, const bool variable=false, const bool symmetric=false, const bool transpose=false, const bool reverse=false)
 
 MGSmootherBlock (const unsigned int steps=1, const bool variable=false, const bool symmetric=false, const bool transpose=false, const bool reverse=false)
 
template<class MGMatrixType , class MGRelaxationType >
void initialize (const MGMatrixType &matrices, const MGRelaxationType &smoothers)
 
void clear ()
 
void set_reverse (const bool)
 
virtual void smooth (const unsigned int level, BlockVector< number > &u, const BlockVector< number > &rhs) const
 
std::size_t memory_consumption () const
 
- Public Member Functions inherited from MGSmoother< BlockVector< number > >
 MGSmoother (const unsigned int steps=1, const bool variable=false, const bool symmetric=false, const bool transpose=false)
 
void set_steps (const unsigned int)
 
void set_variable (const bool)
 
void set_symmetric (const bool)
 
void set_transpose (const bool)
 
void set_debug (const unsigned int level)
 
- Public Member Functions inherited from MGSmootherBase< BlockVector< number > >
virtual ~MGSmootherBase () override=default
 
virtual void apply (const unsigned int level, BlockVector< number > &u, const BlockVector< number > &rhs) const
 
- 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)
 

Private Attributes

MGLevelObject< LinearOperator< BlockVector< number > > > matrices
 
MGLevelObject< LinearOperator< BlockVector< number > > > smoothers
 
bool reverse
 
SmartPointer< VectorMemory< BlockVector< number > >, MGSmootherBlock< MatrixType, RelaxationType, number > > mem
 

Additional Inherited Members

- 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)
 
- Protected Attributes inherited from MGSmoother< BlockVector< number > >
GrowingVectorMemory< BlockVector< number > > vector_memory
 
unsigned int steps
 
bool variable
 
bool symmetric
 
bool transpose
 
unsigned int debug
 

Detailed Description

template<typename MatrixType, class RelaxationType, typename number>
class MGSmootherBlock< MatrixType, RelaxationType, number >

General smoother class for block vectors. This class gives complete freedom to the choice of a block smoother by being initialized with a matrix and a smoother object. Therefore, the smoother object for each level must be constructed by hand.

Author
Guido Kanschat, 2005

Definition at line 51 of file mg_block_smoother.h.

Constructor & Destructor Documentation

◆ MGSmootherBlock() [1/2]

template<typename MatrixType , class RelaxationType , typename number >
MGSmootherBlock< MatrixType, RelaxationType, number >::MGSmootherBlock ( VectorMemory< BlockVector< number >> &  mem,
const unsigned int  steps = 1,
const bool  variable = false,
const bool  symmetric = false,
const bool  transpose = false,
const bool  reverse = false 
)
Deprecated:
Since GrowingVectorMemory now uses a joint memory pool, it is recommended to use the constructor without the memory object.

Constructor. Sets memory and smoothing parameters.

◆ MGSmootherBlock() [2/2]

template<typename MatrixType , class RelaxationType , typename number >
MGSmootherBlock< MatrixType, RelaxationType, number >::MGSmootherBlock ( const unsigned int  steps = 1,
const bool  variable = false,
const bool  symmetric = false,
const bool  transpose = false,
const bool  reverse = false 
)

Constructor.

Member Function Documentation

◆ initialize()

template<typename MatrixType , class RelaxationType , typename number >
template<class MGMatrixType , class MGRelaxationType >
void MGSmootherBlock< MatrixType, RelaxationType, number >::initialize ( const MGMatrixType &  matrices,
const MGRelaxationType &  smoothers 
)

Initialize for matrices. The parameter matrices can be any object having functions get_minlevel() and get_maxlevel() as well as an operator[] returning a reference to MatrixType.

The same convention is used for the parameter smoothers, such that operator[] returns the object doing the block-smoothing on a single level.

This function stores pointers to the level matrices and smoothing operator for each level.

◆ clear()

template<typename MatrixType , class RelaxationType , typename number >
void MGSmootherBlock< MatrixType, RelaxationType, number >::clear ( )
virtual

Empty all vectors.

Implements MGSmootherBase< BlockVector< number > >.

◆ set_reverse()

template<typename MatrixType , class RelaxationType , typename number >
void MGSmootherBlock< MatrixType, RelaxationType, number >::set_reverse ( const bool  )

Switch on/off reversed. This is mutually exclusive with transpose().

◆ smooth()

template<typename MatrixType , class RelaxationType , typename number >
virtual void MGSmootherBlock< MatrixType, RelaxationType, number >::smooth ( const unsigned int  level,
BlockVector< number > &  u,
const BlockVector< number > &  rhs 
) const
virtual

Implementation of the interface for Multigrid. This function does nothing, which by comparison with the definition of this function means that the smoothing operator equals the null operator.

Implements MGSmootherBase< BlockVector< number > >.

◆ memory_consumption()

template<typename MatrixType , class RelaxationType , typename number >
std::size_t MGSmootherBlock< MatrixType, RelaxationType, number >::memory_consumption ( ) const

Memory used by this object.

Member Data Documentation

◆ matrices

template<typename MatrixType , class RelaxationType , typename number >
MGLevelObject<LinearOperator<BlockVector<number> > > MGSmootherBlock< MatrixType, RelaxationType, number >::matrices
private

Pointer to the matrices.

Definition at line 126 of file mg_block_smoother.h.

◆ smoothers

template<typename MatrixType , class RelaxationType , typename number >
MGLevelObject<LinearOperator<BlockVector<number> > > MGSmootherBlock< MatrixType, RelaxationType, number >::smoothers
private

Pointer to the matrices.

Definition at line 131 of file mg_block_smoother.h.

◆ reverse

template<typename MatrixType , class RelaxationType , typename number >
bool MGSmootherBlock< MatrixType, RelaxationType, number >::reverse
private

Reverse?

Definition at line 136 of file mg_block_smoother.h.

◆ mem

template<typename MatrixType , class RelaxationType , typename number >
SmartPointer<VectorMemory<BlockVector<number> >, MGSmootherBlock<MatrixType, RelaxationType, number> > MGSmootherBlock< MatrixType, RelaxationType, number >::mem
private

Memory for auxiliary vectors.

Definition at line 143 of file mg_block_smoother.h.


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