From bfcceb3eaf7ef251f3519408c39f671c8eb657b9 Mon Sep 17 00:00:00 2001
From: "VKMTHD\\haraldmartini" <harald.martini@student.tugraz.at>
Date: Mon, 19 Sep 2022 15:20:28 +0200
Subject: [PATCH] updated declaration data adapter interfaces

---
 ...clarationDataAdapterGenericCompletedBus.cs |  4 +--
 .../IDeclarationDataAdapter.cs                |  9 +++--
 .../DeclarationDataAdapterPrimaryBus.cs       |  8 ++---
 ...DeclarationModeHeavyLorryRunDataFactory.cs | 36 ++++++++++++-------
 ...DeclarationModePrimaryBusRunDataFactory.cs |  1 -
 .../Models/Declaration/DeclarationData.cs     |  1 +
 .../AMTShiftStrategyOptimized.cs              |  6 ++--
 7 files changed, 38 insertions(+), 27 deletions(-)

diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs
index 54a077b8f9..f5d5fe7eae 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs
@@ -78,9 +78,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.CompletedBus.Gener
 				//return _gearboxDataAdapter.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed, gbx.Type, gbx.Gears.Count);
 			}
 
-			public RetarderData CreateRetarderData(IRetarderInputData retarderData)
+			public RetarderData CreateRetarderData(IRetarderInputData retarderData, PowertrainPosition position = PowertrainPosition.HybridPositionNotSet)
 			{
-				return _retarderDataAdapter.CreateRetarderData(retarderData);
+				return _retarderDataAdapter.CreateRetarderData(retarderData, position);
 			}
 
 			public DriverData CreateDriverData(Segment segment)
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
index 32466be8f2..ce7438b9d4 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
@@ -29,6 +29,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
         //IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData, MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles);
         //AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData);
 		VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission first, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> keyValuePair, bool allowVocational);
+		RetarderData CreateRetarderData(IRetarderInputData retarderData, PowertrainPosition position = PowertrainPosition.HybridPositionNotSet);
 	}
 
 	public interface ILorryDeclarationDataAdapter : IDeclarationDataAdapter
@@ -47,7 +48,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 		PTOData CreatePTOTransmissionData(IPTOTransmissionInputData ptoData);
 
-		RetarderData CreateRetarderData(IRetarderInputData retarderData, PowertrainPosition position = PowertrainPosition.HybridPositionNotSet);
+
 
 		ShiftStrategyParameters CreateGearshiftData(double axleRatio, PerSecond engineIdlingSpeed, GearboxType gearboxType, int gearsCount);
 
@@ -86,7 +87,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			VectoRunData runData,
 			IShiftPolygonCalculator shiftPolygonCalc);
 
-		RetarderData CreateRetarderData(IRetarderInputData retarderData);
+		//RetarderData CreateRetarderData(IRetarderInputData retarderData);
 		PTOData CreatePTOTransmissionData(IPTOTransmissionInputData ptoData);
 
 		ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed);
@@ -102,7 +103,6 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			Meter vehicleLength, int? numSteeredAxles);
 
 		AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragData, Mission mission, Segment segment);
-		VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational);
 	}
 
 	public interface IGenericCompletedBusDeclarationDataAdapter : IDeclarationDataAdapter
@@ -129,14 +129,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 		ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed);
 
-		RetarderData CreateRetarderData(IRetarderInputData retarderData);
+		//RetarderData CreateRetarderData(IRetarderInputData retarderData);
 
 		DriverData CreateDriverData(Segment segment);
 
 		IAuxiliaryConfig CreateBusAuxiliariesData(
 			Mission mission, IVehicleDeclarationInputData vehicleData, VectoRunData runData);
 
-		VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational);
 	}
 
 	public interface ISpecificCompletedBusDeclarationDataAdapter
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
index 4f53e399f7..1964006aba 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
@@ -82,9 +82,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 				throw new NotImplementedException();
 			}
 
-			public RetarderData CreateRetarderData(IRetarderInputData retarderData)
+
+			public RetarderData CreateRetarderData(IRetarderInputData retarderData, PowertrainPosition position = PowertrainPosition.HybridPositionNotSet)
 			{
-				return _retarderDataAdapter.CreateRetarderData(retarderData);
+				return _retarderDataAdapter.CreateRetarderData(retarderData, position);
 			}
 
 			public PTOData CreatePTOTransmissionData(IPTOTransmissionInputData ptoData)
@@ -135,8 +136,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 
 			public override ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed)
 			{
-				throw new NotImplementedException();
-				//return _gearboxDataAdapter.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed, gbx.Type, gbx.Gears.Count);
+				return _gearboxDataAdapter.CreateGearshiftData(axleRatio, engineIdlingSpeed, gbx.Type, gbx.Gears.Count);
 			}
 
 			#endregion
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs
index 5ff594efda..5a1c49f687 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs
@@ -106,8 +106,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
 
 				_segment = GetSegment(vehicle);
 				_driverdata = DataAdapter.CreateDriverData(_segment);
-				_driverdata.AccelerationCurve = AccelerationCurveReader.ReadFromStream(_segment.AccelerationFile);
-				
+
 				_airdragData = DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData,
 													_segment.Missions.First(), _segment);
 				if (InputDataProvider.JobInputData.Vehicle.AxleConfiguration.AxlegearIncludedInGearbox())
