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

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

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

Merge pull request #765 in VECTO/vecto-sim from ~EMQUARIMA/vecto-sim:bugfix/VECTO-1003-vecto-error-loss-map-extrapolation-in-declaration-mode-required to develop

* commit 'f9212b87':
  add tolerance for equality comparison of extrapolated values
  adapt testcases regarding extrapolation
  insert intermediate points into extended loss-map
  increase extrapolation range.
parents 88fcde35 f9212b87
No related branches found
No related tags found
No related merge requests found
......@@ -129,14 +129,16 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
VectoMath.LeastSquaresFitting(speedBucket.Value, x => x.InputTorque.Value(), x => x.TorqueLoss.Value(), out k, out d,
out r);
var inTq = DeclarationData.LossMapExtrapolationFactor * maxTorque;
if (k > 0) {
entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, inTq, k * inTq + d.SI<NewtonMeter>()));
entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, -inTq, k * inTq + d.SI<NewtonMeter>()));
} else {
var torqueLossLastEntry = speedBucket.Value.OrderBy(x => x.InputSpeed).Last().TorqueLoss;
entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, inTq, torqueLossLastEntry));
entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, -inTq, torqueLossLastEntry));
for (var i = 2; i <= DeclarationData.LossMapExtrapolationFactor; i++) {
var inTq = i * maxTorque;
if (k > 0) {
entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, inTq, k * inTq + d.SI<NewtonMeter>()));
entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, -inTq, k * inTq + d.SI<NewtonMeter>()));
} else {
var torqueLossLastEntry = speedBucket.Value.OrderBy(x => x.InputSpeed).Last().TorqueLoss;
entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, inTq, torqueLossLastEntry));
entries.Add(new TransmissionLossMap.GearLossMapEntry(speedBucket.Key, -inTq, torqueLossLastEntry));
}
}
}
......
......@@ -77,7 +77,7 @@ namespace TUGraz.VectoCore.Models.Declaration
public static readonly StandardBodies StandardBodies = new StandardBodies();
public static readonly Payloads Payloads = new Payloads();
public static readonly PTOTransmission PTOTransmission = new PTOTransmission();
public const double LossMapExtrapolationFactor = 3;
public const double LossMapExtrapolationFactor = 6;
public static readonly ADASCombinations ADASCombinations = new ADASCombinations();
public static readonly ADASBenefits ADASBenefits = new ADASBenefits();
......
......@@ -285,8 +285,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
};
}
[TestCase(GearboxDataFile, EngineDataFile, 6.38, 9600, 1600, 9756.1054377),
TestCase(GearboxDataFile, EngineDataFile, 6.38, -9600, 1000, -9445.40776858)]
[TestCase(GearboxDataFile, EngineDataFile, 6.38, 96000, 1600, 96499.10109),
TestCase(GearboxDataFile, EngineDataFile, 6.38, -96000, 1000, -95502.403188)]
public void Gearbox_LossMapExtrapolation_Declaration(string gbxFile, string engineFile, double ratio, double torque,
double inAngularSpeed, double expectedTorque)
{
......@@ -314,15 +314,15 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
Assert.AreEqual(absTime, port.AbsTime);
Assert.AreEqual(dt, port.Dt);
Assert.AreEqual(inAngularSpeed, port.AngularVelocity.Value() / Constants.RPMToRad, 1e-3);
AssertHelper.AreRelativeEqual(expectedTorque.SI<NewtonMeter>(), port.Torque);
AssertHelper.AreRelativeEqual(expectedTorque.SI<NewtonMeter>(), port.Torque, 1e-2);
var modData = new MockModalDataContainer();
Assert.IsTrue(gearbox.CurrentState.TorqueLossResult.Extrapolated);
AssertHelper.Exception<VectoException>(() => { gearbox.CommitSimulationStep(modData); });
}
[TestCase(GearboxDataFile, EngineDataFile, 6.38, 9600, 1600, 9756.1054377),
TestCase(GearboxDataFile, EngineDataFile, 6.38, -9600, 1000, -9445.40776858)]
[TestCase(GearboxDataFile, EngineDataFile, 6.38, 96000, 1600, 96499.10109),
TestCase(GearboxDataFile, EngineDataFile, 6.38, -96000, 1000, -95502.403188)]
public void Gearbox_LossMapExtrapolation_Engineering(string gbxFile, string engineFile, double ratio, double torque,
double inAngularSpeed, double expectedTorque)
{
......@@ -350,14 +350,14 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
Assert.AreEqual(absTime, port.AbsTime);
Assert.AreEqual(dt, port.Dt);
Assert.AreEqual(n, port.AngularVelocity);
AssertHelper.AreRelativeEqual(expectedTorque.SI<NewtonMeter>(), port.Torque);
AssertHelper.AreRelativeEqual(expectedTorque.SI<NewtonMeter>(), port.Torque, 1e-2);
var modData = new MockModalDataContainer();
Assert.IsTrue(gearbox.CurrentState.TorqueLossResult.Extrapolated);
gearbox.CommitSimulationStep(modData);
}
[TestCase(GearboxDataFile, EngineDataFile, 6.38, 9600, 1600, true, 9756.10543),
[TestCase(GearboxDataFile, EngineDataFile, 6.38, 96000, 1600, true, 96499.10109),
TestCase(GearboxDataFile, EngineDataFile, 6.38, -2500, 1000, false, -2443.5392),
TestCase(GearboxDataFile, EngineDataFile, 6.38, -3000, 1000, false, -2933.73529)]
public void Gearbox_LossMapExtrapolation_DryRun(string gbxFile, string engineFile, double ratio, double torque,
......@@ -387,7 +387,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
Assert.AreEqual(dt, port.Dt);
Assert.AreEqual(n, port.AngularVelocity);
Assert.AreEqual(extrapolated, gearbox.CurrentState.TorqueLossResult.Extrapolated);
AssertHelper.AreRelativeEqual(expectedTorque.SI<NewtonMeter>(), port.Torque);
AssertHelper.AreRelativeEqual(expectedTorque.SI<NewtonMeter>(), port.Torque, 1e-2);
var modData = new MockModalDataContainer();
gearbox.CommitSimulationStep(modData);
......
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