diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index 61376cc1166b2e1b9038d262e46c7e715614b346..9aaa3fa84bb427151a0731ba96a4bf101efc1a00 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -415,35 +415,27 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl HybridController ctl; SwitchableClutch clutch = null; if (data.GearboxData.Type.ManualTransmission()) { - var strategy = new HybridStrategy(data, container); + ctl = new HybridController(container, new HybridStrategy(data, container), es); clutch = new SwitchableClutch(container, data.EngineData); - - ctl = new HybridController(container, strategy, es); } else { - var strategy = new HybridStrategyAT(data, container); - - ctl = new HybridController(container, strategy, es); + ctl = new HybridController(container, new HybridStrategyAT(data, container), es); new ATClutchInfo(container); } - // add engine before gearbox so that gearbox can obtain if an ICE is available already in constructor + // add engine before gearbox in the container, that gearbox can obtain it var engine = new StopStartCombustionEngine(container, data.EngineData); + var gearbox = GetGearbox(container, ctl.ShiftStrategy); - var gbx = gearbox as IHybridControlledGearbox; - if (gbx == null) { + if (!(gearbox is IHybridControlledGearbox gbx)) { throw new VectoException("Gearbox can not be used for parallel hybrid"); } var idleController = GetIdleController(data.PTO, engine, container); - ctl.Gearbox = gbx; ctl.Engine = engine; - // DistanceBasedDrivingCycle --> driver --> vehicle --> wheels - // --> axleGear --> (retarder) --> gearBox --> (retarder) --> clutch --> engine <-- Aux var cycle = new DistanceBasedDrivingCycle(container, data.Cycle); - cycle - .AddComponent(new Driver(container, data.DriverData, new DefaultDriverStrategy(container))) + cycle.AddComponent(new Driver(container, data.DriverData, new DefaultDriverStrategy(container))) .AddComponent(new Vehicle(container, data.VehicleData, data.AirdragData)) .AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia)) .AddComponent(ctl)