From 66cf0a04d21ea8e8a8e397b8f71f7464f834088a Mon Sep 17 00:00:00 2001
From: HOCH PHILIPPE <philippe.hoch@gmail.com>
Date: Sat, 1 Mar 2025 18:11:23 +0100
Subject: [PATCH] Adding min max eignevalues

---
 src/scheme/RusanovEulerianCompositeSolverTools.cpp | 14 ++++++++++++++
 src/scheme/RusanovEulerianCompositeSolverTools.hpp |  5 +++++
 2 files changed, 19 insertions(+)

diff --git a/src/scheme/RusanovEulerianCompositeSolverTools.cpp b/src/scheme/RusanovEulerianCompositeSolverTools.cpp
index ed8eb9e4c..37ec39c59 100644
--- a/src/scheme/RusanovEulerianCompositeSolverTools.cpp
+++ b/src/scheme/RusanovEulerianCompositeSolverTools.cpp
@@ -14,6 +14,20 @@ toolsCompositeSolver::EvaluateMaxEigenValueTimesNormalLengthInGivenDirection(con
   return std::max(std::fabs(uscaln - c_mean) * norme_normal, std::fabs(uscaln + c_mean) * norme_normal);
 }
 
+template <class Rd>
+std::pair<double, double>
+toolsCompositeSolver::EvaluateMinMaxEigenValueTimesNormalLengthInGivenDirection(const Rd& U_mean,
+                                                                                const double& c_mean,
+                                                                                const Rd& normal)
+{
+  const double norme_normal = l2Norm(normal);
+  Rd unit_normal            = normal;
+  unit_normal *= 1. / norme_normal;
+  const double uscaln = dot(U_mean, unit_normal);
+
+  return {(uscaln - c_mean) * norme_normal, (uscaln + c_mean) * norme_normal};
+}
+
 double
 toolsCompositeSolver::compute_dt(const std::shared_ptr<const DiscreteFunctionVariant>& u_v,
                                  const std::shared_ptr<const DiscreteFunctionVariant>& c_v)
diff --git a/src/scheme/RusanovEulerianCompositeSolverTools.hpp b/src/scheme/RusanovEulerianCompositeSolverTools.hpp
index adb65e480..cac0a9f35 100644
--- a/src/scheme/RusanovEulerianCompositeSolverTools.hpp
+++ b/src/scheme/RusanovEulerianCompositeSolverTools.hpp
@@ -17,6 +17,11 @@ double EvaluateMaxEigenValueTimesNormalLengthInGivenDirection(   // const double
   const double& c_mean,
   const Rd& normal);
 
+std::pair<double, double> toolsCompositeSolver::EvaluateMinMaxEigenValueTimesNormalLengthInGivenDirection(
+  const Rd& U_mean,
+  const double& c_mean,
+  const Rd& normal);
+
 // template<class Rpxd>
 // Rpxd Flux(const double& Rho, const Rd& u, const R& E, )
 
-- 
GitLab