From a3a36402d26264df034bf3b5908c33b7ea294d76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Corentin=20Thom=C3=A9e?= <corentin.thomee@student.uliege.be> Date: Mon, 11 Mar 2024 09:14:56 +0100 Subject: [PATCH] Compute the solver only once to get massive speed boost --- hspm/src/hspm.cpp | 2 ++ hspm/src/hspm.h | 2 +- hspm/src/solver.cpp | 15 ++------------- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/hspm/src/hspm.cpp b/hspm/src/hspm.cpp index bd7be9c..55bc9e8 100644 --- a/hspm/src/hspm.cpp +++ b/hspm/src/hspm.cpp @@ -7,6 +7,8 @@ void HSPM::initHSPM() */ this->computeConstantInfluenceCoeffs(); + solver.compute(A_n); + this->blVel = Eigen::VectorXd::Zero(N); this->U = Eigen::VectorXd::Zero(N); this->V = Eigen::VectorXd::Zero(N); diff --git a/hspm/src/hspm.h b/hspm/src/hspm.h index ee2507a..d1e206b 100644 --- a/hspm/src/hspm.h +++ b/hspm/src/hspm.h @@ -73,7 +73,7 @@ public: Eigen::VectorXd U_wake; Eigen::VectorXd V_wake; private: - + Eigen::PartialPivLU<Eigen::MatrixXd> solver; }; #endif \ No newline at end of file diff --git a/hspm/src/solver.cpp b/hspm/src/solver.cpp index cbfe722..0eea992 100644 --- a/hspm/src/solver.cpp +++ b/hspm/src/solver.cpp @@ -28,19 +28,8 @@ void HSPM::solve() c += blVel; // Solve using Eigen's solver - Eigen::PartialPivLU<Eigen::MatrixXd> solver1; - //solver1.setTolerance(IT_SOLVER_TOLERANCE); - s1 = solver1.compute(A_n).solve(b); - - Eigen::PartialPivLU<Eigen::MatrixXd> solver2; - //solver2.setTolerance(IT_SOLVER_TOLERANCE); - s2 = solver2.compute(A_n).solve(c); - - // Check if the solver converged - //if (solver2.info() != Eigen::Success || solver1.info() != Eigen::Success) { - // std::cout << "Iterative solver failed !" << std::endl; - // exit(-1); - //} + s1 = solver.solve(b); + s2 = solver.solve(c); // q = s1*tau + s2 // We need Kutta for tau -- GitLab