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