Sparse direct solver for symmetric and unsymmetric matrices. More...
#include <pardiso.hh>


Public Types | |
| typedef Cmplxtype< Real >::type | c_type |
| Real type of data type. | |
| enum | MATRIX_TYPE { STRUCT_SYMM = 1, SPD = 2, SYMM_INDEF = -2, UNSYMM = 11 } |
| Type of matrix to solve. More... | |
| typedef Realtype< Real >::type | r_type |
| Real type of data type. | |
| typedef Real | type |
| Type of data, e.g. matrix entries. | |
Public Member Functions | |
| virtual const uint | dimX () const |
| Returns the size of the image space of the operator (number of rows of the corresponding matrix) | |
| virtual const uint | dimY () const |
| Returns the size of the source space of the operator (number of columns of the corresponding matrix) | |
| void | operator() (const Vector< Real > &fncY, Vector< Real > &fncX) |
| virtual void | operator() (const Function< c_type > &fncY, Function< c_type > &fncX) |
Application operator for complex function fncY. | |
| virtual void | operator() (const Function< Real > &fncY, Function< Real > &fncX) |
| virtual void | operator() (const Function< r_type > &fncY, Function< Real > &fncX) |
Application operator for real function fncY. | |
| Pardiso (const SparseMatrix< Real > &matrix, enum MATRIX_TYPE type) | |
| Constructor. | |
| virtual const Space< Real > & | spaceX () const |
| virtual const Space< Real > & | spaceY () const |
| virtual | ~Pardiso () |
Protected Member Functions | |
| virtual std::ostream & | info (std::ostream &os) const |
| Returns information in an output stream. | |
Protected Attributes | |
| uint | dimX_ |
| Dimension of image space and the source space. | |
| uint | dimY_ |
Private Member Functions | |
| void | errorcheck_ (int error) const throw (FortranException) |
| Checks error condition of a PARDISO call and outputs a error message. | |
| int | solver_pardiso_factor_ () |
| Calls PARDISO to factor the matrix (symbolically and numerically) | |
| int | solver_pardiso_solve_ (double *, double *) |
| Calls PARDISO to do the forward and backward substiution. | |
Private Attributes | |
| void * | A_ |
| PARDISO data: matrix in Compressed Sparse Row format. | |
| Array< Real > | a_ |
| PARDISO data: entries of the matrix. | |
| int | error |
| bool | factored_ |
| Stores if the factorization was already computed before. | |
| Array< size_t > | handle |
| PARDISO data: parameter. | |
| Array< uint > | ia_ |
| PARDISO data: row and column indices of the matrix. | |
| Array< int > | iparam |
| PARDISO data: parameter. | |
| Array< uint > | ja_ |
| int | matrix_number |
| int | matrix_type |
| int | max_factorizations |
| PARDISO data: parameter. | |
| int | max_threads |
| int | msglvl |
| const uint | n_ |
| System size. | |
| int | nb |
| uint | nnz_ |
| PARDISO data: number of non-zeros. | |
| const Space< Real > & | spcX_ |
| Image space. | |
| const Space< Real > & | spcY_ |
| Source space. | |
| bool | symmetric_ |
| Symmetric system? | |
Sparse direct solver for symmetric and unsymmetric matrices.
This class interfaces to PARDISO [1]. Use the environment variable OMP_NUM_THREADS to change the number of threas used (default is 1).
The package PARDISO is a thread-safe, high-performance, robust, memory efficient and easy to use software for solving large sparse symmetric and unsymmetric linear systems of equations on shared memory multiprocessors. The solver uses a combination of left- and right-looking Level-3 BLAS supernode techniques to exploit pipelining parallelism and memory hierarchies. In order to improve sequential and parallel sparse numerical factorization performance, the algorithms are based on a Level-3 BLAS update and pipelining parallelism is exploited with a combination of left- and right-looking supernode techniques.
Definition at line 40 of file pardiso.hh.
Real type of data type.
Reimplemented in concepts::VecOperator< Real >, concepts::DenseMatrix< Real >, concepts::DiagonalMatrix< Real >, concepts::Matrix< Real >, concepts::Permutation< Real >, and concepts::SparseMatrix< Real >.
Definition at line 47 of file compositions.hh.
Real type of data type.
Reimplemented in concepts::VecOperator< Real >, concepts::DenseMatrix< Real >, concepts::DiagonalMatrix< Real >, concepts::Matrix< Real >, concepts::Permutation< Real >, and concepts::SparseMatrix< Real >.
Definition at line 45 of file compositions.hh.
typedef Real concepts::Operator< Real >::type [inherited] |
Type of data, e.g. matrix entries.
Definition at line 43 of file compositions.hh.
Type of matrix to solve.
Definition at line 43 of file pardiso.hh.
| concepts::Pardiso::Pardiso | ( | const SparseMatrix< Real > & | matrix, |
| enum MATRIX_TYPE | type | ||
| ) |
Constructor.
| matrix | Matrix |
| type | Type of the matrix |
| virtual concepts::Pardiso::~Pardiso | ( | ) | [virtual] |
| virtual const uint concepts::Operator< Real >::dimX | ( | ) | const [inline, virtual, inherited] |
Returns the size of the image space of the operator (number of rows of the corresponding matrix)
Definition at line 87 of file compositions.hh.
| virtual const uint concepts::Operator< Real >::dimY | ( | ) | const [inline, virtual, inherited] |
Returns the size of the source space of the operator (number of columns of the corresponding matrix)
Definition at line 92 of file compositions.hh.
| void concepts::Pardiso::errorcheck_ | ( | int | error | ) | const throw (FortranException) [private] |
Checks error condition of a PARDISO call and outputs a error message.
| virtual std::ostream& concepts::Pardiso::info | ( | std::ostream & | os | ) | const [protected, virtual] |
Returns information in an output stream.
Reimplemented from concepts::Operator< Real >.
| virtual void concepts::Operator< Real >::operator() | ( | const Function< r_type > & | fncY, |
| Function< Real > & | fncX | ||
| ) | [virtual, inherited] |
Application operator for real function fncY.
Computes fncX = A(fncY) where A is this operator.
fncX becomes the type of the operator, for real data it becomes real, for complex data it becomes complex.
In derived classes its enough to implement the operator() for real Operator's. If a complex counterpart is not implemented, the function fncY is transformed to a complex function and then the application operator for complex functions is called.
If in a derived class the operator() for real Operator's is not implemented, a exception is thrown from here.
Reimplemented in concepts::VecOperator< Real >, concepts::DenseMatrix< Real >, concepts::DiagonalMatrix< Real >, concepts::Matrix< Real >, concepts::Permutation< Real >, and concepts::SparseMatrix< Real >.
| virtual void concepts::Operator< Real >::operator() | ( | const Function< c_type > & | fncY, |
| Function< c_type > & | fncX | ||
| ) | [virtual, inherited] |
Application operator for complex function fncY.
Computes fncX = A(fncY) where A is this operator. fncX becomes complex.
In derived classes its enough to implement the operator() for complex Operator's. If a real counterpart is not implemented, the function fncY is splitted into real and imaginary part and the application operator for real functions is called for each. Then the result is combined.
If in a derived class the operator() for complex Operator's is not implemented, a exception is thrown from here.
Reimplemented in concepts::VecOperator< Real >, concepts::DenseMatrix< Real >, concepts::DiagonalMatrix< Real >, concepts::Matrix< Real >, concepts::Permutation< Real >, and concepts::SparseMatrix< Real >.
| virtual void concepts::Pardiso::operator() | ( | const Function< Real > & | fncY, |
| Function< Real > & | fncX | ||
| ) | [virtual] |
| int concepts::Pardiso::solver_pardiso_factor_ | ( | ) | [private] |
Calls PARDISO to factor the matrix (symbolically and numerically)
| int concepts::Pardiso::solver_pardiso_solve_ | ( | double * | , |
| double * | |||
| ) | [private] |
Calls PARDISO to do the forward and backward substiution.
Definition at line 61 of file pardiso.hh.
Definition at line 62 of file pardiso.hh.
void* concepts::Pardiso::A_ [private] |
PARDISO data: matrix in Compressed Sparse Row format.
Definition at line 80 of file pardiso.hh.
Array<Real> concepts::Pardiso::a_ [private] |
PARDISO data: entries of the matrix.
Definition at line 82 of file pardiso.hh.
uint concepts::Operator< Real >::dimX_ [protected, inherited] |
Dimension of image space and the source space.
Definition at line 96 of file compositions.hh.
uint concepts::Operator< Real >::dimY_ [protected, inherited] |
Definition at line 96 of file compositions.hh.
int concepts::Pardiso::error [private] |
Definition at line 90 of file pardiso.hh.
bool concepts::Pardiso::factored_ [private] |
Stores if the factorization was already computed before.
Definition at line 75 of file pardiso.hh.
Array<size_t> concepts::Pardiso::handle [private] |
PARDISO data: parameter.
Definition at line 86 of file pardiso.hh.
Array<uint> concepts::Pardiso::ia_ [private] |
PARDISO data: row and column indices of the matrix.
Definition at line 84 of file pardiso.hh.
Array<int> concepts::Pardiso::iparam [private] |
PARDISO data: parameter.
Definition at line 88 of file pardiso.hh.
Array<uint> concepts::Pardiso::ja_ [private] |
Definition at line 84 of file pardiso.hh.
int concepts::Pardiso::matrix_number [private] |
Definition at line 90 of file pardiso.hh.
int concepts::Pardiso::matrix_type [private] |
Definition at line 90 of file pardiso.hh.
int concepts::Pardiso::max_factorizations [private] |
PARDISO data: parameter.
Definition at line 90 of file pardiso.hh.
int concepts::Pardiso::max_threads [private] |
Definition at line 90 of file pardiso.hh.
int concepts::Pardiso::msglvl [private] |
Definition at line 90 of file pardiso.hh.
const uint concepts::Pardiso::n_ [private] |
System size.
Definition at line 67 of file pardiso.hh.
int concepts::Pardiso::nb [private] |
Definition at line 90 of file pardiso.hh.
uint concepts::Pardiso::nnz_ [private] |
PARDISO data: number of non-zeros.
Definition at line 78 of file pardiso.hh.
const Space<Real>& concepts::Pardiso::spcX_ [private] |
Image space.
Definition at line 69 of file pardiso.hh.
const Space<Real>& concepts::Pardiso::spcY_ [private] |
Source space.
Definition at line 71 of file pardiso.hh.
bool concepts::Pardiso::symmetric_ [private] |
Symmetric system?
Definition at line 73 of file pardiso.hh.