Reference documentation for deal.II version 9.1.1
\(\newcommand{\dealcoloneq}{\mathrel{\vcenter{:}}=}\)
Classes | Public Types | Public Member Functions | Private Attributes | List of all members

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

Inheritance diagram for PreconditionIdentity:
[legend]

Classes

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
 
- Public Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
 Subscriptor (Subscriptor &&) noexcept
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
Subscriptoroperator= (Subscriptor &&) noexcept
 
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)
 

Private Attributes

size_type n_rows
 
size_type n_columns
 

Additional Inherited Members

- Static Public Member Functions inherited from Subscriptor
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 

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());

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

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

Author
Guido Kanschat, 1999; extension for full compatibility with LinearOperator class: Jean-Paul Pelteret, 2015

Definition at line 78 of file precondition.h.

Member Typedef Documentation

◆ size_type

Declare type for container size.

Definition at line 84 of file precondition.h.

Constructor & Destructor Documentation

◆ PreconditionIdentity()

PreconditionIdentity::PreconditionIdentity ( )

Constructor, sets the domain and range sizes to their defaults.

Member Function Documentation

◆ initialize()

template<typename MatrixType >
void PreconditionIdentity::initialize ( const MatrixType &  matrix,
const AdditionalData additional_data = AdditionalData() 
)

The matrix argument is ignored and here just for compatibility with more complex preconditioners.

◆ vmult()

template<class VectorType >
void PreconditionIdentity::vmult ( VectorType &  ,
const VectorType &   
) const

Apply preconditioner.

◆ Tvmult()

template<class VectorType >
void PreconditionIdentity::Tvmult ( VectorType &  ,
const VectorType &   
) const

Apply transpose preconditioner. Since this is the identity, this function is the same as vmult().

◆ vmult_add()

template<class VectorType >
void PreconditionIdentity::vmult_add ( VectorType &  ,
const VectorType &   
) const

Apply preconditioner, adding to the previous value.

◆ Tvmult_add()

template<class VectorType >
void PreconditionIdentity::Tvmult_add ( VectorType &  ,
const VectorType &   
) const

Apply transpose preconditioner, adding. Since this is the identity, this function is the same as vmult_add().

◆ clear()

void PreconditionIdentity::clear ( )
inline

This function is only present to provide the interface of a preconditioner to be handed to a smoother. This does nothing.

Definition at line 147 of file precondition.h.

◆ m()

size_type PreconditionIdentity::m ( ) const

Return the dimension of the codomain (or range) space. Note that the matrix is of dimension \(m \times n\).

Note
This function should only be called if the preconditioner has been initialized.

◆ n()

size_type PreconditionIdentity::n ( ) const

Return the dimension of the domain space. Note that the matrix is of dimension \(m \times n\).

Note
This function should only be called if the preconditioner has been initialized.

Member Data Documentation

◆ n_rows

size_type PreconditionIdentity::n_rows
private

The dimension of the range space.

Definition at line 174 of file precondition.h.

◆ n_columns

size_type PreconditionIdentity::n_columns
private

The dimension of the domain space.

Definition at line 179 of file precondition.h.


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