From a3359ece9854f8717c9da6fa59b589460e8b9006 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Wed, 8 Feb 2017 13:03:09 +0100
Subject: [PATCH] reset braking power before next search, fix gearbox: add
 inertia

---
 .../Impl/DefaultDriverStrategy.cs             |  1 +
 .../SimulationComponent/Impl/Gearbox.cs       | 22 ++++++++-----------
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
index 34a04c78e5..e63f0466d1 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 25f4aacb60..c02b652086 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;
-- 
GitLab