Public Member Functions | Protected Attributes | List of all members
Seldon::MatrixSuperLU< double > Class Referenceabstract

class interfacing SuperLU functions in double precision More...

#include <SuperLU.hxx>

Inheritance diagram for Seldon::MatrixSuperLU< double >:
Seldon::MatrixSuperLU_Base< double > Seldon::VirtualSparseDirectSolver< double >

Public Member Functions

size_t GetMemorySize () const
 Returns the size of memory used by the current object.
 
void Clear ()
 
template<class Prop , class Allocator >
void GetLU (Matrix< double, Prop, ColSparse, Allocator > &Lmat, Matrix< double, Prop, ColSparse, Allocator > &Umat, bool permuted=true)
 Returns the LU factorization. More...
 
template<class Prop , class Allocator >
void GetLU (Matrix< double, Prop, RowSparse, Allocator > &Lmat, Matrix< double, Prop, RowSparse, Allocator > &Umat, bool permuted=true)
 Returns the LU factorization. More...
 
void FactorizeCSC (Vector< superlu_int_t > &Ptr, Vector< superlu_int_t > &IndRow, Vector< double > &Val, bool sym)
 factorization of matrix given in CSC form
 
template<class T0 , class Prop , class Storage , class Allocator >
void FactorizeMatrix (Matrix< T0, Prop, Storage, Allocator > &mat, bool keep_matrix=false)
 factorization of matrix in double precision using SuperLU
 
template<class Allocator2 >
void Solve (Vector< double, VectFull, Allocator2 > &x)
 Solves linear system A x = b.
 
template<class Allocator2 >
void Solve (const SeldonTranspose &TransA, Vector< double, VectFull, Allocator2 > &x)
 Solves linear system A x = b or A^T x = b.
 
void Solve (const SeldonTranspose &Trans, double *x_ptr, int nrhs_)
 Solves linear system A x = b or A^T x = b.
 
template<class Allocator2 >
void Solve (Matrix< double, General, ColMajor, Allocator2 > &x)
 Solves linear system A x = b.
 
template<class Allocator2 >
void Solve (const SeldonTranspose &TransA, Matrix< double, General, ColMajor, Allocator2 > &x)
 Solves linear system A x = b or A^T x = b.
 
const Vector< int_t > & GetRowPermutation () const
 Returns the permutation of rows. More...
 
const Vector< int_t > & GetColPermutation () const
 Returns the permutation of columns. More...
 
void Init (int size, int_t &panel_size, int_t &relax)
 inits SuperLU computation
 
void SetNumberOfThreadPerNode (int p)
 Sets the number of threads per mpi process.
 
void SelectOrdering (int type)
 selects ordering to use in the interfaced solver
 
void SetPermutation (const IVect &)
 
virtual void SetPermutation (const Vector< int > &)
 gives the ordering array to the interface solver
 
bool UseInteger8 () const
 
void HideMessages ()
 no message from SuperLU
 
void ShowMessages ()
 allows messages from SuperLU
 
int GetInfoFactorization () const
 returns status of factorisation
 
virtual void SetPivotThreshold (double)
 Sets the threshold for pivot.
 
virtual void RefineSolution ()
 Tells to the direct solver that refinement is required.
 
virtual void DoNotRefineSolution ()
 Tells to the direct solver that no refinement is required.
 
virtual void SetCoefficientEstimationNeededMemory (double coef)
 Method overloaded in Mumps solver.
 
virtual void SetMaximumCoefficientEstimationNeededMemory (double coef)
 Method overloaded in Mumps solver.
 
virtual void SetIncreaseCoefficientEstimationNeededMemory (double coef)
 Method overloaded in Mumps solver.
 
virtual void SelectParallelOrdering (int)
 selects ordering to use in parallel for the interfaced solver
 
virtual size_t GetMemorySize () const=0
 

Protected Attributes

superlu::SuperMatrix L
 objects of SuperLU
 
superlu::SuperMatrix U
 
superlu::SuperMatrix B
 
superlu::GlobalLU_t Glu
 object of SuperLU
 
superlu::SCformat * Lstore
 object of SuperLU
 
superlu::NCformat * Ustore
 object of SuperLU
 
superlu::superlu_options_t options
 options
 
superlu::SuperLUStat_t stat
 statistics
 
Vector< int_t > perm_r
 permutation array
 
Vector< int_t > perm_c
 
colperm_t permc_spec
 ordering scheme
 
int_t n
 number of rows
 
int_t nloc
 
bool display_info
 display information about factorization ? Error code returned by SuperLU.
 
int info_facto
 

Detailed Description

class interfacing SuperLU functions in double precision

Definition at line 132 of file SuperLU.hxx.

Member Function Documentation

◆ GetColPermutation()

const Vector< int_t > & Seldon::MatrixSuperLU_Base< double >::GetColPermutation
inherited

Returns the permutation of columns.

In order to retain the sparsity as much as possible, SuperLU permutes rows and columns before the factorization. This method returns the column permutation that was employed in the factorization. This method is obviously to be called after the factorization has been performed.

Returns
The permutation of the columns.

Definition at line 292 of file SuperLU.cxx.

◆ GetLU() [1/2]

template<class Prop , class Allocator >
void Seldon::MatrixSuperLU< double >::GetLU ( Matrix< double, Prop, ColSparse, Allocator > &  Lmat,
Matrix< double, Prop, ColSparse, Allocator > &  Umat,
bool  permuted = true 
)

Returns the LU factorization.

Parameters
[out]Lmatmatrix L in the LU factorization.
[out]Umatmatrix U in the LU factorization.
[in]permutedshould the permuted matrices be provided? SuperLU permutes the rows and columns of the factorized matrix. If permuted is set to true, L and U are returned as SuperLU computed them, hence with permuted rows and columns. If permuted is set to false, the matrices L and U are "unpermuted" so that L times U is equal to the initial matrix.

Definition at line 347 of file SuperLU.cxx.

◆ GetLU() [2/2]

template<class Prop , class Allocator >
void Seldon::MatrixSuperLU< double >::GetLU ( Matrix< double, Prop, RowSparse, Allocator > &  Lmat,
Matrix< double, Prop, RowSparse, Allocator > &  Umat,
bool  permuted = true 
)

Returns the LU factorization.

Parameters
[out]Lmatmatrix L in the LU factorization.
[out]Umatmatrix U in the LU factorization.
[in]permutedshould the permuted matrices be provided? SuperLU permutes the rows and columns of the factorized matrix. If permuted is set to true, L and U are returned as SuperLU computed them, hence with permuted rows and columns. If permuted is set to false, the matrices L and U are "unpermuted" so that L times U is equal to the initial matrix.
Note
This method will first retrieve the L and U matrices in 'ColSparse' format and then convert them into 'RowSparse'.

Definition at line 414 of file SuperLU.cxx.

◆ GetRowPermutation()

const Vector< int_t > & Seldon::MatrixSuperLU_Base< double >::GetRowPermutation
inherited

Returns the permutation of rows.

In order to retain the sparsity as much as possible, SuperLU permutes rows and columns before the factorization. This method returns the row permutation that was employed in the factorization. This method is obviously to be called after the factorization has been performed.

Returns
The permutation of the rows.

Definition at line 278 of file SuperLU.cxx.


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