Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 684aabf4 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

Merge pull request #804 in VECTO/vecto-sim from...

Merge pull request #804 in VECTO/vecto-sim from ~EMQUARIMA/vecto-sim:bugfix/VECTO-1211-simulation-abort-urban-delivery-ref-load to develop

* commit '5a3ef313':
  adapt testcase: slightly lower fuel consumption due to changes in limiting acceleration while coasting
  driver model: in case the limitation mode is set to none for an operating point, don't limit the acceleration as well (might be higher than driver acc in case of traction interruption)
parents 367dbd76 5a3ef313
No related branches found
No related tags found
No related merge requests found
......@@ -45,5 +45,14 @@ namespace TUGraz.VectoCommon.Models
{
return string.Format("a: {0}, dt: {1}, ds: {2}", Acceleration, SimulationInterval, SimulationDistance);
}
public OperatingPoint Clone()
{
return new OperatingPoint() {
Acceleration = Acceleration,
SimulationDistance = SimulationDistance,
SimulationInterval = SimulationInterval
};
}
}
}
\ No newline at end of file
......@@ -699,31 +699,32 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
private OperatingPoint LimitAccelerationByDriverModel(OperatingPoint operatingPoint,
LimitationMode limits)
{
var retVal = operatingPoint.Clone();
var limitApplied = false;
var originalAcceleration = operatingPoint.Acceleration;
//if (((limits & LimitationMode.LimitDecelerationLookahead) != 0) &&
// operatingPoint.Acceleration < DriverData.LookAheadCoasting.Deceleration) {
// operatingPoint.Acceleration = DriverData.LookAheadCoasting.Deceleration;
// limitApplied = true;
//}
var accelerationLimits = DriverData.AccelerationCurve.Lookup(DataBus.VehicleSpeed);
if (operatingPoint.Acceleration > accelerationLimits.Acceleration) {
operatingPoint.Acceleration = accelerationLimits.Acceleration;
if (limits != LimitationMode.NoLimitation && operatingPoint.Acceleration > accelerationLimits.Acceleration) {
retVal.Acceleration = accelerationLimits.Acceleration;
limitApplied = true;
}
if (((limits & LimitationMode.LimitDecelerationDriver) != 0) &&
operatingPoint.Acceleration < accelerationLimits.Deceleration) {
operatingPoint.Acceleration = accelerationLimits.Deceleration;
retVal.Acceleration = accelerationLimits.Deceleration;
limitApplied = true;
}
if (limitApplied) {
operatingPoint.SimulationInterval =
ComputeTimeInterval(operatingPoint.Acceleration, operatingPoint.SimulationDistance)
retVal.SimulationInterval =
ComputeTimeInterval(retVal.Acceleration, retVal.SimulationDistance)
.SimulationInterval;
Log.Debug("Limiting acceleration from {0} to {1}, dt: {2}", originalAcceleration,
operatingPoint.Acceleration, operatingPoint.SimulationInterval);
Log.Debug("Limiting acceleration from {0} to {1}, dt: {2}", operatingPoint.Acceleration,
retVal.Acceleration, retVal.SimulationInterval);
}
return operatingPoint;
return retVal;
}
/// <summary>
......
......@@ -268,7 +268,7 @@ namespace TUGraz.VectoCore.Tests.Integration
Assert.AreEqual(170.18354, view.Rows[2][SummaryDataContainer.FCMAP_KM].ToString().ToDouble(), 1e-3);
Assert.AreEqual(183.06159, view.Rows[3][SummaryDataContainer.FCMAP_KM].ToString().ToDouble(), 1e-3);
Assert.AreEqual(224.78226, view.Rows[4][SummaryDataContainer.FCMAP_KM].ToString().ToDouble(), 1e-3);
Assert.AreEqual(255.02202, view.Rows[5][SummaryDataContainer.FCMAP_KM].ToString().ToDouble(), 1e-3);
Assert.AreEqual(255.02087, view.Rows[5][SummaryDataContainer.FCMAP_KM].ToString().ToDouble(), 1e-3);
}
[TestCase(EngineSpeedLimitJobATDecl)]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment