From 80b906b50b59edaecbf77398a083c7362cb08da4 Mon Sep 17 00:00:00 2001
From: Michael Krisper <michael.krisper@tugraz.at>
Date: Wed, 31 Aug 2016 17:27:10 +0200
Subject: [PATCH] AddComponent for Engine, removed container and idleController
 is default null (and will be taken from Engine)

---
 .../AbstractSimulationDataAdapter.cs             |  2 ++
 .../Models/Simulation/Impl/PowertrainBuilder.cs  |  8 ++++----
 .../Impl/PowertrainDrivingCycle.cs               |  2 +-
 VectoCore/VectoCore/Utils/ProviderExtensions.cs  |  6 +++++-
 .../VectoCoreTest/Integration/ATPowerTrain.cs    |  2 +-
 .../Integration/CoachAdvancedAuxPowertrain.cs    |  2 +-
 .../VectoCoreTest/Integration/CoachPowerTrain.cs |  2 +-
 .../Integration/SimulationRuns/FullPowertrain.cs |  6 +++---
 .../SimulationRuns/MinimalPowertrain.cs          |  6 +++---
 .../Integration/Truck40tPowerTrain.cs            |  2 +-
 .../Simulation/LossMapRangeValidationTest.cs     | 16 ++++++++--------
 11 files changed, 30 insertions(+), 24 deletions(-)

diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
index bea99479f4..adb2f1401b 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
@@ -143,6 +143,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			if (data.LossMap == null && useEfficiencyFallback) {
 				axleLossMap = TransmissionLossMapReader.Create(data.Efficiency, data.Ratio, "AxleGear");
 			} else {
+				if (data.LossMap == null)
+					throw new Exception("LossMap for AxleGear is missing.");
 				axleLossMap = TransmissionLossMapReader.Create(data.LossMap, data.Ratio, "AxleGear");
 			}
 			if (axleLossMap == null) {
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index 96dfeee458..532aee372e 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -115,7 +115,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			var engine = new CombustionEngine(container, data.EngineData, pt1Disabled: true);
 			var idleController = GetIdleController(data.PTO, engine);
 
-			powertrain.AddComponent(engine, idleController, container)
+			powertrain.AddComponent(engine, idleController)
 				.AddAuxiliaries(container, data);
 
 			return container;
@@ -146,7 +146,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			var engine = new CombustionEngine(container, data.EngineData);
 			var idleController = GetIdleController(data.PTO, engine);
 
-			powertrain.AddComponent(engine, idleController, container)
+			powertrain.AddComponent(engine, idleController)
 				.AddAuxiliaries(container, data);
 			_modData.HasTorqueConverter = data.GearboxData.Type.AutomaticTransmission();
 
@@ -173,7 +173,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				.AddComponent(new CycleClutch(container));
 
 			var engine = new CombustionEngine(container, data.EngineData);
-			powertrain.AddComponent(engine, GetIdleController(data.PTO, engine), container)
+			powertrain.AddComponent(engine, GetIdleController(data.PTO, engine))
 				.AddAuxiliaries(container, data);
 
 			return container;
@@ -205,7 +205,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			var idleController = GetIdleController(data.PTO, engine);
 			cycle.IdleController = idleController as IdleControllerSwitcher;
 
-			powertrain.AddComponent(engine, idleController, container)
+			powertrain.AddComponent(engine, idleController)
 				.AddAuxiliaries(container, data);
 
 			_modData.HasTorqueConverter = data.GearboxData.Type.AutomaticTransmission();
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs
index 60dd67a49f..f399f17c7e 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs
@@ -49,7 +49,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 	/// </summary>
 	public class PowertrainDrivingCycle :
 		StatefulProviderComponent<PowertrainDrivingCycle.DummyState, ISimulationOutPort, ITnInPort, ITnOutPort>,
-		IDrivingCycleInfo, ISimulationOutPort, ITnInProvider
+		IDrivingCycleInfo, ISimulationOutPort, ITnInProvider, ITnInPort
 	{
 		public class DummyState {}
 
diff --git a/VectoCore/VectoCore/Utils/ProviderExtensions.cs b/VectoCore/VectoCore/Utils/ProviderExtensions.cs
index 0eb11c65e2..2da24048ab 100644
--- a/VectoCore/VectoCore/Utils/ProviderExtensions.cs
+++ b/VectoCore/VectoCore/Utils/ProviderExtensions.cs
@@ -94,10 +94,14 @@ namespace TUGraz.VectoCore.Utils
 		}
 
 		public static CombustionEngine AddComponent(this IPowerTrainComponent prev, CombustionEngine next,
-			IIdleController idleController, IVehicleContainer container)
+			IIdleController idleController = null)
 		{
 			prev.InPort().Connect(next.OutPort());
 
+			if (idleController == null) {
+				idleController = next.IdleController;
+			}
+
 			var clutch = prev as IClutch;
 			if (clutch != null) {
 				clutch.IdleController = idleController;
diff --git a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs
index 5ec64c0977..92dd53ef33 100644
--- a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs
@@ -71,7 +71,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new DummyRetarder(container))
 				.AddComponent(new ATGearbox(container, gearboxData, new ATShiftStrategy(gearboxData, container)))
-				.AddComponent(engine, null, container);
+				.AddComponent(engine);
 
 			var aux = new EngineAuxiliary(container);
 			aux.AddConstant("", 0.SI<Watt>());
diff --git a/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs b/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs
index 58c13d773a..a5b06d00f6 100644
--- a/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs
@@ -95,7 +95,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 				.AddComponent(new DummyRetarder(container))
 				.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(engine, null, container);
+				.AddComponent(engine);
 
 			var aux = new BusAuxiliariesAdapter(container, AdvancedAuxFile, "Coach",
 				vehicleData.TotalVehicleWeight(), engineData.ConsumptionMap, engineData.IdleSpeed);
diff --git a/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs
index 163f6a9949..e766329acc 100644
--- a/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs
@@ -98,7 +98,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 				.AddComponent(new DummyRetarder(container))
 				.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
 				.AddComponent(clutch)
-				.AddComponent(engine, null, container);
+				.AddComponent(engine);
 
 			var aux = new EngineAuxiliary(container);
 			aux.AddConstant("", 0.SI<Watt>());
diff --git a/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs b/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
index c40bb4b769..0c72d1788b 100644
--- a/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
@@ -90,7 +90,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(new CombustionEngine(container, engineData), null, container);
+				.AddComponent(new CombustionEngine(container, engineData));
 
 			cyclePort.Initialize();
 
@@ -146,7 +146,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(new CombustionEngine(container, engineData), null, container);
+				.AddComponent(new CombustionEngine(container, engineData));
 
 			cyclePort.Initialize();
 
@@ -216,7 +216,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(new CombustionEngine(container, engineData), null, container);
+				.AddComponent(new CombustionEngine(container, engineData));
 
 			cyclePort.Initialize();
 
diff --git a/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs b/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
index cd4ae9eb25..50d20f6e7f 100644
--- a/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
@@ -83,7 +83,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(engine, null, container);
+				.AddComponent(engine);
 
 			var gbx = new MockGearbox(container);
 
@@ -131,7 +131,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(new CombustionEngine(container, engineData), null, container);
+				.AddComponent(new CombustionEngine(container, engineData));
 			//engine.IdleController.RequestPort = clutch.IdleControlPort;
 
 			var gbx = new MockGearbox(container);
@@ -202,7 +202,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(new CombustionEngine(container, engineData), null, container);
+				.AddComponent(new CombustionEngine(container, engineData));
 			//engine.IdleController.RequestPort = clutch.IdleControlPort;
 
 			var gbx = new MockGearbox(container);
diff --git a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs
index 6704bad3a4..83d65c1a60 100644
--- a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs
@@ -119,7 +119,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 				.AddComponent(new DummyRetarder(container))
 				.AddComponent(new Gearbox(container, gearboxData, gbxStrategy))
 				.AddComponent(clutch)
-				.AddComponent(engine, null, container);
+				.AddComponent(engine);
 
 			var aux = new EngineAuxiliary(container);
 			aux.AddConstant("", 0.SI<Watt>());
diff --git a/VectoCore/VectoCoreTest/Models/Simulation/LossMapRangeValidationTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/LossMapRangeValidationTest.cs
index 8d23f7038b..2642fba0c9 100644
--- a/VectoCore/VectoCoreTest/Models/Simulation/LossMapRangeValidationTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Simulation/LossMapRangeValidationTest.cs
@@ -174,14 +174,14 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 			var ratios = new[] { 14.93, 11.64, 9.02, 7.04, 5.64, 4.4, 3.39, 2.65, 2.05, 1.6, 1.28, 1.0 };
 			return new GearboxData {
 				Gears = ratios.Select((ratio, i) =>
-					Tuple.Create((uint)i,
-						new GearData {
-							MaxTorque = 2300.SI<NewtonMeter>(),
-							LossMap = TransmissionLossMapReader.ReadFromFile(!ratio.IsEqual(1.0) ? directlossMap : indirectLossMap, ratio,
-								string.Format("Gear {0}", i)),
-							Ratio = ratio,
-							ShiftPolygon = ShiftPolygonReader.ReadFromFile(ShiftPolygonFile)
-						}))
+						Tuple.Create((uint)i,
+							new GearData {
+								MaxTorque = 2300.SI<NewtonMeter>(),
+								LossMap = TransmissionLossMapReader.ReadFromFile(!ratio.IsEqual(1.0) ? directlossMap : indirectLossMap, ratio,
+									string.Format("Gear {0}", i)),
+								Ratio = ratio,
+								ShiftPolygon = ShiftPolygonReader.ReadFromFile(ShiftPolygonFile)
+							}))
 					.ToDictionary(k => k.Item1 + 1, v => v.Item2)
 			};
 		}
-- 
GitLab