diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs index da3e53ba337d5a57b6cc75f1e0e499e7295edd9b..d1efc09b8f88f172c0a0ffbb21f16ea3c0bff8e1 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs @@ -322,7 +322,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl var minFc = results.MinBy(x => x.Item2); - if (minFc.Item2.IsGreater(fcCurrent * shiftStrategyParameters.RatingFactorCurrentGear)) { + var ratingFactor = outTorque < 0 + ? 1 / shiftStrategyParameters.RatingFactorCurrentGear + : shiftStrategyParameters.RatingFactorCurrentGear; + + if (minFc.Item2.IsGreater(fcCurrent * ratingFactor)) { return minFc.Item1; } @@ -511,8 +515,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl var fcCurrent = GetFCRating(responseCurrent); var minFc = results.MinBy(x => x.Item2); - - if (minFc.Item2.IsGreater(fcCurrent * shiftStrategyParameters.RatingFactorCurrentGear)) { + + var ratingFactor = outTorque < 0 + ? 1 / shiftStrategyParameters.RatingFactorCurrentGear + : shiftStrategyParameters.RatingFactorCurrentGear; + + + if (minFc.Item2.IsGreater(fcCurrent * ratingFactor)) { return minFc.Item1; }