#ifndef FESA_SOLVERS_LINEAR_MKL_PARDISO_SOLVER_H_ #define FESA_SOLVERS_LINEAR_MKL_PARDISO_SOLVER_H_ #include #include "fesa/solvers/linear/linear_solver.h" namespace fesa { /// @brief Adapts retained oneMKL PARDISO state behind LinearSolver. class MklPardisoSolver final : public LinearSolver { public: /// @brief Constructs an empty, unfactorized PARDISO adapter. MklPardisoSolver(); /// @brief Releases retained PARDISO backend state. ~MklPardisoSolver() override; /// @brief Validates and factorizes a symmetric free-equation matrix. Status Factorize(const SparseMatrix& matrix) override; /// @brief Substitutes one right-hand side without refactorization. Status Solve(const Vector& rhs, Vector& solution) const override; private: class Impl; std::unique_ptr impl_; }; } // namespace fesa #endif // FESA_SOLVERS_LINEAR_MKL_PARDISO_SOLVER_H_