diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategyOptimized.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategyOptimized.cs index 11e03742c1cfab151696e24cbfd4c9bde215921b..db1361632c85b547a9aa7ad6323223fe00b04b73 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategyOptimized.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategyOptimized.cs @@ -51,11 +51,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl var modData = new ModalDataContainer(runData, null, null, false); var builder = new PowertrainBuilder(modData); TestContainer = new SimplePowertrainContainer(runData); + builder.BuildSimplePowertrain(runData, TestContainer); TestContainerGbx = TestContainer.GearboxCtl as ATGearbox; if (TestContainerGbx == null) { throw new VectoException("Unknown gearboxtype: {0}", TestContainer.GearboxCtl.GetType().FullName); } + // initialize vehicle so that vehicleStopped of the testcontainer is false (required for test-runs) + TestContainer.VehiclePort.Initialize(10.KMPHtoMeterPerSecond(), 0.SI<Radian>()); if (runData.Cycle.CycleType == CycleType.MeasuredSpeed) { try { @@ -186,6 +189,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl } var next = GearList[currentIdx - i]; + if (!next.TorqueConverterLocked.Value) { + continue; + } if (current.TorqueConverterLocked != next.TorqueConverterLocked && current.Gear != next.Gear) { // downshift from C to L with skipping gear not allowed continue; diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs index 9da3b6a0fa4d6cbf913b001016e62c62cc5d74e3..d7b23d6f6e639b4d8e64bd8062237629dbe796be 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs @@ -84,7 +84,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl + PreviousState.AirDragResistance + PreviousState.SlopeResistance; - return NextComponent.Initialize(PreviousState.VehicleTractionForce, vehicleSpeed); + return NextComponent?.Initialize(PreviousState.VehicleTractionForce, vehicleSpeed); } public IResponse Initialize(MeterPerSecond vehicleSpeed, Radian roadGradient, MeterPerSquareSecond startAcceleration)