From a2d2d759ec656e590f62a9fae2abd29f8d97f6be Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Wed, 12 Jun 2019 16:44:22 +0200
Subject: [PATCH] insert intermediate points into extended loss-map

---
 .../ComponentData/TransmissionLossMapReader.cs | 18 ++++++++++--------
 .../Models/Declaration/DeclarationData.cs      |  2 +-
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/VectoCore/VectoCore/InputData/Reader/ComponentData/TransmissionLossMapReader.cs b/VectoCore/VectoCore/InputData/Reader/ComponentData/TransmissionLossMapReader.cs
index 2bf6548ebe..3da0b1a2c9 100644
--- a/VectoCore/VectoCore/InputData/Reader/ComponentData/TransmissionLossMapReader.cs
+++ b/VectoCore/VectoCore/InputData/Reader/ComponentData/TransmissionLossMapReader.cs
@@ -129,14 +129,16 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
 				VectoMath.LeastSquaresFitting(speedBucket.Value, x => x.InputTorque.Value(), x => x.TorqueLoss.Value(), out k, out d,
 					out r);
 
-				var inTq = DeclarationData.LossMapExtrapolationFactor * maxTorque;
-				if (k > 0) {
-					entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, inTq, k * inTq + d.SI<NewtonMeter>()));
-					entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, -inTq, k * inTq + d.SI<NewtonMeter>()));
-				} else {
-					var torqueLossLastEntry = speedBucket.Value.OrderBy(x => x.InputSpeed).Last().TorqueLoss;
-					entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, inTq, torqueLossLastEntry));
-					entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, -inTq, torqueLossLastEntry));
+				for (var i = 2; i <= DeclarationData.LossMapExtrapolationFactor; i++) {
+					var inTq = i * maxTorque;
+					if (k > 0) {
+						entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, inTq, k * inTq + d.SI<NewtonMeter>()));
+						entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, -inTq, k * inTq + d.SI<NewtonMeter>()));
+					} else {
+						var torqueLossLastEntry = speedBucket.Value.OrderBy(x => x.InputSpeed).Last().TorqueLoss;
+						entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, inTq, torqueLossLastEntry));
+						entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, -inTq, torqueLossLastEntry));
+					}
 				}
 			}
 
diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
index 440df83783..53d2910afb 100644
--- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
+++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
@@ -77,7 +77,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 		public static readonly StandardBodies StandardBodies = new StandardBodies();
 		public static readonly Payloads Payloads = new Payloads();
 		public static readonly PTOTransmission PTOTransmission = new PTOTransmission();
-		public const double LossMapExtrapolationFactor = 10;
+		public const double LossMapExtrapolationFactor = 6;
 
 		public static readonly ADASCombinations ADASCombinations = new ADASCombinations();
 		public static readonly ADASBenefits ADASBenefits = new ADASBenefits();
-- 
GitLab