PARALUTION  1.0.0
PARALUTION
paralution::MultiElimination< OperatorType, VectorType, ValueType > Class Template Reference

MultiElimination (I)LU factorization (see 12.5.1 Multi-Elimination ILU from "Iterative Methods for Sparse Linear Systems", 2nd Edition, Yousef Saad); The ME-ILU preconditioner is build recursively. More...

#include <preconditioner_multielimination.hpp>

Inheritance diagram for paralution::MultiElimination< OperatorType, VectorType, ValueType >:
paralution::Preconditioner< OperatorType, VectorType, ValueType > paralution::Solver< OperatorType, VectorType, ValueType > paralution::ParalutionObj

Public Member Functions

 MultiElimination ()
 
virtual ~MultiElimination ()
 
int get_size_diag_block (void) const
 Returns the size of the first (diagonal) block of the preconditioner. More...
 
int get_level (void) const
 Return the depth of the current level. More...
 
virtual void Print (void) const
 Print information about the solver. More...
 
virtual void Clear (void)
 Clear (free all local data) the solver. More...
 
virtual void Set (Solver< OperatorType, VectorType, ValueType > &AA_Solver, const int level, const double drop_off=double(0.0))
 Initialize (recursively) ME-ILU with level (defines the depth of recursion); AA_Solvers - defines the last-block solver; drop_off - defines drop-off tolerance. More...
 
virtual void SetPrecondMatrixFormat (const unsigned int mat_format)
 Set a specific matrix type of the decomposed block matrices; if not set, CSR matrix format will be used. More...
 
virtual void Build (void)
 Build the solver (data allocation, structure computation, numerical computation) More...
 
virtual void Solve (const VectorType &rhs, VectorType *x)
 Solve Operator x = rhs. More...
 
virtual void SolveZeroSol (const VectorType &rhs, VectorType *x)
 Solve Operator x = rhs; but set first the init x = 0. More...
 
void SetOperator (const OperatorType &op)
 Set the Operator of the solver. More...
 
virtual void ResetOperator (const OperatorType &op)
 Reset the operator; see ReBuildNumeric. More...
 
virtual void ReBuildNumeric (void)
 Rebuild only with numerical computation (no allocation or data structure computation) More...
 
virtual void MoveToHost (void)
 Move all the data (i.e. move the solver) to the host. More...
 
virtual void MoveToAccelerator (void)
 Move all the data (i.e. move the solver) to the accelerator. More...
 
virtual void Verbose (const int verb=1)
 Provide verbose output of the solver: verb == 0 no output verb == 1 print info about the solver (start,end); verb == 2 print (iter, residual) via iteration control;. More...
 

Protected Member Functions

virtual void MoveToHostLocalData_ (void)
 Move all local data to the host. More...
 
virtual void MoveToAcceleratorLocalData_ (void)
 Move all local data to the accelerator. More...
 
virtual void PrintStart_ (void) const
 Print starting msg of the solver. More...
 
virtual void PrintEnd_ (void) const
 Print ending msg of the solver. More...
 

Protected Attributes

OperatorType A_
 A_ is decomposed into $ [D_, F_; E_, C_] $, where $ AA = C - E D^{-1} F$; $ E = E D^{-1} $;. More...
 
OperatorType D_
 Diagonal part. More...
 
OperatorType E_
 
OperatorType F_
 
OperatorType C_
 
OperatorType AA_
 $ AA = C - E D^{-1} F$; More...
 
int AA_nrow_
 The sizes of the AA_ matrix. More...
 
int AA_nnz_
 
bool op_mat_format_
 Keep the precond matrix in CSR or not. More...
 
unsigned int precond_mat_format_
 Precond matrix format. More...
 
VectorType x_
 
VectorType x_1_
 
VectorType x_2_
 
VectorType rhs_
 
VectorType rhs_1_
 
VectorType rhs_2_
 
MultiElimination< OperatorType, VectorType, ValueType > * AA_me_
 
Solver< OperatorType, VectorType, ValueType > * AA_solver_
 
bool diag_solver_init_
 
int level_
 
double drop_off_
 
VectorType inv_vec_D_
 
VectorType vec_D_
 
LocalVector< intpermutation_
 
int size_
 
const OperatorType * op_
 Pointer to the operator. More...
 
Solver< OperatorType, VectorType, ValueType > * precond_
 Pointer to the defined preconditioner. More...
 
bool build_
 Flag == true after building the solver (e.g. Build()) More...
 
int verb_
 Verbose flag verb == 0 no output verb == 1 print info about the solver (start,end); verb == 2 print (iter, residual) via iteration control;. More...
 
size_t global_obj_id
 

Detailed Description

template<class OperatorType, class VectorType, typename ValueType>
class paralution::MultiElimination< OperatorType, VectorType, ValueType >

MultiElimination (I)LU factorization (see 12.5.1 Multi-Elimination ILU from "Iterative Methods for Sparse Linear Systems", 2nd Edition, Yousef Saad); The ME-ILU preconditioner is build recursively.

