From 32abb702f744e60882439a6977dfbac29c895e08 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Mon, 18 Nov 2019 17:15:13 +0100
Subject: [PATCH] at effshift strategy: estimate current fuel consumption at
 the same point in time in the future as for the next gear (e.g., 0.8s, after
 a potential gearshift)

---
 .../SimulationComponent/Impl/ATShiftStrategyOptimized.cs | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategyOptimized.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategyOptimized.cs
index 826039a07d..178c85127f 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategyOptimized.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategyOptimized.cs
@@ -233,6 +233,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			var vDrop = DataBus.DriverAcceleration * shiftStrategyParameters.ATLookAheadTime;
 			var vehicleSpeedPostShift = (DataBus.VehicleSpeed + vDrop * shiftStrategyParameters.VelocityDropFactor).LimitTo(0.KMPHtoMeterPerSecond(), DataBus.CycleData.LeftSample.VehicleTargetSpeed);
 
+			var outAngularVelocityEst = (outAngularVelocity * vehicleSpeedPostShift / (DataBus.VehicleSpeed + DataBus.DriverAcceleration * dt)).Cast<PerSecond>();
+			var outTorqueEst = outTorque * outAngularVelocity / outAngularVelocityEst;
+
 			for (var i = 1; i <=  shiftStrategyParameters.AllowedGearRangeFC; i++) {
 
 				if (currentIdx + i >= GearList.Count) {
@@ -259,9 +262,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 				var pNextGearMax = DataBus.EngineStationaryFullPower(estimatedEngineSpeed);
 				
-				var outAngularVelocityEst = (outAngularVelocity* vehicleSpeedPostShift / (DataBus.VehicleSpeed + DataBus.DriverAcceleration * dt)).Cast<PerSecond>() ;
-				var outTorqueEst = outTorque * outAngularVelocity / outAngularVelocityEst;
-
 				var response = RequestDryRunWithGear(absTime, dt, outTorqueEst, outAngularVelocityEst, next);
 				//var response = RequestDryRunWithGear(absTime, dt, vehicleSpeedPostShift, DataBus.DriverAcceleration, next);
 
@@ -306,7 +306,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				if (fcCurrent == null) {
 					//var responseCurrent = RequestDryRunWithGear(
 					//	absTime, dt, vehicleSpeedForGearRating, DataBus.DriverAcceleration, current);
-					var responseCurrent = RequestDryRunWithGear(absTime, dt, outTorque, outAngularVelocity, current);
+					//var responseCurrent = RequestDryRunWithGear(absTime, dt, outTorque, outAngularVelocity, current);
+					var responseCurrent = RequestDryRunWithGear(absTime, dt, outTorqueEst, outAngularVelocityEst, current);
 					var tqCurrent = responseCurrent.EngineTorqueDemand.LimitTo(
 						fld[currentGear].DragLoadStationaryTorque(responseCurrent.EngineSpeed),
 						fld[currentGear].FullLoadStationaryTorque(responseCurrent.EngineSpeed));
-- 
GitLab