From 5b25c025b04c8dd72cfe6d702f13b030454ec381 Mon Sep 17 00:00:00 2001
From: "VKMTHD\\haraldmartini" <harald.martini@student.tugraz.at>
Date: Wed, 8 Feb 2023 15:24:50 +0100
Subject: [PATCH] simulate pevs with AT as APTN

---
 .../DeclarationDataAdapterHeavyLorry.cs       |  2 +-
 .../GearBoxDataAdapter.cs                     | 26 ++++++++++++-------
 2 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs
index 7cfda40672..3e03afd4ea 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs
@@ -449,7 +449,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 			public override GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData, VectoRunData runData,
 				IShiftPolygonCalculator shiftPolygonCalc)
 			{
-				return _gearboxDataAdapter.CreateGearboxData(inputData, runData, shiftPolygonCalc, new[] { GearboxType.AMT });
+				return _gearboxDataAdapter.CreateGearboxData(inputData, runData, shiftPolygonCalc, SupportedGearboxTypes);
 			}
 
 			public override ShiftStrategyParameters CreateGearshiftData(double axleRatio, PerSecond engineIdlingSpeed, GearboxType gearboxType, int gearsCount)
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs
index 82dbae6f59..8a52754cb8 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs
@@ -78,18 +78,17 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 			gearData.TorqueConverterShiftPolygon = shiftPolygon;
 		}
 
-		protected virtual void CreateATGearData(
-			IGearboxDeclarationInputData gearbox, uint i, GearData gearData,
+		protected virtual void CreateATGearData(GearboxType gearboxType, uint i, GearData gearData,
 			ShiftPolygon tcShiftPolygon, double gearDifferenceRatio, Dictionary<uint, GearData> gears,
 			VehicleCategory vehicleCategory)
 		{
-			if (gearbox.Type == GearboxType.ATPowerSplit && i == 0)
+			if (gearboxType == GearboxType.ATPowerSplit && i == 0)
 			{
 				// powersplit transmission: torque converter already contains ratio and losses
 				CretateTCFirstGearATPowerSplit(gearData, i, tcShiftPolygon);
 			}
 
-			if (gearbox.Type == GearboxType.ATSerial)
+			if (gearboxType == GearboxType.ATSerial)
 			{
 				if (i == 0)
 				{
@@ -296,10 +295,17 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 
 			var retVal = SetCommonGearboxData(gearbox);
 
-			//if (adas != null && retVal.Type.AutomaticTransmission() && adas.EcoRoll != EcoRollType.None &&
-			//	!adas.ATEcoRollReleaseLockupClutch.HasValue) {
-			//	throw new VectoException("Input parameter ATEcoRollReleaseLockupClutch required for AT transmission");
-			//}
+            if (adas != null && retVal.Type.AutomaticTransmission() && adas.EcoRoll != EcoRollType.None &&
+                !adas.ATEcoRollReleaseLockupClutch.HasValue)
+            {
+                throw new VectoException("Input parameter ATEcoRollReleaseLockupClutch required for AT transmission");
+            }
+			if ((inputData.VehicleType == VectoSimulationJobType.BatteryElectricVehicle || inputData.VehicleType == VectoSimulationJobType.SerialHybridVehicle) &&
+				gearbox.Type.AutomaticTransmission())
+			{
+				// PEV with APT-S or APT-P transmission are simulated as APT-N
+				retVal.Type = GearboxType.APTN;
+			}
 
 			retVal.ATEcoRollReleaseLockupClutch =
 				adas != null && adas.EcoRoll != EcoRollType.None && retVal.Type.AutomaticTransmission()
@@ -308,7 +314,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 
 			if (!supportedGearboxTypes.Contains(gearbox.Type))
 			{
-				throw new VectoSimulationException("Unsupported gearbox type: {0}!", retVal.Type);
+				throw new VectoSimulationException("Unsupported gearbox type: {0}!", gearbox.Type);
 			}
 
 			var gearsInput = FilterDisabledGears(inputData.TorqueLimits, gearbox);  //gearbox.Gears;
@@ -354,7 +360,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 					LossMap = lossMap,
 				};
 
-				CreateATGearData(gearbox, i, gearData, tcShiftPolygon, gearDifferenceRatio, gears,
+				CreateATGearData(retVal.Type, i, gearData, tcShiftPolygon, gearDifferenceRatio, gears,
 					runData.VehicleData.VehicleCategory);
 				gears.Add(i + 1, gearData);
 			}
-- 
GitLab