From a2c854ef2f6d3c1c4358fdf9bbc22e12bf30e847 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Fri, 2 Apr 2021 13:04:50 +0200
Subject: [PATCH] electric motor: handle the case that inertia torque eats up
 the recuperation torque

---
 .../Models/SimulationComponent/Impl/ElectricMotor.cs          | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
index acabf8d216..c3fa563e6f 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
@@ -146,6 +146,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			var maxDriveTorqueEm = maxDriveTorqueEmMap == null ? null : maxDriveTorqueEmMap + inertiaTorqueEm;
 			// inertia has to be added here. recuperation torque is positive, when accelerating inertia is positive and adds more drag to the drivetrain, 
 			var maxRecuperationTorqueEm = maxRecuperationTorqueEmMap == null ? null : maxRecuperationTorqueEmMap + inertiaTorqueEm;
+			if (maxRecuperationTorqueEm != null && maxRecuperationTorqueEm.IsSmallerOrEqual(0)) {
+				// max recuperation torque may get negative due to torque losses
+				maxRecuperationTorqueEm = null;
+			}
 
 			var maxDriveTorqueDt = maxDriveTorqueEm == null ? null : ConvertEmTorqueToDrivetrain(maxDriveTorqueEm);
 			var maxRecuperationTorqueDt = maxRecuperationTorqueEm == null ? null : ConvertEmTorqueToDrivetrain(maxRecuperationTorqueEm);
-- 
GitLab