Template Numerical Library version main:e6bb26f
Public Types | Public Member Functions | Protected Types | Protected Attributes | List of all members
TNL::Solvers::Linear::Preconditioners::Diagonal< Matrix > Class Template Reference

Diagonal (Jacobi) preconditioner for iterative solvers of linear systems. More...

#include <TNL/Solvers/Linear/Preconditioners/Diagonal.h>

Inheritance diagram for TNL::Solvers::Linear::Preconditioners::Diagonal< Matrix >:
Inheritance graph
[legend]
Collaboration diagram for TNL::Solvers::Linear::Preconditioners::Diagonal< Matrix >:
Collaboration graph
[legend]

Public Types

using DeviceType = typename Matrix::DeviceType
 Device where the preconditioner will run on and auxillary data will alloacted on. More...
 
using IndexType = typename Matrix::IndexType
 Type for indexing.
 
using MatrixType = Matrix
 Type of the matrix representing the linear system.
 
using RealType = typename Matrix::RealType
 Floating point type used for computations.
 
- Public Types inherited from TNL::Solvers::Linear::Preconditioners::Preconditioner< Matrix >
using ConstVectorViewType = typename Traits< Matrix >::ConstVectorViewType
 Type for constant vector view.
 
using DeviceType = typename Matrix::DeviceType
 Device where the solver will run on and auxillary data will alloacted on. More...
 
using IndexType = typename Matrix::IndexType
 Type for indexing.
 
using MatrixPointer = std::shared_ptr< std::add_const_t< MatrixType > >
 Type of shared pointer to the matrix.
 
using MatrixType = Matrix
 Type of the matrix representing the linear system.
 
using RealType = typename Matrix::RealType
 Floating point type used for computations.
 
using VectorViewType = typename Traits< Matrix >::VectorViewType
 Type for vector view.
 

Public Member Functions

virtual void solve (ConstVectorViewType b, VectorViewType x) const override
 This method applies the preconditioner. More...
 
virtual void update (const MatrixPointer &matrixPointer) override
 This method updates the preconditioner with respect to given matrix. More...
 
- Public Member Functions inherited from TNL::Solvers::Linear::Preconditioners::Preconditioner< Matrix >
virtual ~Preconditioner ()
 Destructor of the preconditioner.
 
virtual bool setup (const Config::ParameterContainer &parameters, const String &prefix="")
 Method for setup of the preconditioner of linear iterative solver based on configuration parameters. More...
 
virtual void solve (ConstVectorViewType b, VectorViewType x) const
 This method applies the preconditioner. More...
 
virtual void update (const MatrixPointer &matrixPointer)
 This method updates the preconditioner with respect to given matrix. More...
 

Protected Types

using VectorType = Containers::Vector< RealType, DeviceType, IndexType >
 

Protected Attributes

VectorType diagonal
 

Additional Inherited Members

- Static Public Member Functions inherited from TNL::Solvers::Linear::Preconditioners::Preconditioner< Matrix >
static void configSetup (Config::ConfigDescription &config, const String &prefix="")
 This method defines configuration entries for setup of the preconditioner of linear iterative solver. More...
 

Detailed Description

template<typename Matrix>
class TNL::Solvers::Linear::Preconditioners::Diagonal< Matrix >

Diagonal (Jacobi) preconditioner for iterative solvers of linear systems.

See detailed description.

See TNL::Solvers::Linear::Preconditioners::Preconditioner for example of setup with a linear solver.

Template Parameters
Matrixis type of the matrix describing the linear system.

Member Typedef Documentation

◆ DeviceType

template<typename Matrix >
using TNL::Solvers::Linear::Preconditioners::Diagonal< Matrix >::DeviceType = typename Matrix::DeviceType

Device where the preconditioner will run on and auxillary data will alloacted on.

See Devices::Host or Devices::Cuda.

Member Function Documentation

◆ solve()

template<typename Matrix >
void TNL::Solvers::Linear::Preconditioners::Diagonal< Matrix >::solve ( ConstVectorViewType  b,
VectorViewType  x 
) const
overridevirtual

This method applies the preconditioner.

Parameters
bis the input vector the preconditioner is applied on.
xis the result of the preconditioning.

Reimplemented from TNL::Solvers::Linear::Preconditioners::Preconditioner< Matrix >.

◆ update()

template<typename Matrix >
void TNL::Solvers::Linear::Preconditioners::Diagonal< Matrix >::update ( const MatrixPointer matrixPointer)
overridevirtual

This method updates the preconditioner with respect to given matrix.

Parameters
matrixPointersmart pointer (std::shared_ptr) to matrix the preconditioner is related to.

Reimplemented from TNL::Solvers::Linear::Preconditioners::Preconditioner< Matrix >.


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