28 lines
744 B
C++
28 lines
744 B
C++
#include "fesa/solvers/linear/mkl_pardiso_tangent_solver.h"
|
|
|
|
#include <memory>
|
|
|
|
#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<Impl>()} {}
|
|
|
|
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
|