Reference documentation for deal.II version 9.3.3
\(\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\}}\)
Classes | Public Types | Public Member Functions | Private Attributes | List of all members

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

Inheritance diagram for PreconditionIdentity:


struct  AdditionalData

Public Types

using size_type = types::global_dof_index

Public Member Functions

 PreconditionIdentity ()
template<typename MatrixType >
void initialize (const MatrixType &matrix, const AdditionalData &additional_data=AdditionalData())
template<class VectorType >
void vmult (VectorType &, const VectorType &) const
template<class VectorType >
void Tvmult (VectorType &, const VectorType &) const
template<class VectorType >
void vmult_add (VectorType &, const VectorType &) const
template<class VectorType >
void Tvmult_add (VectorType &, const VectorType &) const
void clear ()
size_type m () const
size_type n () const

Private Attributes

size_type n_rows
size_type n_columns

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

No preconditioning. This class helps you, if you want to use a linear solver without preconditioning. All solvers in LAC require a preconditioner. Therefore, you must use the identity provided here to avoid preconditioning. It can be used in the following way:

SolverControl solver_control (1000, 1e-12);
SolverCG<> cg (solver_control);
cg.solve (system_matrix, solution, system_rhs, PreconditionIdentity());
SymmetricTensor< 2, dim, Number > e(const Tensor< 2, dim, Number > &F)

See the step-3 tutorial program for an example and additional explanations.

Alternatively, the IdentityMatrix class can be used to precondition in this way.

Definition at line 79 of file precondition.h.

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