#ifndef FESA_SOLVERS_LINEAR_MKL_PARDISO_TANGENT_SOLVER_H_ #define FESA_SOLVERS_LINEAR_MKL_PARDISO_TANGENT_SOLVER_H_ #include #include "fesa/solvers/linear/tangent_solver.h" namespace fesa { /// @brief Adapts full-CSR unsymmetric oneMKL PARDISO tangent solves. class MklPardisoTangentSolver final : public TangentSolver { public: /// @brief Constructs an empty, unfactorized PARDISO tangent adapter. MklPardisoTangentSolver(); /// @brief Releases retained PARDISO tangent backend state. ~MklPardisoTangentSolver() override; /// @brief Validates and factorizes one fresh nonlinear tangent matrix. Status FactorizeFresh(const SparseMatrix& matrix) override; /// @brief Solves one correction without refactorizing the tangent. Status SolveCorrection(const Vector& rhs, Vector& correction) const override; private: class Impl; std::unique_ptr impl_; }; } // namespace fesa #endif // FESA_SOLVERS_LINEAR_MKL_PARDISO_TANGENT_SOLVER_H_