Files
FESADev/include/fesa/solvers/linear/mkl_pardiso_tangent_solver.h
T

33 lines
977 B
C++

#ifndef FESA_SOLVERS_LINEAR_MKL_PARDISO_TANGENT_SOLVER_H_
#define FESA_SOLVERS_LINEAR_MKL_PARDISO_TANGENT_SOLVER_H_
#include <memory>
#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> impl_;
};
} // namespace fesa
#endif // FESA_SOLVERS_LINEAR_MKL_PARDISO_TANGENT_SOLVER_H_