 An Object Oriented Finite Element Library

Prec< T_ > Class Template Reference

To set a preconditioner. More...

`#include <Prec.h>`

## Public Member Functions

Prec ()
Default constructor.

Prec (int type)
Constructor that chooses preconditioner. More...

Prec (const SpMatrix< T_ > &A, int type=DIAG_PREC)
Constructor using matrix of the linear system to precondition. More...

Prec (const Matrix< T_ > *A, int type=DIAG_PREC)
Constructor using matrix of the linear system to precondition. More...

~Prec ()
Destructor.

void setType (int type)
Define preconditioner type. More...

void setMatrix (const Matrix< T_ > *A)
Define pointer to matrix for preconditioning (if this one is abstract) More...

void setMatrix (const SpMatrix< T_ > &A)
Define the matrix for preconditioning. More...

void solve (Vect< T_ > &x) const
Solve a linear system with preconditioning matrix. More...

void solve (const Vect< T_ > &b, Vect< T_ > &x) const
Solve a linear system with preconditioning matrix. More...

void TransSolve (Vect< T_ > &x) const
Solve a linear system with transposed preconditioning matrix. More...

void TransSolve (const Vect< T_ > &b, Vect< T_ > &x) const
Solve a linear system with transposed preconditioning matrix. More...

T_ & getPivot (size_t i) const
Return i-th pivot of preconditioning matrix.

## Detailed Description

template<class T_>
class OFELI::Prec< T_ >

To set a preconditioner.

The preconditioner type is chosen in the constructor

Template Parameters
 Data type (real_t, float, complex, ...)

## ◆ Prec() [1/3]

 Prec ( int type )

Constructor that chooses preconditioner.

Parameters
 [in] type Preconditioner type: `IDENT_PREC`: Identity preconditioner (No preconditioning) `DIAG_PREC`: Diagonal preconditioner `DILU_PREC`: Diagonal Incomplete factorization preconditioner `ILU_PREC`: Incomplete factorization preconditioner `SSOR_PREC`: SSOR (Symmetric Successive Over Relaxation) preconditioner

## ◆ Prec() [2/3]

 Prec ( const SpMatrix< T_ > & A, int type = `DIAG_PREC` )

Constructor using matrix of the linear system to precondition.

Parameters
 [in] A Matrix to precondition [in] type Preconditioner type: `IDENT_PREC`: Identity preconditioner (No preconditioning) `DIAG_PREC`: Diagonal preconditioner `DILU_PREC`: Diagonal Incomplete factorization preconditioner `ILU_PREC`: Incomplete factorization preconditioner `SSOR_PREC`: SSOR (Symmetric Successive Over Relaxation) preconditioner

## ◆ Prec() [3/3]

 Prec ( const Matrix< T_ > * A, int type = `DIAG_PREC` )

Constructor using matrix of the linear system to precondition.

Parameters
 [in] A Pointer to abstract Matrix class to precondition [in] type Preconditioner type: `IDENT_PREC`: Identity preconditioner (No preconditioning) `DIAG_PREC`: Diagonal preconditioner `DILU_PREC`: Diagonal Incomplete factorization preconditioner `ILU_PREC`: Incomplete factorization preconditioner `SSOR_PREC`: SSOR (Symmetric Successive Over Relaxation) preconditioner

## ◆ setMatrix() [1/2]

 void setMatrix ( const Matrix< T_ > * A )

Define pointer to matrix for preconditioning (if this one is abstract)

Parameters
 [in] A Matrix to precondition

## ◆ setMatrix() [2/2]

 void setMatrix ( const SpMatrix< T_ > & A )

Define the matrix for preconditioning.

Parameters
 [in] A Matrix to precondition (instance of class SpMatrix)

## ◆ setType()

 void setType ( int type )

Define preconditioner type.

Parameters
 [in] type Preconditioner type: `IDENT_PREC`: Identity preconditioner (No preconditioning) `DIAG_PREC`: Diagonal preconditioner `DILU_PREC`: Diagonal Incomplete factorization preconditioner `ILU_PREC`: Incomplete factorization preconditioner `SSOR_PREC`: SSOR (Symmetric Successive Over Relaxation) preconditioner

## ◆ solve() [1/2]

 void solve ( const Vect< T_ > & b, Vect< T_ > & x ) const

Solve a linear system with preconditioning matrix.

Parameters
 [in] b Right-hand side [out] x Solution vector

## ◆ solve() [2/2]

 void solve ( Vect< T_ > & x ) const

Solve a linear system with preconditioning matrix.

Parameters
 [in,out] x Right-hand side on input and solution on output.

## ◆ TransSolve() [1/2]

 void TransSolve ( const Vect< T_ > & b, Vect< T_ > & x ) const

Solve a linear system with transposed preconditioning matrix.

Parameters
 [in] b Right-hand side vector [out] x Solution vector

## ◆ TransSolve() [2/2]

 void TransSolve ( Vect< T_ > & x ) const

Solve a linear system with transposed preconditioning matrix.

Parameters
 [in,out] x Right-hand side in input and solution in output.