@@ -246,6 +245,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
 			{
 				var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData;
 				var engineModes = engine.EngineModes;
+				if (!modeIdx.HasValue) {
+					throw new VectoException("Engine mode has to be specified for conventional vehicle");
+				}
 				var engineMode = engineModes[modeIdx.Value];
 
 				var simulationRunData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
@@ -266,7 +268,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
 				simulationRunData.GearshiftParameters =
 					DataAdapter.CreateGearshiftData(
 						simulationRunData.AxleGearData?.AxleGear.Ratio ?? 1.0,
-						null,
+						vehicle.EngineIdleSpeed,
 						vehicle.Components.GearboxInputData.Type,
 						vehicle.Components.GearboxInputData.Gears.Count
 					);
@@ -276,9 +278,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
 					PowertrainBuilder.GetShiftStrategyName(vehicle.Components.GearboxInputData.Type,
 						vehicle.VehicleType);
 				simulationRunData.AxleGearData = _axlegearData;
-
 				simulationRunData.GearboxData = DataAdapter.CreateGearboxData(vehicle, simulationRunData,
 					ShiftPolygonCalculator.Create(shiftStrategyName, simulationRunData.GearshiftParameters));
+
 				simulationRunData.AngledriveData = _angledriveData;
 				simulationRunData.Aux = DataAdapter.CreateAuxiliaryData(
 					vehicle.Components.AuxiliaryInputData,
@@ -319,15 +321,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
 			protected override IEnumerable<VectoRunData> GetNextRun()
 			{
 				var vehicle = InputDataProvider.JobInputData.Vehicle;
-				foreach (var mission in _segment.Missions)
-				{
-					//if (mission.MissionType.IsEMS() &&
-					//	engine.RatedPowerDeclared.IsSmaller(DeclarationData.MinEnginePowerForEMS))
-					//{
-					//	continue;
-					//}
-
-					foreach (var loading in mission.Loadings)
+				foreach (var mission in _segment.Missions) {
+					if (mission.MissionType.IsEMS() &&
+						vehicle.Components.ElectricMachines.Entries
+							.Where(e => e.Position != PowertrainPosition.GEN)
+							.Sum(e => e.ElectricMachine.R85RatedPower)
+							.IsSmaller(DeclarationData.MinEnginePowerForEMS_PEV))
+                    {
+                        continue;
+                    }
+
+                    foreach (var loading in mission.Loadings)
 					{
 						var simulationRunData = CreateVectoRunData(vehicle, mission, loading);
 						simulationRunData.BatteryData.Batteries.ForEach(t => t.Item2.ChargeSustainingBattery = true);
@@ -384,6 +388,12 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
 				}
 
 
+				if (mission.MissionType == MissionType.MunicipalUtility) {
+
+				}
+
+
+
 
 				result.Aux = new List<VectoRunData.AuxData>(); //TODO: Remove
 
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs
index 9cfcf3e8ec..bf2a2cddd6 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs
@@ -93,7 +93,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
 
 				_segment = GetSegment(vehicle);
 				_driverdata = DataAdapter.CreateDriverData(_segment);
-				_driverdata.AccelerationCurve = AccelerationCurveReader.ReadFromStream(_segment.AccelerationFile);
 				var tempVehicle = DataAdapter.CreateVehicleData(vehicle, _segment, _segment.Missions.First(),
 														_segment.Missions.First().Loadings.First(), _allowVocational);
 				_airdragData = DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData,
diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
index b908450f98..882807f008 100644
--- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
+++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
@@ -67,6 +67,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 		public const string DeclarationDataResourcePrefix = "TUGraz.VectoCore.Resources.Declaration";
 
 		public static readonly Watt MinEnginePowerForEMS = 300e3.SI<Watt>();
+		public static readonly Watt MinEnginePowerForEMS_PEV = 300e3.SI<Watt>();
 
 		public static readonly TruckSegments TruckSegments = new TruckSegments();
 		public static readonly PrimaryBusSegments PrimaryBusSegments = new PrimaryBusSegments();
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/AMTShiftStrategyOptimized.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/AMTShiftStrategyOptimized.cs
index dc0ccc2119..363f901f80 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/AMTShiftStrategyOptimized.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/AMTShiftStrategyOptimized.cs
@@ -48,14 +48,16 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		public AMTShiftStrategyOptimized(IVehicleContainer dataBus) : base(dataBus)
 		{
 			var runData = dataBus.RunData;
+			_shiftStrategyParameters = runData.GearshiftParameters;
+			_shiftPolygonCalculator = ShiftPolygonCalculator.Create(Name, _shiftStrategyParameters);
 			if (runData.EngineData == null) {
 				return;
 			}
 
 			fcMap = runData.EngineData.Fuels;
 			fld = runData.EngineData.FullLoadCurves;
-			_shiftStrategyParameters = runData.GearshiftParameters;
-			_shiftPolygonCalculator = ShiftPolygonCalculator.Create(Name, _shiftStrategyParameters);
+
+			
 			//accCurve = runData.DriverData.AccelerationCurve;
 			vehicleMass = runData.VehicleData.TotalVehicleMass;
 			if (_shiftStrategyParameters == null) {
-- 
GitLab