From be35e05f4d2e0fba55d7d462e0909bc136a5350b Mon Sep 17 00:00:00 2001 From: Michael Krisper <michael.krisper@tugraz.at> Date: Tue, 22 Mar 2022 15:29:57 +0100 Subject: [PATCH] PowertrainBuilder: Reformated BuildSimpleSerialHybridPowertrain --- .../Simulation/Impl/PowertrainBuilder.cs | 75 ++++++++----------- 1 file changed, 33 insertions(+), 42 deletions(-) diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index 9650ae8a99..9b226d18cd 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -860,64 +860,55 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl var ctl = new SimpleHybridController(container, es); - var pos = data.ElectricMachinesData.Select(x => x.Item1).First(x => x != PowertrainPosition.GEN); - + //Vehicle-->Wheels-->SimpleHybridController-->Brakes var vehicle = new Vehicle(container, data.VehicleData, data.AirdragData); var powertrain = vehicle - .AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, - data.VehicleData.WheelsInertia)) + .AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia)) .AddComponent(ctl) .AddComponent(new Brakes(container)); + var pos = data.ElectricMachinesData.First(x => x.Item1 != PowertrainPosition.GEN).Item1; switch (pos) { - case PowertrainPosition.HybridPositionNotSet: - throw new VectoException("invalid powertrain position"); + case PowertrainPosition.BatteryElectricE4: + //-->Engine E4 + powertrain.AddComponent(GetElectricMachine(PowertrainPosition.BatteryElectricE4, + data.ElectricMachinesData, container, es, ctl)); + + new DummyGearboxInfo(container); + new ATClutchInfo(container); + break; + + case PowertrainPosition.BatteryElectricE3: + //-->AxleGear-->Engine E3 + powertrain.AddComponent(new AxleGear(container, data.AxleGearData)) + .AddComponent(GetElectricMachine(PowertrainPosition.BatteryElectricE3, + data.ElectricMachinesData, container, es, ctl)); + + new DummyGearboxInfo(container); + new ATClutchInfo(container); + break; + case PowertrainPosition.BatteryElectricE2: + //-->AxleGear-->(AngleDrive)-->(Output Retarder)-->APTNGearbox or Gearbox-->(Input Retarder)-->Engine E2 var gearbox = data.GearboxData.Type.AutomaticTransmission() - ? (IHybridControlledGearbox)new APTNGearbox(container, ctl.ShiftStrategy) + ? new APTNGearbox(container, ctl.ShiftStrategy) : new Gearbox(container, ctl.ShiftStrategy); - powertrain = powertrain.AddComponent(new AxleGear(container, data.AxleGearData)) - .AddComponent(data.AngledriveData != null - ? new Angledrive(container, data.AngledriveData) - : null) - .AddComponent((IGearbox)gearbox, data.Retarder, container) - .AddComponent(GetElectricMachine(PowertrainPosition.BatteryElectricE2, data.ElectricMachinesData, - container, - es, ctl)); + + powertrain.AddComponent(new AxleGear(container, data.AxleGearData)) + .AddComponent(data.AngledriveData != null ? new Angledrive(container, data.AngledriveData) : null) + .AddComponent(gearbox, data.Retarder, container) + .AddComponent(GetElectricMachine(PowertrainPosition.BatteryElectricE2, + data.ElectricMachinesData, container, es, ctl)); + ctl.Gearbox = gearbox; if (data.GearboxData.Type.AutomaticTransmission()) { new DummyEngineInfo(container); } break; - case PowertrainPosition.BatteryElectricE3: - powertrain = powertrain.AddComponent(new AxleGear(container, data.AxleGearData)) - .AddComponent(GetElectricMachine(PowertrainPosition.BatteryElectricE3, data.ElectricMachinesData, - container, - es, ctl)); - new DummyGearboxInfo(container); - //new MockEngineInfo(container); - new ATClutchInfo(container); - break; - case PowertrainPosition.BatteryElectricE4: - powertrain = powertrain.AddComponent(GetElectricMachine(PowertrainPosition.BatteryElectricE4, data.ElectricMachinesData, - container, - es, ctl)); - new DummyGearboxInfo(container); - //new MockEngineInfo(container); - new ATClutchInfo(container); - break; - case PowertrainPosition.HybridP0: - case PowertrainPosition.HybridP1: - case PowertrainPosition.HybridP2_5: - case PowertrainPosition.HybridP2: - case PowertrainPosition.HybridP3: - case PowertrainPosition.HybridP4: - - throw new VectoException("testcase does not support parallel powertrain configurations"); + default: - throw new ArgumentOutOfRangeException(nameof(pos), pos, null); + throw new ArgumentOutOfRangeException(nameof(pos), pos, "Invalid engine powertrain position for simple serial hybrid vehicles."); } - } public void BuildSimpleGenSet(VectoRunData data, VehicleContainer container) -- GitLab