From e7f6bf9246fa51e38117addc6bc7a3e91010c218 Mon Sep 17 00:00:00 2001 From: Michael Krisper <michael.krisper@tugraz.at> Date: Tue, 29 Mar 2022 10:26:54 +0200 Subject: [PATCH] PowertrainBuilder.GetShiftStrategy: Simplified sub-switch-case into one big construct --- .../Simulation/Impl/PowertrainBuilder.cs | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index 8098dbb906..51eb4ba46f 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -1242,21 +1242,16 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl var runData = container.RunData; switch (runData.GearboxData.Type) { - case GearboxType.AMT: - switch (runData.JobType) { - case VectoSimulationJobType.ConventionalVehicle: + case GearboxType.AMT when runData.JobType == VectoSimulationJobType.ConventionalVehicle: runData.ShiftStrategy = AMTShiftStrategyOptimized.Name; return new AMTShiftStrategyOptimized(container); - case VectoSimulationJobType.BatteryElectricVehicle: - case VectoSimulationJobType.SerialHybridVehicle: + case GearboxType.AMT when runData.JobType.IsOneOf(VectoSimulationJobType.BatteryElectricVehicle, VectoSimulationJobType.SerialHybridVehicle): runData.ShiftStrategy = PEVAMTShiftStrategy.Name; return new PEVAMTShiftStrategy(container); - - default: + case GearboxType.AMT: throw new VectoException("no default gearshift strategy available for gearbox type {0} and job type {1}", runData.GearboxData.Type, runData.JobType); - } case GearboxType.MT: runData.ShiftStrategy = MTShiftStrategy.Name; @@ -1267,23 +1262,18 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl runData.ShiftStrategy = ATShiftStrategyOptimized.Name; return new ATShiftStrategyOptimized(container); - case GearboxType.APTN: - switch (runData.JobType) { - case VectoSimulationJobType.ParallelHybridVehicle: - case VectoSimulationJobType.SerialHybridVehicle: - case VectoSimulationJobType.BatteryElectricVehicle: + case GearboxType.APTN when runData.JobType.IsOneOf(VectoSimulationJobType.ParallelHybridVehicle, VectoSimulationJobType.SerialHybridVehicle, VectoSimulationJobType.BatteryElectricVehicle): runData.ShiftStrategy = APTNShiftStrategy.Name; return new APTNShiftStrategy(container); - case VectoSimulationJobType.ConventionalVehicle when container.IsTestPowertrain: + case GearboxType.APTN when runData.JobType == VectoSimulationJobType.ConventionalVehicle && container.IsTestPowertrain: return null; - default: + case GearboxType.APTN: throw new ArgumentException("APT-N Gearbox is only applicable on hybrids and battery electric vehicles."); - } default: - throw new ArgumentOutOfRangeException("GearboxType", runData.GearboxData.Type, "Unknown Gearbox Type"); + throw new ArgumentOutOfRangeException("GearboxType", runData.GearboxData.Type, "VECTO can not automatically derive shift strategy for GearboxType."); } } -- GitLab