diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs index 34a04c78e5cc25d242b7eca19fe5c7115a364477..e63f0466d14c0c2e6775499f270ad4fc7165d7b2 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs @@ -691,6 +691,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl Case<ResponseGearShift>(r => { Log.Info("Brake -> Got GearShift response, performing roll action + brakes"); //response = Driver.DrivingActionRoll(absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed, gradient); + DataBus.BrakePower = 0.SI<Watt>(); response = Driver.DrivingActionBrake(absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed, gradient, targetDistance: targetDistance); }); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs index 25f4aacb60a83628992fd65918eb90ca485f4361..c02b6520866f7dba7bb753f455ed93372de71e62 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs @@ -74,7 +74,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl return _engageTime.IsSmallerOrEqual(absTime); } - public Gearbox(IVehicleContainer container, GearboxData gearboxModelData, IShiftStrategy strategy, KilogramSquareMeter engineInertia) + public Gearbox(IVehicleContainer container, GearboxData gearboxModelData, IShiftStrategy strategy, + KilogramSquareMeter engineInertia) : base(container, gearboxModelData, engineInertia) { _strategy = strategy; @@ -309,14 +310,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl var inTorque = outTorque / ModelData.Gears[Gear].Ratio + inTorqueLossResult.Value; var inAngularVelocity = outAngularVelocity * ModelData.Gears[Gear].Ratio; + var inertiaTorqueLossOut = !inAngularVelocity.IsEqual(0) + ? Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) / + avgOutAngularVelocity + : 0.SI<NewtonMeter>(); + inTorque += inertiaTorqueLossOut / ModelData.Gears[Gear].Ratio; if (dryRun) { - CurrentState.InertiaTorqueLossOut = !inAngularVelocity.IsEqual(0) - ? Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) / - avgOutAngularVelocity - : 0.SI<NewtonMeter>(); - inTorque += CurrentState.InertiaTorqueLossOut / ModelData.Gears[Gear].Ratio; - var inertiaTorqueLossIn = avgOutAngularVelocity.IsEqual(0, 1e-9) ? 0.SI<NewtonMeter>() : Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) / @@ -357,11 +357,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl // begin critical section CurrentState.TransmissionTorqueLoss = inTorque - outTorque / ModelData.Gears[Gear].Ratio; // MQ 19.2.2016: check! inertia is related to output side, torque loss accounts to input side - CurrentState.InertiaTorqueLossOut = !inAngularVelocity.IsEqual(0) - ? Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) / - avgOutAngularVelocity - : 0.SI<NewtonMeter>(); - inTorque += CurrentState.InertiaTorqueLossOut / ModelData.Gears[Gear].Ratio; + CurrentState.InertiaTorqueLossOut = inertiaTorqueLossOut; CurrentState.TransmissionTorqueLoss = inTorque - outTorque / ModelData.Gears[Gear].Ratio; CurrentState.TorqueLossResult = inTorqueLossResult; @@ -378,7 +374,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl protected override void DoWriteModalResults(IModalDataContainer container) { var avgInAngularSpeed = (PreviousState.InAngularVelocity + CurrentState.InAngularVelocity) / 2.0; - // (PreviousState.OutAngularVelocity + + // (PreviousState.OutAngularVelocity + //CurrentState.OutAngularVelocity) / 2.0 * ModelData.Gears[Gear].Ratio; container[ModalResultField.Gear] = Disengaged || DataBus.VehicleStopped ? 0 : Gear;