#include "fesa/solvers/linear/mkl_pardiso_tangent_solver.h" #include #include "solvers/linear/pardiso_session.h" namespace fesa { class MklPardisoTangentSolver::Impl { public: pardiso_internal::PardisoSession session_{ pardiso_internal::PardisoMatrixPolicy::kUnsymmetricFull}; }; MklPardisoTangentSolver::MklPardisoTangentSolver() : impl_{std::make_unique()} {} MklPardisoTangentSolver::~MklPardisoTangentSolver() = default; Status MklPardisoTangentSolver::FactorizeFresh(const SparseMatrix& matrix) { return impl_->session_.Factorize(matrix); } Status MklPardisoTangentSolver::SolveCorrection(const Vector& rhs, Vector& solution) const { return impl_->session_.Solve(rhs, solution); } } // namespace fesa