From 3df2353ab1ecbbfb7d9d3dec8ed0a0ed3ed4b09c Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Tue, 8 Sep 2015 16:24:14 +0200
Subject: [PATCH] bugfix: distance in vehicle and cycle diverged

---
 .../Impl/DistanceBasedDrivingCycle.cs                |  1 +
 VectoCore/Models/SimulationComponent/Impl/Gearbox.cs | 12 ++++++------
 VectoCore/Models/SimulationComponent/Impl/Vehicle.cs |  9 ++++++++-
 .../Integration/DriverStrategy/DriverStrategyTest.cs |  2 +-
 4 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs b/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
index 9743d5a03c..82a7e5350e 100644
--- a/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
@@ -186,6 +186,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		protected override void DoWriteModalResults(IModalDataWriter writer)
 		{
+			writer[ModalResultField.dist] = CurrentState.Distance;
 			writer[ModalResultField.v_targ] = CurrentState.VehicleTargetSpeed;
 			writer[ModalResultField.grad] = Math.Tan(CurrentState.Gradient.Value()) * 100;
 		}
diff --git a/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs b/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
index 972893a7ba..18075fd45c 100644
--- a/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
@@ -118,12 +118,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 			if (!outTorque.IsEqual(0, Constants.SimulationSettings.EngineFLDPowerTolerance)) {
 				if (outTorque > 0) {
-				return new ResponseOverload {
-					Delta = outTorque * outEngineSpeed,
-					Source = this,
-					GearboxPowerRequest = outTorque * outEngineSpeed
-				};
-			}
+					return new ResponseOverload {
+						Delta = outTorque * outEngineSpeed,
+						Source = this,
+						GearboxPowerRequest = outTorque * outEngineSpeed
+					};
+				}
 				return new ResponseUnderload {
 					Delta = outTorque * outEngineSpeed,
 					Source = this,
diff --git a/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs b/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs
index 0406972a97..efa3288110 100644
--- a/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using TUGraz.VectoCore.Exceptions;
 using TUGraz.VectoCore.Models.Connector.Ports;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation;
@@ -100,7 +101,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		protected override void DoWriteModalResults(IModalDataWriter writer)
 		{
 			writer[ModalResultField.v_act] = (_previousState.Velocity + _currentState.Velocity) / 2;
-			writer[ModalResultField.dist] = _currentState.Distance;
+
+			// sanity check: is the vehicle in step with the cycle?
+			var distance = (SI)writer[ModalResultField.dist];
+			if (!distance.IsEqual(_currentState.Distance.Value(), 1e-15)) {
+				Log.Warn("distance diverges: {0}, distance: {1}", (distance - _currentState.Distance).Value(), distance);
+			}
+			//writer[ModalResultField.dist] = _currentState.Distance;
 
 			// todo hint: take care to use correct velocity when writing the P... values in moddata
 		}
diff --git a/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTest.cs b/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTest.cs
index a51beb17cb..b5db640c96 100644
--- a/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTest.cs
+++ b/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTest.cs
@@ -50,7 +50,7 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		{
 			var cycle = CreateCycleData(new[] {
 				// <s>,<v>,<grad>,<stop>
-				"   0,  10, 0,     0",
+				"   0,  80, 0,     0",
 				"500,  0,  0,     0",
 			});
 
-- 
GitLab