Public Member Functions | |
MGMatrixSelect (const unsigned int row=0, const unsigned int col=0, MGLevelObject< MATRIX > *=0) | |
void | set_matrix (MGLevelObject< MATRIX > *M) |
void | select_block (const unsigned int row, const unsigned int col) |
virtual void | vmult (const unsigned int level, Vector< number > &dst, const Vector< number > &src) const |
virtual void | vmult_add (const unsigned int level, Vector< number > &dst, const Vector< number > &src) const |
virtual void | Tvmult (const unsigned int level, Vector< number > &dst, const Vector< number > &src) const |
virtual void | Tvmult_add (const unsigned int level, Vector< number > &dst, const Vector< number > &src) const |
Private Attributes | |
SmartPointer< MGLevelObject < MATRIX > > | matrix |
unsigned int | row |
unsigned int | col |
MATRIX
should be a block matrix class like BlockSparseMatrix or BlockSparseMatrixEZ
. Then, this class stores a pointer to a MGLevelObject of this matrix class. In each vmult
, the block selected on initialization will be multiplied with the vector provided.
MGMatrixSelect< MATRIX, number >::MGMatrixSelect | ( | const unsigned int | row = 0 , |
|
const unsigned int | col = 0 , |
|||
MGLevelObject< MATRIX > * | p = 0 | |||
) | [inline] |
Constructor. row
and col
are the coordinate of the selected block. The other argument is handed over to the SmartPointer
constructor.
void MGMatrixSelect< MATRIX, number >::set_matrix | ( | MGLevelObject< MATRIX > * | M | ) | [inline] |
Set the matrix object to be used. The matrix object must exist longer as the MGMatrix
object, since only a pointer is stored.
References MGMatrixSelect< MATRIX, number >::matrix.
void MGMatrixSelect< MATRIX, number >::select_block | ( | const unsigned int | row, | |
const unsigned int | col | |||
) | [inline] |
Select the block for multiplication.
References MGMatrixSelect< MATRIX, number >::col, and MGMatrixSelect< MATRIX, number >::row.
void MGMatrixSelect< MATRIX, number >::vmult | ( | const unsigned int | level, | |
Vector< number > & | dst, | |||
const Vector< number > & | src | |||
) | const [inline, virtual] |
Matrix-vector-multiplication on a certain level.
Implements MGMatrixBase< Vector< number > >.
References Assert, MGMatrixSelect< MATRIX, number >::col, MGMatrixSelect< MATRIX, number >::matrix, and MGMatrixSelect< MATRIX, number >::row.
void MGMatrixSelect< MATRIX, number >::vmult_add | ( | const unsigned int | level, | |
Vector< number > & | dst, | |||
const Vector< number > & | src | |||
) | const [inline, virtual] |
Adding matrix-vector-multiplication on a certain level.
Implements MGMatrixBase< Vector< number > >.
References Assert, MGMatrixSelect< MATRIX, number >::col, MGMatrixSelect< MATRIX, number >::matrix, and MGMatrixSelect< MATRIX, number >::row.
void MGMatrixSelect< MATRIX, number >::Tvmult | ( | const unsigned int | level, | |
Vector< number > & | dst, | |||
const Vector< number > & | src | |||
) | const [inline, virtual] |
Transpose matrix-vector-multiplication on a certain level.
Implements MGMatrixBase< Vector< number > >.
References Assert, MGMatrixSelect< MATRIX, number >::col, MGMatrixSelect< MATRIX, number >::matrix, and MGMatrixSelect< MATRIX, number >::row.
void MGMatrixSelect< MATRIX, number >::Tvmult_add | ( | const unsigned int | level, | |
Vector< number > & | dst, | |||
const Vector< number > & | src | |||
) | const [inline, virtual] |
Adding transpose matrix-vector-multiplication on a certain level.
Implements MGMatrixBase< Vector< number > >.
References Assert, MGMatrixSelect< MATRIX, number >::col, MGMatrixSelect< MATRIX, number >::matrix, and MGMatrixSelect< MATRIX, number >::row.
SmartPointer<MGLevelObject<MATRIX> > MGMatrixSelect< MATRIX, number >::matrix [private] |
Pointer to the matrix objects on each level.
Referenced by MGMatrixSelect< MATRIX, number >::set_matrix(), MGMatrixSelect< MATRIX, number >::Tvmult(), MGMatrixSelect< MATRIX, number >::Tvmult_add(), MGMatrixSelect< MATRIX, number >::vmult(), and MGMatrixSelect< MATRIX, number >::vmult_add().
unsigned int MGMatrixSelect< MATRIX, number >::row [private] |
Row coordinate of selected block.
Referenced by MGMatrixSelect< MATRIX, number >::select_block(), MGMatrixSelect< MATRIX, number >::Tvmult(), MGMatrixSelect< MATRIX, number >::Tvmult_add(), MGMatrixSelect< MATRIX, number >::vmult(), and MGMatrixSelect< MATRIX, number >::vmult_add().
unsigned int MGMatrixSelect< MATRIX, number >::col [private] |
Column coordinate of selected block.
Referenced by MGMatrixSelect< MATRIX, number >::select_block(), MGMatrixSelect< MATRIX, number >::Tvmult(), MGMatrixSelect< MATRIX, number >::Tvmult_add(), MGMatrixSelect< MATRIX, number >::vmult(), and MGMatrixSelect< MATRIX, number >::vmult_add().