Reference documentation for deal.II version GIT 6da2e5d553 2022-07-01 18:55:02+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Public Member Functions | Private Attributes | List of all members
MGMatrixSelect< MatrixType, number > Class Template Referenceabstract

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

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

Public Member Functions

 MGMatrixSelect (const unsigned int row=0, const unsigned int col=0, MGLevelObject< MatrixType > *matrix=0)
 
void set_matrix (MGLevelObject< MatrixType > *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
 
virtual unsigned int get_minlevel () const=0
 
virtual unsigned int get_maxlevel () const=0
 

Private Attributes

SmartPointer< MGLevelObject< MatrixType >, MGMatrixSelect< MatrixType, number > > matrix
 
unsigned int row
 
unsigned int col
 

Subscriptor functionality

Classes derived from Subscriptor provide a facility to subscribe to this object. This is mostly used by the SmartPointer class.

std::atomic< unsigned int > counter
 
std::map< std::string, unsigned int > counter_map
 
std::vector< std::atomic< bool > * > validity_pointers
 
const std::type_info * object_info
 
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)
 
using map_value_type = decltype(counter_map)::value_type
 
using map_iterator = decltype(counter_map)::iterator
 
static std::mutex mutex
 
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 
void check_no_subscribers () const noexcept
 

Detailed Description

template<typename MatrixType, typename number>
class MGMatrixSelect< MatrixType, number >

Multilevel matrix selecting from block matrices. This class implements the interface defined by MGMatrixBase. The template parameter MatrixType 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.

Definition at line 122 of file mg_matrix.h.

Constructor & Destructor Documentation

◆ MGMatrixSelect()

template<typename MatrixType , typename number >
MGMatrixSelect< MatrixType, number >::MGMatrixSelect ( const unsigned int  row = 0,
const unsigned int  col = 0,
MGLevelObject< MatrixType > *  matrix = 0 
)

Constructor. row and col are the coordinate of the selected block. The other argument is handed over to the SmartPointer constructor.

Definition at line 321 of file mg_matrix.h.

Member Function Documentation

◆ set_matrix()

template<typename MatrixType , typename number >
void MGMatrixSelect< MatrixType, number >::set_matrix ( MGLevelObject< MatrixType > *  M)

Set the matrix object to be used. The matrix object must exist longer as the MGMatrixSelect object, since only a pointer is stored.

Definition at line 333 of file mg_matrix.h.

◆ select_block()

template<typename MatrixType , typename number >
void MGMatrixSelect< MatrixType, number >::select_block ( const unsigned int  row,
const unsigned int  col 
)

Select the block for multiplication.

Definition at line 342 of file mg_matrix.h.

◆ vmult()

template<typename MatrixType , typename number >
void MGMatrixSelect< MatrixType, number >::vmult ( const unsigned int  level,
Vector< number > &  dst,
const Vector< number > &  src 
) const
virtual

Matrix-vector-multiplication on a certain level.

Implements MGMatrixBase< Vector< number > >.

Definition at line 353 of file mg_matrix.h.

◆ vmult_add()

template<typename MatrixType , typename number >
void MGMatrixSelect< MatrixType, number >::vmult_add ( const unsigned int  level,
Vector< number > &  dst,
const Vector< number > &  src 
) const
virtual

Adding matrix-vector-multiplication on a certain level.

Implements MGMatrixBase< Vector< number > >.

Definition at line 367 of file mg_matrix.h.

◆ Tvmult()

template<typename MatrixType , typename number >
void MGMatrixSelect< MatrixType, number >::Tvmult ( const unsigned int  level,
Vector< number > &  dst,
const Vector< number > &  src 
) const
virtual

Transpose matrix-vector-multiplication on a certain level.

Implements MGMatrixBase< Vector< number > >.

Definition at line 381 of file mg_matrix.h.

◆ Tvmult_add()

template<typename MatrixType , typename number >
void MGMatrixSelect< MatrixType, number >::Tvmult_add ( const unsigned int  level,
Vector< number > &  dst,
const Vector< number > &  src 
) const
virtual

Adding transpose matrix-vector-multiplication on a certain level.

Implements MGMatrixBase< Vector< number > >.

Definition at line 395 of file mg_matrix.h.

◆ get_minlevel()

virtual unsigned int MGMatrixBase< Vector< number > >::get_minlevel ( ) const
pure virtualinherited

Return the minimal level for which matrices are stored.

◆ get_maxlevel()

virtual unsigned int MGMatrixBase< Vector< number > >::get_maxlevel ( ) const
pure virtualinherited

Return the minimal level for which matrices are stored.

Member Data Documentation

◆ matrix

template<typename MatrixType , typename number >
SmartPointer<MGLevelObject<MatrixType>, MGMatrixSelect<MatrixType, number> > MGMatrixSelect< MatrixType, number >::matrix
private

Pointer to the matrix objects on each level.

Definition at line 183 of file mg_matrix.h.

◆ row

template<typename MatrixType , typename number >
unsigned int MGMatrixSelect< MatrixType, number >::row
private

Row coordinate of selected block.

Definition at line 187 of file mg_matrix.h.

◆ col

template<typename MatrixType , typename number >
unsigned int MGMatrixSelect< MatrixType, number >::col
private

Column coordinate of selected block.

Definition at line 191 of file mg_matrix.h.


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