From b3e98b4f0ec8d570c276028dad76c20ce9972b1d Mon Sep 17 00:00:00 2001
From: Michael Krisper <michael.krisper@tugraz.at>
Date: Wed, 13 Jul 2016 15:54:09 +0200
Subject: [PATCH] angulargear: correct exception with efficiency fallback,
 fullloadcurve: using DistinctBy now

---
 .../AbstractSimulationDataAdapter.cs          | 22 +++++--------------
 1 file changed, 6 insertions(+), 16 deletions(-)

diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
index 9c0a8d1a2e..d13b131401 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
@@ -198,7 +198,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 					case AngularGearType.SeparateAngularGear:
 						try {
 							angularGear.AngularGear.LossMap = TransmissionLossMap.Create(data.LossMap, data.Ratio, "AngularGear");
-						} catch (InvalidFileFormatException) {
+						} catch (VectoException) {
 							if (useEfficiencyFallback)
 								angularGear.AngularGear.LossMap = TransmissionLossMap.Create(data.Efficiency, data.Ratio, "AngularGear");
 							else {
@@ -211,9 +211,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 					case AngularGearType.LossesIncludedInGearbox:
 					case AngularGearType.None:
 						angularGear.AngularGear.Ratio = 1;
+						// if no angular gear or already included: Create LossMap with 100% efficiency
+						angularGear.AngularGear.LossMap = TransmissionLossMap.Create(1, angularGear.AngularGear.Ratio,
+							"Zero Losses AngularGear");
 						break;
 					default:
-						throw new ArgumentOutOfRangeException("data", "Unknown AngularGearType.");
+						throw new ArgumentOutOfRangeException("data", "Unknown AngularGear Type.");
 				}
 				return angularGear;
 			} catch (Exception e) {
@@ -236,7 +239,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			var entries =
 				gearCurve.FullLoadEntries.Concat(engineCurve.FullLoadEntries)
 					.OrderBy(x => x.EngineSpeed)
-					.Distinct(new FullLoadEntryEqualityComparer())
+					.DistinctBy((x, y) => x.EngineSpeed.Value().IsEqual(y.EngineSpeed.Value()))
 					.Select(x => new FullLoadCurve.FullLoadCurveEntry {
 						EngineSpeed = x.EngineSpeed,
 						TorqueFullLoad =
@@ -251,18 +254,5 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			};
 			return flc;
 		}
-
-		internal class FullLoadEntryEqualityComparer : IEqualityComparer<FullLoadCurve.FullLoadCurveEntry>
-		{
-			public bool Equals(FullLoadCurve.FullLoadCurveEntry x, FullLoadCurve.FullLoadCurveEntry y)
-			{
-				return x.EngineSpeed.Value().IsEqual(y.EngineSpeed.Value());
-			}
-
-			public int GetHashCode(FullLoadCurve.FullLoadCurveEntry obj)
-			{
-				return obj.EngineSpeed.Value().GetHashCode();
-			}
-		}
 	}
 }
\ No newline at end of file
-- 
GitLab