Below, the external libraries which we have interfaces for are introduced. They are grouped into linear solvers and Eigensolvers.
The plot below shows a comparison of the different linear solvers available with Concepts. It is generated using hpFEM2d-simple.cc with more refinement cycles and different solvers to solve the linear system. In this application, Pardiso is the fastest and SuperLU is the slowest.
PETSc is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. It employs the MPI standard for all message-passing communication.
Our interface to PETSc uses only its serial capablities and we only use the linear solvers of PETSc (but there is much more).
concepts::PETSc is an interface to PETSc featuring many different iterative solvers and preconditioners. concepts::PETScMat is an interface to the sparse matrices format of PETSc.
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.
concepts::Pardiso is an interface to Pardiso.
SuperLU is a general purpose library for the direct solution of large, sparse, nonsymmetric systems of linear equations on high performance machines. The library routines will perform an LU decomposition with partial pivoting and triangular system solves through forward and back substitution. The LU factorization routines can handle non-square matrices but the triangular solves are performed only for square matrices.
concepts::SuperLU is an interface to SuperLU.
UMFPACK is a set of routines for solving unsymmetric sparse linear systems, Ax=b, using the Unsymmetric MultiFrontal method.
concepts::Umfpack is an interface to Umfpack.
ARPACK is designed to solve large scale eigenvalue problems. The package is designed to compute a few eigenvalues and corresponding eigenvectors of a general n by n matrix A. It is most appropriate for large sparse or structured matrices A. This software is based upon an algorithmic variant of the Arnoldi process called the Implicitly Restarted Arnoldi Method (IRAM). When the matrix A is symmetric it reduces to a variant of the Lanczos process called the Implicitly Restarted Lanczos Method (IRLM). These variants may be viewed as a synthesis of the Arnoldi/Lanczos process with the Implicitly Shifted QR technique that is suitable for large scale problems.
ARPACK software is capable of solving large scale symmetric, nonsymmetric, and generalized eigenproblems from significant application areas. The software is designed to compute a few (k) eigenvalues with user specified features such as those of largest real part or largest magnitude. No auxiliary storage is required. A set of Schur basis vectors for the desired k-dimensional eigen-space is computed which is numerically orthogonal to working precision. Numerically accurate eigenvectors are available on request.
eigensolver::ArPack and eigensolver::ArPackNonSymm are interfaces to ARPACK.
JDBSYM is a C library containing an implementation of the Jacobi-Davidson method optimized for symmetric eigenvalue problems. It solves eigenproblems of the form A*x = lambda*x and A*x = lambda*B*x with or without preconditioning, where A is symmetric and B is symmetric positive definite. The implementation supports blocking.
eigensolver::JdbSym is an interface to JDBSYM.