From 1fbb809666ba81c96db46936ef387fc6b9126dd4 Mon Sep 17 00:00:00 2001
From: Michael Krisper <michael.krisper@tugraz.at>
Date: Mon, 30 Aug 2021 17:30:37 +0200
Subject: [PATCH] Alternator: restore previous version (unchanged)

---
 .../Impl/Electrics/Alternator.cs              | 27 +++++++++++--------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/Alternator.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/Alternator.cs
index d0b9c4b1d4..a928e33e60 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/Alternator.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/Alternator.cs
@@ -64,20 +64,20 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 		public double GetEfficiency(PerSecond crankSpeed, Ampere currentDemand)
 		{
 			// First build RangeTable, table 4
-			InitialiseRangeTable();
-			CalculateRangeTable(currentDemand);
+				InitialiseRangeTable();
+				CalculateRangeTable(currentDemand);
 
-			// Calculate ( Interpolate ) Efficiency
-			var range = RangeTable.Select(s => new AltUserInput<PerSecond>(s.RPM, s.Efficiency)).ToList();
-
-			return Iterpolate(range, crankSpeed * PulleyRatio);
+				// Calculate ( Interpolate ) Efficiency
+				var range = RangeTable.Select(s => new AltUserInput<PerSecond>(s.RPM, s.Efficiency)).ToList();
 
+				return Iterpolate(range, crankSpeed * PulleyRatio);
+			
 		}
 
 
+		
 
-
-		public static double Iterpolate<T>(List<AltUserInput<T>> values, T x) where T : SI
+		public static double Iterpolate<T>(List<AltUserInput<T>> values, T x) where T:SI
 		{
 			var lowestX = values.Min(m => m.Amps);
 			var highestX = values.Max(m => m.Amps);
@@ -103,7 +103,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 			var deltaX = postKey - preKey;
 			var deltaEff = postEff - preEff;
 
-
+			
 			var retVal = ((x - preKey) / deltaX).Value() * deltaEff + preEff;
 
 			return retVal;
@@ -166,9 +166,14 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 			// IF(M12=IF(N12>N13,M12-((M12-M13)/(N12-N13))*(N12-N11),M12-((M12-M13)/(N12-N13))*(N12-N11)), M12-0.01, IF(N12>N13,M12-((M12-M13)/(N12-N13))*(N12-N11),M12-((M12-M13)/(N12-N13))*(N12-N11)))
 			var M11 = N12 - N13 == 0
 						? 0.RPMtoRad()
-						: M12 == M12 - (M12 - M13) / (N12 - N13) * (N12 - N11)
+						: (
+							M12 == (N12 > N13
+								? M12 - (M12 - M13) / (N12 - N13) * (N12 - N11)
+								: M12 - (M12 - M13) / (N12 - N13) * (N12 - N11))
 								? M12 - 0.01.RPMtoRad()
-								: M12 - (M12 - M13) / (N12 - N13) * (N12 - N11);
+								: (N12 > N13
+									? M12 - (M12 - M13) / (N12 - N13) * (N12 - N11)
+									: M12 - (M12 - M13) / (N12 - N13) * (N12 - N11)));
 
 			RangeTable[1].RPM = M11;
 
-- 
GitLab