Class grouping different direct solvers. More...
#include <SparseDirectSolver.hxx>
Public Member Functions | |
SparseDirectSolver () | |
Default constructor. | |
int | GetM () const |
returns the number of rows of the factorised matrix | |
int | GetN () const |
returns the number of rows of the factorised matrix | |
int | GetTypeOrdering () const |
returns the ordering algorithm to use | |
void | SetPermutation (const IVect &) |
sets directly the new ordering (by giving a permutation vector) | |
void | SelectOrdering (int) |
modifies the ordering algorithm to use | |
void | HideMessages () |
hiding all messages | |
void | ShowMessages () |
displaying basic messages | |
void | ShowFullHistory () |
displaying all the messages | |
void | SetPivotThreshold (const double &) |
sets the threshold used for pivoting | |
void | SetNumberOfThreadPerNode (int m) |
modifies the number of threads per node (for Pastix only) | |
int | GetNumberOfThreadPerNode () const |
modifies the number of threads per node (for Pastix only) | |
void | SelectDirectSolver (int) |
modifies the direct solver to use | |
void | SetNonSymmetricIlut () |
enforces the use of unsymmetric algorithm for ilut solver | |
int | GetDirectSolver () |
returns the direct solver to use | |
void | RefineSolution () |
void | DoNotRefineSolution () |
void | SetCoefficientEstimationNeededMemory (double) |
void | SetMaximumCoefficientEstimationNeededMemory (double) |
void | SetIncreaseCoefficientEstimationNeededMemory (double) |
double | GetThresholdMatrix () const |
returns threshold used for ilut (if this solver is selected) | |
~SparseDirectSolver () | |
Destructor. | |
void | Clear () |
clearing factorisation | |
void | SetThresholdMatrix (const double &) |
modifies threshold used for ilut | |
template<class Prop , class Storage , class Allocator > | |
void | Factorize (Matrix< T, Prop, Storage, Allocator > &A, bool keep_matrix=false) |
factorisation of matrix A More... | |
template<class Prop , class Storage , class Allocator > | |
void | PerformAnalysis (Matrix< T, Prop, Storage, Allocator > &A) |
Performs the analysis of the matrix before numerical factorization. | |
template<class Prop , class Storage , class Allocator > | |
void | PerformFactorization (Matrix< T, Prop, Storage, Allocator > &A) |
Performs the numerical factorization. | |
int | GetInfoFactorization (int &ierr) const |
Returns error code of the direct solver. | |
void | Solve (Vector< T > &x) |
x_solution is overwritten by solution of A x = b More... | |
void | Solve (const SeldonTranspose &TransA, Vector< T > &x, bool assemble=true) |
x_solution is overwritten with solution of A x = b or A^T x = b | |
void | Solve (Matrix< T, General, ColMajor > &x) |
x_solution is overwritten by solution of A x = b More... | |
void | Solve (const SeldonTranspose &, Matrix< T, General, ColMajor > &x) |
x_solution is overwritten by solution of A x = b More... | |
Static Public Member Functions | |
static bool | IsAvailableSolver (int type) |
returns true if the solver type is available | |
Protected Member Functions | |
bool | AffectOrdering () |
template<class T0 , class Prop , class Storage , class Alloc > | |
void | ComputeOrdering (Matrix< T0, Prop, Storage, Alloc > &A) |
computation of the permutation vector in order to reduce fill-in | |
void | InitSolver () |
initializes the solver (internal method) | |
Protected Attributes | |
int | type_ordering |
ordering to use | |
int | type_solver |
solver to use | |
int | nb_threads_per_node |
number of threads (for Pastix) | |
IVect | permut |
ordering (if supplied by the user) | |
int | n |
size of factorized linear system | |
VirtualSparseDirectSolver< T > * | solver |
pointer to the used solver | |
double | threshold_matrix |
threshold for ilut solver | |
double | pivot_threshold |
bool | refine_solution |
int | print_level |
bool | enforce_unsym_ilut |
use of non-symmetric ilut ? | |
Class grouping different direct solvers.
Definition at line 26 of file SparseDirectSolver.hxx.
SELDON_EXTERN template void Seldon::SparseDirectSolver< T >::Factorize | ( | Matrix< T, Prop, Storage, Allocator > & | A, |
bool | keep_matrix = false |
||
) |
factorisation of matrix A
LU factorisation is stored in the current object. You can ask to clear the matrix given on input (to spare memory)
Definition at line 503 of file SparseDirectSolver.cxx.
void Seldon::SparseDirectSolver< T >::Solve | ( | const SeldonTranspose & | trans, |
Matrix< T, General, ColMajor > & | x_sol | ||
) |
x_solution is overwritten by solution of A x = b
Multiple right hand sides We assume that Factorize has been called previously
Definition at line 827 of file SparseDirectSolver.cxx.
void Seldon::SparseDirectSolver< T >::Solve | ( | Matrix< T, General, ColMajor > & | x_solution | ) |
x_solution is overwritten by solution of A x = b
Multiple right hand sides We assume that Factorize has been called previously
Definition at line 814 of file SparseDirectSolver.cxx.
void Seldon::SparseDirectSolver< T >::Solve | ( | Vector< T > & | x_solution | ) |
x_solution is overwritten by solution of A x = b
We assume that Factorize has been called previously
Definition at line 783 of file SparseDirectSolver.cxx.