Files
FESADev/src/fesa/solvers/linear/mkl_pardiso_tangent_solver.cpp
T

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