Reference documentation for deal.II version 9.4.0
\(\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 Types | Public Member Functions | Private Attributes | List of all members
PreconditionUseMatrix< MatrixType, VectorType > Class Template Reference

#include <deal.II/lac/precondition.h>

Inheritance diagram for PreconditionUseMatrix< MatrixType, VectorType >:

Public Types

using function_ptr = void(MatrixType::*)(VectorType &, const VectorType &) const

Public Member Functions

 PreconditionUseMatrix (const MatrixType &M, const function_ptr method)
void vmult (VectorType &dst, const VectorType &src) const

Private Attributes

const MatrixType & matrix
const function_ptr precondition

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 intcounter
std::map< std::string, unsigned intcounter_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 = SparseMatrix<double>, class VectorType = Vector<double>>
class PreconditionUseMatrix< MatrixType, VectorType >

Preconditioner using a matrix-builtin function. This class forms a preconditioner suitable for the LAC solver classes. Since many preconditioning methods are based on matrix entries, these have to be implemented as member functions of the underlying matrix implementation. This class now is intended to allow easy access to these member functions from LAC solver classes.

It seems that all builtin preconditioners have a relaxation parameter, so please use PreconditionRelaxation for these.

You will usually not want to create a named object of this type, although possible. The most common use is like this:

This creates an unnamed object to be passed as the fourth parameter to the solver function of the SolverGMRES class. It assumes that the SparseMatrix class has a function precondition_Jacobi taking two vectors (source and destination) as parameters (Actually, there is no function like that, the existing function takes a third parameter, denoting the relaxation parameter; this example is therefore only meant to illustrate the general idea).

Note that due to the default template parameters, the above example could be written shorter as follows:

matrix, solution, right_hand_side,
matrix,&SparseMatrix<double>::template precondition_Jacobi<double>));

Definition at line 360 of file precondition.h.

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