From ee3f3951245addea283ab3b2efb789e5d12522f2 Mon Sep 17 00:00:00 2001 From: "Dmitry Yu. Naumov" <github@naumov.de> Date: Fri, 18 Sep 2015 18:24:32 +0000 Subject: [PATCH] [MaL] Move eigen solver compute call to solve(). --- MathLib/LinAlg/Eigen/EigenLinearSolver.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp index e1bbcbc83fe..3c66f5cef42 100644 --- a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp +++ b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp @@ -32,16 +32,17 @@ public: explicit EigenDirectLinearSolver(EigenMatrix::RawMatrixType &A) : _A(A) { INFO("-> initialize with the coefficient matrix"); - _solver.compute(A); - if(_solver.info()!=Eigen::Success) { - ERR("Failed during Eigen linear solver initialization"); - return; - } } void solve(EigenVector::RawVectorType &b, EigenVector::RawVectorType &x, EigenOption &/*opt*/) override { INFO("-> solve"); + _solver.compute(_A); + if(_solver.info()!=Eigen::Success) { + ERR("Failed during Eigen linear solver initialization"); + return; + } + x = _solver.solve(b); if(_solver.info()!=Eigen::Success) { ERR("Failed during Eigen linear solve"); @@ -62,11 +63,6 @@ public: explicit EigenIterativeLinearSolver(EigenMatrix::RawMatrixType &A) : _A(A) { INFO("-> initialize with the coefficient matrix"); - _solver.compute(A); - if(_solver.info()!=Eigen::Success) { - ERR("Failed during Eigen linear solver initialization"); - return; - } } void solve(EigenVector::RawVectorType &b, EigenVector::RawVectorType &x, EigenOption &opt) override @@ -74,6 +70,11 @@ public: INFO("-> solve"); _solver.setTolerance(opt.error_tolerance); _solver.setMaxIterations(opt.max_iterations); + _solver.compute(_A); + if(_solver.info()!=Eigen::Success) { + ERR("Failed during Eigen linear solver initialization"); + return; + } x = _solver.solveWithGuess(b, x); if(_solver.info()!=Eigen::Success) { ERR("Failed during Eigen linear solve"); -- GitLab