From 615a461ddc778bf1d9cd25a36ad527d998b76303 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Fri, 17 Nov 2017 13:53:47 +0100
Subject: [PATCH] add condition in measured speed cycle: if the remaining
 interval to the next sampling point is too low, reduce the current simulation
 interval and thus prolong the next one

---
 .../Impl/MeasuredSpeedDrivingCycle.cs               | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/MeasuredSpeedDrivingCycle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/MeasuredSpeedDrivingCycle.cs
index 424e42675a..cf4ae6f835 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/MeasuredSpeedDrivingCycle.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/MeasuredSpeedDrivingCycle.cs
@@ -38,6 +38,7 @@ using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.Models.Connector.Ports;
 using TUGraz.VectoCore.Models.Connector.Ports.Impl;
+using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.Simulation.DataBus;
@@ -134,6 +135,18 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 					DeltaT = CycleIterator.RightSample.Time - absTime
 				};
 			}
+			if (Constants.SimulationSettings.MeasuredSpeedTargetTimeInterval.IsEqual(dt)) {
+				if ((CycleIterator.RightSample.Time - (absTime + dt)) > 0 && (CycleIterator.RightSample.Time - (absTime + dt)) /
+					Constants.SimulationSettings.MeasuredSpeedTargetTimeInterval < 0.5) {
+					// the remaining simulation interval would be below 0.5 seconds (i.e., half of MeasuredSpeedTargetTimeInterval)
+					// reduce the current simulation interval to extend the remaining interval
+					return new ResponseFailTimeInterval {
+						AbsTime = absTime,
+						Source = this,
+						DeltaT = (CycleIterator.RightSample.Time - absTime)/2
+					};
+				}
+			}
 
 			// calc acceleration from speed diff vehicle to cycle
 			var targetSpeed = CycleIterator.RightSample.VehicleTargetSpeed;
-- 
GitLab