diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs index c52d979cd5ce828d9ad8a04feaa3606409591636..69cc09c2444a466993ac9054673f7eb52a5ad837 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs @@ -221,7 +221,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl if (DataBus.VehicleStopped) { _engageTime = absTime; } - + IResponse retVal; // TODO MQ 2016/03/10: investigate further the effects of having the condition angularvelocity != 0 if (ClutchClosed(absTime) /* && !angularVelocity.IsEqual(0) */) { @@ -337,7 +337,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl Log.Debug("EngineSpeed is below IdleSpeed, Gearbox disengage!"); return new ResponseEngineSpeedTooLow { Source = this, GearboxPowerRequest = outTorque * outAngularVelocity }; } - var dryRunResponse = NextComponent.Request(absTime, dt, inTorque, inAngularVelocity, true); + var inertiaTorqueLossIn = + Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) / + avgOutAngularVelocity / ModelData.Gears[Gear].Ratio; + var dryRunResponse = NextComponent.Request(absTime, dt, inTorque + inertiaTorqueLossIn, inAngularVelocity, true); dryRunResponse.GearboxPowerRequest = outTorque * (PreviousState.OutAngularVelocity + outAngularVelocity) / 2.0; return dryRunResponse; }