Reference documentation for deal.II version 8.4.2
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)
 
template<class MGMatrixType , class MGRelaxationType >
void initialize (const MGMatrixType &matrices, const MGRelaxationType &smoothers)
 
void clear ()
 
void set_steps (const unsigned int)
 
void set_variable (const bool)
 
void set_symmetric (const bool)
 
void set_transpose (const bool)
 
void set_reverse (const bool)
 
virtual void smooth (const unsigned int level, BlockVector< number > &u, const BlockVector< number > &rhs) const
 
- Public Member Functions inherited from MGSmootherBase< BlockVector< number > >
virtual ~MGSmootherBase ()
 
- Public Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
void subscribe (const char *identifier=0) const
 
void unsubscribe (const char *identifier=0) const
 
unsigned int n_subscriptions () const
 
void list_subscribers () const
 
 DeclException3 (ExcInUse, int, char *, std::string &,<< "Object of class "<< arg2<< " is still used by "<< arg1<< " other objects."<< "\"<< "(Additional information: "<< arg3<< ")\"<< "See the entry in the Frequently Asked Questions of "<< "deal.II (linked to from http://www.dealii.org/) for "<< "a lot more information on what this error means and "<< "how to fix programs in which it happens.")
 
 DeclException2 (ExcNoSubscriber, char *, char *,<< "No subscriber with identifier <"<< arg2<< "> subscribes to this object of class "<< arg1<< ". Consequently, it cannot be unsubscribed.")
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Private Attributes

MGLevelObject< PointerMatrix< MatrixType, BlockVector< number > > > matrices
 
MGLevelObject< PointerMatrix< RelaxationType, BlockVector< number > > > smoothers
 
unsigned int steps
 
bool variable
 
bool symmetric
 
bool reverse
 
VectorMemory< BlockVector< number > > & mem
 

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 47 of file mg_block_smoother.h.

Constructor & Destructor Documentation

§ MGSmootherBlock()

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 
)

Constructor. Sets memory and smoothing parameters.

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_steps()

template<typename MatrixType , class RelaxationType , typename number >
void MGSmootherBlock< MatrixType, RelaxationType, number >::set_steps ( const unsigned  int)

Modify the number of smoothing steps on finest level.

§ set_variable()

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

Switch on/off variable smoothing.

§ set_symmetric()

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

Switch on/off symmetric smoothing.

§ set_transpose()

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

Switch on/off transposed. This is mutually exclusive with reverse().

§ 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 the smoothing operator equals the null operator.

Implements MGSmootherBase< BlockVector< number > >.

Member Data Documentation

§ matrices

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

Pointer to the matrices.

Definition at line 120 of file mg_block_smoother.h.

§ smoothers

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

Pointer to the matrices.

Definition at line 125 of file mg_block_smoother.h.

§ steps

template<typename MatrixType , class RelaxationType , typename number >
unsigned int MGSmootherBlock< MatrixType, RelaxationType, number >::steps
private

Number of smoothing steps.

Definition at line 130 of file mg_block_smoother.h.

§ variable

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

Variable smoothing?

Definition at line 135 of file mg_block_smoother.h.

§ symmetric

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

Symmetric smoothing?

Definition at line 140 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 150 of file mg_block_smoother.h.

§ mem

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

Memory for auxiliary vectors.

Definition at line 155 of file mg_block_smoother.h.


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