Constructor & Destructor Documentation

template<class OperatorType , class VectorType , typename ValueType >
paralution::MultiElimination< OperatorType, VectorType, ValueType >::MultiElimination ( )
template<class OperatorType , class VectorType , typename ValueType >
paralution::MultiElimination< OperatorType, VectorType, ValueType >::~MultiElimination ( )
virtual

Member Function Documentation

template<class OperatorType , class VectorType , typename ValueType >
void paralution::MultiElimination< OperatorType, VectorType, ValueType >::Build ( void  )
virtual

Build the solver (data allocation, structure computation, numerical computation)

Reimplemented from paralution::Solver< OperatorType, VectorType, ValueType >.

template<class OperatorType , class VectorType , typename ValueType >
void paralution::MultiElimination< OperatorType, VectorType, ValueType >::Clear ( void  )
virtual

Clear (free all local data) the solver.

Reimplemented from paralution::Solver< OperatorType, VectorType, ValueType >.

template<class OperatorType, class VectorType, typename ValueType>
int paralution::MultiElimination< OperatorType, VectorType, ValueType >::get_level ( void  ) const
inline

Return the depth of the current level.

template<class OperatorType, class VectorType, typename ValueType>
int paralution::MultiElimination< OperatorType, VectorType, ValueType >::get_size_diag_block ( void  ) const
inline

Returns the size of the first (diagonal) block of the preconditioner.

template<class OperatorType , class VectorType , typename ValueType >
void paralution::Solver< OperatorType, VectorType, ValueType >::MoveToAccelerator ( void  )
virtualinherited

Move all the data (i.e. move the solver) to the accelerator.

Referenced by main(), mexFunction(), and paralution_fortran_solve().

template<class OperatorType , class VectorType , typename ValueType >
void paralution::MultiElimination< OperatorType, VectorType, ValueType >::MoveToAcceleratorLocalData_ ( void  )
protectedvirtual

Move all local data to the accelerator.

Implements paralution::Solver< OperatorType, VectorType, ValueType >.

template<class OperatorType , class VectorType , typename ValueType >
void paralution::Solver< OperatorType, VectorType, ValueType >::MoveToHost ( void  )
virtualinherited

Move all the data (i.e. move the solver) to the host.

template<class OperatorType , class VectorType , typename ValueType >
void paralution::MultiElimination< OperatorType, VectorType, ValueType >::MoveToHostLocalData_ ( void  )
protectedvirtual

Move all local data to the host.

Implements paralution::Solver< OperatorType, VectorType, ValueType >.

template<class OperatorType , class VectorType , typename ValueType >
void paralution::MultiElimination< OperatorType, VectorType, ValueType >::Print ( void  ) const
virtual

Print information about the solver.

Implements paralution::Solver< OperatorType, VectorType, ValueType >.

template<class OperatorType , class VectorType , typename ValueType >
void paralution::Preconditioner< OperatorType, VectorType, ValueType >::PrintEnd_ ( void  ) const
protectedvirtualinherited

Print ending msg of the solver.

Implements paralution::Solver< OperatorType, VectorType, ValueType >.

template<class OperatorType , class VectorType , typename ValueType >
void paralution::Preconditioner< OperatorType, VectorType, ValueType >::PrintStart_ ( void  ) const
protectedvirtualinherited

Print starting msg of the solver.

Implements paralution::Solver< OperatorType, VectorType, ValueType >.

template<class OperatorType , class VectorType , typename ValueType >
void paralution::Solver< OperatorType, VectorType, ValueType >::ReBuildNumeric ( void  )
virtualinherited
template<class OperatorType, class VectorType , typename ValueType >
void paralution::Solver< OperatorType, VectorType, ValueType >::ResetOperator ( const OperatorType &  op)
virtualinherited
template<class OperatorType , class VectorType , typename ValueType >
void paralution::MultiElimination< OperatorType, VectorType, ValueType >::Set ( Solver< OperatorType, VectorType, ValueType > &  AA_Solver,
const int  level,
const double  drop_off = double(0.0) 
)
virtual

Initialize (recursively) ME-ILU with level (defines the depth of recursion); AA_Solvers - defines the last-block solver; drop_off - defines drop-off tolerance.

Referenced by main().

template<class OperatorType, class VectorType , typename ValueType >
void paralution::Solver< OperatorType, VectorType, ValueType >::SetOperator ( const OperatorType &  op)
inherited
template<class OperatorType , class VectorType , typename ValueType >
void paralution::MultiElimination< OperatorType, VectorType, ValueType >::SetPrecondMatrixFormat ( const unsigned int  mat_format)
virtual

Set a specific matrix type of the decomposed block matrices; if not set, CSR matrix format will be used.

template<class OperatorType , class VectorType , typename ValueType >
void paralution::MultiElimination< OperatorType, VectorType, ValueType >::Solve ( const VectorType &  rhs,
VectorType *  x 
)
virtual
template<class OperatorType , class VectorType, typename ValueType >
void paralution::Preconditioner< OperatorType, VectorType, ValueType >::SolveZeroSol ( const VectorType &  rhs,
VectorType *  x 
)
virtualinherited

