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