Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

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

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

Merge pull request #766 in VECTO/vecto-sim from ~EMQUARIMA/vecto-sim:bugfix/VECTO-1003-vecto-error-loss-map-extrapolation-in-declaration-mode-required_2 to ReleaseCandidates/v3.3.3.1609

* commit '4077583c':
  add tolerance for equality comparison of extrapolated values
  adapt testcases regarding extrapolation
  insert intermediate points into extended loss-map
  increase extrapolation range.
parents e1bbb5a1 4077583c
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