Solve Operator x = rhs; but set first the init x = 0.

Reimplemented from paralution::Solver< OperatorType, VectorType, ValueType >.

template<class OperatorType , class VectorType , typename ValueType >
void paralution::Solver< OperatorType, VectorType, ValueType >::Verbose ( const int  verb = 1)
virtualinherited

Field Documentation

template<class OperatorType, class VectorType, typename ValueType>
OperatorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::A_
protected

A_ is decomposed into $ [D_, F_; E_, C_] $, where $ AA = C - E D^{-1} F$; $ E = E D^{-1} $;.

template<class OperatorType, class VectorType, typename ValueType>
OperatorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::AA_
protected

$ AA = C - E D^{-1} F$;

template<class OperatorType, class VectorType, typename ValueType>
MultiElimination<OperatorType, VectorType, ValueType>* paralution::MultiElimination< OperatorType, VectorType, ValueType >::AA_me_
protected
template<class OperatorType, class VectorType, typename ValueType>
int paralution::MultiElimination< OperatorType, VectorType, ValueType >::AA_nnz_
protected
template<class OperatorType, class VectorType, typename ValueType>
int paralution::MultiElimination< OperatorType, VectorType, ValueType >::AA_nrow_
protected

The sizes of the AA_ matrix.

template<class OperatorType, class VectorType, typename ValueType>
Solver<OperatorType, VectorType, ValueType>* paralution::MultiElimination< OperatorType, VectorType, ValueType >::AA_solver_
protected
template<class OperatorType, class VectorType, typename ValueType>
bool paralution::Solver< OperatorType, VectorType, ValueType >::build_
protectedinherited

Flag == true after building the solver (e.g. Build())

template<class OperatorType, class VectorType, typename ValueType>
OperatorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::C_
protected
template<class OperatorType, class VectorType, typename ValueType>
OperatorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::D_
protected

Diagonal part.

template<class OperatorType, class VectorType, typename ValueType>
bool paralution::MultiElimination< OperatorType, VectorType, ValueType >::diag_solver_init_
protected
template<class OperatorType, class VectorType, typename ValueType>
double paralution::MultiElimination< OperatorType, VectorType, ValueType >::drop_off_
protected
template<class OperatorType, class VectorType, typename ValueType>
OperatorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::E_
protected
template<class OperatorType, class VectorType, typename ValueType>
OperatorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::F_
protected
size_t paralution::ParalutionObj::global_obj_id
protectedinherited
template<class OperatorType, class VectorType, typename ValueType>
VectorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::inv_vec_D_
protected
template<class OperatorType, class VectorType, typename ValueType>
int paralution::MultiElimination< OperatorType, VectorType, ValueType >::level_
protected
template<class OperatorType, class VectorType, typename ValueType>
const OperatorType* paralution::Solver< OperatorType, VectorType, ValueType >::op_
protectedinherited

Pointer to the operator.

template<class OperatorType, class VectorType, typename ValueType>
bool paralution::MultiElimination< OperatorType, VectorType, ValueType >::op_mat_format_
protected

Keep the precond matrix in CSR or not.

template<class OperatorType, class VectorType, typename ValueType>
LocalVector<int> paralution::MultiElimination< OperatorType, VectorType, ValueType >::permutation_
protected
template<class OperatorType, class VectorType, typename ValueType>
Solver<OperatorType, VectorType, ValueType>* paralution::Solver< OperatorType, VectorType, ValueType >::precond_
protectedinherited

Pointer to the defined preconditioner.

template<class OperatorType, class VectorType, typename ValueType>
unsigned int paralution::MultiElimination< OperatorType, VectorType, ValueType >::precond_mat_format_
protected

Precond matrix format.

template<class OperatorType, class VectorType, typename ValueType>
VectorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::rhs_
protected
template<class OperatorType, class VectorType, typename ValueType>
VectorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::rhs_1_
protected
template<class OperatorType, class VectorType, typename ValueType>
VectorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::rhs_2_
protected
template<class OperatorType, class VectorType, typename ValueType>
int paralution::MultiElimination< OperatorType, VectorType, ValueType >::size_
protected
template<class OperatorType, class VectorType, typename ValueType>
VectorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::vec_D_
protected
template<class OperatorType, class VectorType, typename ValueType>
int paralution::Solver< OperatorType, VectorType, ValueType >::verb_
protectedinherited

Verbose flag verb == 0 no output verb == 1 print info about the solver (start,end); verb == 2 print (iter, residual) via iteration control;.

template<class OperatorType, class VectorType, typename ValueType>
VectorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::x_
protected
template<class OperatorType, class VectorType, typename ValueType>
VectorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::x_1_
protected
template<class OperatorType, class VectorType, typename ValueType>
VectorType paralution::MultiElimination< OperatorType, VectorType, ValueType >::x_2_
protected

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