20 #ifndef GEOS_LINEARALGEBRA_INTERFACES_SUITESPARSE_HPP_
21 #define GEOS_LINEARALGEBRA_INTERFACES_SUITESPARSE_HPP_
25 #include "common/PreconditionerBase.hpp"
35 struct SuiteSparseData;
41 template<
typename LAI >
116 void doSolve(
Vector const & b,
Vector & x,
bool transpose )
const;
122 real64 estimateConditionNumberBasic()
const;
128 real64 estimateConditionNumberAdvanced()
const;
131 std::unique_ptr< SuiteSparseData > m_data;
137 std::unique_ptr< typename Matrix::Export > m_export;
Simple interface for linear solvers that allows to extract solution results.
typename Base::Vector Vector
Alias for vector type.
LinearSolverResult m_result
Result of most recent solve (status, timings)
LinearSolverParameters m_params
Parameters for the solver.
typename Base::Matrix Matrix
Alias for matrix type.
Common interface for preconditioning operators.
bool ready() const
Chech if preconditioner is ready to use.
Matrix const & matrix() const
Access the matrix the preconditioner was computed from.
typename Base::Vector Vector
Alias for vector type.
typename LAI::ParallelMatrix Matrix
Alias for matrix type.
Wrapper for UMFPACK direct solver from SuiteSparse package.
virtual void setup(Matrix const &mat) override
Compute the preconditioner from a matrix.
virtual void clear() override
Clean up the preconditioner setup.
virtual void solve(Vector const &rhs, Vector &sol) const override
Solve the system with a particular rhs.
virtual void apply(Vector const &src, Vector &dst) const override
Apply operator to a vector, dst = this(src).
virtual ~SuiteSparse() override
Destructor.
SuiteSparse(LinearSolverParameters params)
Constructor with parameters.
void applyTranspose(Vector const &src, Vector &dst) const
Apply transpose operator to a vector, dst = this^T(src).
double real64
64-bit floating point type.
Set of parameters for a linear solver or preconditioner.