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 MGMATRIX , class MGRELAX > | |
void | initialize (const MGMATRIX &matrices, const MGRELAX &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 |
Private Attributes | |
MGLevelObject< PointerMatrix < MATRIX, BlockVector< number > > > | matrices |
MGLevelObject< PointerMatrix < RELAX, BlockVector< number > > > | smoothers |
unsigned int | steps |
bool | variable |
bool | symmetric |
bool | transpose |
bool | reverse |
VectorMemory< BlockVector < number > > & | mem |
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.
MGSmootherBlock< MATRIX, RELAX, 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.
void MGSmootherBlock< MATRIX, RELAX, number >::initialize | ( | const MGMATRIX & | matrices, | |
const MGRELAX & | smoothers | |||
) | [inline] |
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 MATRIX
.
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.
void MGSmootherBlock< MATRIX, RELAX, number >::clear | ( | ) | [virtual] |
Empty all vectors.
Implements MGSmootherBase< BlockVector< number > >.
void MGSmootherBlock< MATRIX, RELAX, number >::set_steps | ( | const unsigned | int | ) |
Modify the number of smoothing steps on finest level.
void MGSmootherBlock< MATRIX, RELAX, number >::set_variable | ( | const | bool | ) |
Switch on/off variable smoothing.
void MGSmootherBlock< MATRIX, RELAX, number >::set_symmetric | ( | const | bool | ) |
Switch on/off symmetric smoothing.
void MGSmootherBlock< MATRIX, RELAX, number >::set_transpose | ( | const | bool | ) |
Switch on/off transposed. This is mutually exclusive with reverse().
void MGSmootherBlock< MATRIX, RELAX, number >::set_reverse | ( | const | bool | ) |
Switch on/off reversed. This is mutually exclusive with transpose().
virtual void MGSmootherBlock< MATRIX, RELAX, 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 > >.
MGLevelObject<PointerMatrix<MATRIX, BlockVector<number> > > MGSmootherBlock< MATRIX, RELAX, number >::matrices [private] |
Pointer to the matrices.
MGLevelObject<PointerMatrix<RELAX, BlockVector<number> > > MGSmootherBlock< MATRIX, RELAX, number >::smoothers [private] |
Pointer to the matrices.
unsigned int MGSmootherBlock< MATRIX, RELAX, number >::steps [private] |
Number of smoothing steps.
bool MGSmootherBlock< MATRIX, RELAX, number >::variable [private] |
Variable smoothing?
bool MGSmootherBlock< MATRIX, RELAX, number >::symmetric [private] |
Symmetric smoothing?
bool MGSmootherBlock< MATRIX, RELAX, number >::transpose [private] |
bool MGSmootherBlock< MATRIX, RELAX, number >::reverse [private] |
Reverse?
VectorMemory<BlockVector<number> >& MGSmootherBlock< MATRIX, RELAX, number >::mem [private] |
Memory for auxiliary vectors.