diff --git a/src/scheme/RusanovEulerianCompositeSolverTools.cpp b/src/scheme/RusanovEulerianCompositeSolverTools.cpp index ed8eb9e4c948c70d73c26aa9fac88e763a2ecbc4..37ec39c5995789095496320f6cda0447f2157339 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 adb65e480b0de78d9674100c1482cf9191f34a5c..cac0a9f356cf4a474c92c7a96634db71d504fe55 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, )