From 177461722c6c4a9d4064eca46721e29703ba254d Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Fri, 29 May 2020 09:10:06 +0200
Subject: [PATCH] combustion engine: consider max speed per gear only if tc is
 locked. max tc speed is handled in tc anyway

---
 .../Models/SimulationComponent/Impl/CombustionEngine.cs   | 8 +++++---
 .../Models/SimulationComponent/Impl/TorqueConverter.cs    | 2 +-
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs
index 3ea854218a..7f44e2ec0e 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs
@@ -332,9 +332,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		protected virtual PerSecond GetEngineSpeedLimit(Second absTime)
 		{
-			return DataBus.Gear == 0 || !DataBus.ClutchClosed(absTime)
-				? ModelData.FullLoadCurves[0].N95hSpeed
-				: VectoMath.Min(DataBus.GetGearData(DataBus.Gear).MaxSpeed, ModelData.FullLoadCurves[0].N95hSpeed);
+			if (DataBus.Gear == 0 || !DataBus.ClutchClosed(absTime) || !DataBus.TCLocked) {
+				return ModelData.FullLoadCurves[0].N95hSpeed;
+			}
+
+			return VectoMath.Min(DataBus.GetGearData(DataBus.Gear).MaxSpeed, ModelData.FullLoadCurves[0].N95hSpeed);
 		}
 
 		public virtual IResponse Initialize(NewtonMeter outTorque, PerSecond outAngularVelocity)
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs
index 3e9dcfb487..efb7e558e5 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs
@@ -363,7 +363,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 					operatingPoint.InAngularVelocity);
 			}
 
-			var maxInputSpeed = VectoMath.Min(VectoMath.Min(ModelData.TorqueConverterSpeedLimit, DataBus.EngineN95hSpeed), DataBus.GetGearData(DataBus.Gear).MaxSpeed);
+			var maxInputSpeed = VectoMath.Min(ModelData.TorqueConverterSpeedLimit, DataBus.EngineN95hSpeed);
 			if (operatingPoint.InAngularVelocity.IsGreater(maxInputSpeed)) {
 				operatingPoint = ModelData.FindOperatingPoint(maxInputSpeed, outAngularVelocity);
 			}
-- 
GitLab