28 lines
665 B
C++
28 lines
665 B
C++
#include "fesa/solvers/linear/mkl_pardiso_solver.h"
|
|
|
|
#include <memory>
|
|
|
|
#include "solvers/linear/pardiso_session.h"
|
|
|
|
namespace fesa {
|
|
|
|
class MklPardisoSolver::Impl {
|
|
public:
|
|
pardiso_internal::PardisoSession session_{
|
|
pardiso_internal::PardisoMatrixPolicy::kSpdUpper};
|
|
};
|
|
|
|
MklPardisoSolver::MklPardisoSolver() : impl_{std::make_unique<Impl>()} {}
|
|
|
|
MklPardisoSolver::~MklPardisoSolver() = default;
|
|
|
|
Status MklPardisoSolver::Factorize(const SparseMatrix& matrix) {
|
|
return impl_->session_.Factorize(matrix);
|
|
}
|
|
|
|
Status MklPardisoSolver::Solve(const Vector& rhs, Vector& solution) const {
|
|
return impl_->session_.Solve(rhs, solution);
|
|
}
|
|
|
|
} // namespace fesa
|