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

Skip to content
Snippets Groups Projects
Commit a5f825e0 authored by Michael KRISPER's avatar Michael KRISPER
Browse files

direct and constant aux tests running, corrected error in torque calculation

parent 7a6d47e3
No related branches found
No related tags found
No related merge requests found
......@@ -61,7 +61,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
_powerDemands[kv.Key] = demand;
}
return _outPort.Request(absTime, dt, torque + powerDemand * engineSpeed, engineSpeed);
return _outPort.Request(absTime, dt, torque + powerDemand / engineSpeed, engineSpeed);
}
#endregion
......
......@@ -172,7 +172,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
var angularSpeed = r.Next(1000).SI<PerSecond>();
var torque = tc.LookupTorque(exp.nu, angularSpeed, referenceSpeed);
AssertHelper.AreEqual(exp.torque * Math.Pow(angularSpeed.Value() / referenceSpeed.Value(), 2), torque.Value());
AssertHelper.AreRelativeEqual(exp.torque * Math.Pow(angularSpeed.Value() / referenceSpeed.Value(), 2), torque.Value());
}
}
......
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.Simulation.Impl;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Impl;
using TUGraz.VectoCore.Tests.Utils;
using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.Tests.Models.Simulation
{
......@@ -22,8 +26,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
jobContainer.AddRuns(runsFactory);
jobContainer.Execute();
ResultFileHelper.TestSumFile(@"TestData\Results\EngineOnlyCycles\24t Coach.vsum",
@"TestData\Jobs\24t Coach.vsum");
ResultFileHelper.TestSumFile(@"TestData\Results\EngineOnlyCycles\24t Coach.vsum", @"TestData\Jobs\24t Coach.vsum");
ResultFileHelper.TestModFiles(new[] {
@"TestData\Results\EngineOnlyCycles\24t Coach_Engine Only1.vmod",
@"TestData\Results\EngineOnlyCycles\24t Coach_Engine Only2.vmod",
......@@ -34,8 +37,97 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
[TestMethod]
public void Test_AuxFileInterpolate()
public void Test_AuxConstant()
{
var dataWriter = new TestModalDataWriter();
var sumWriter = new TestSumWriter();
var container = new VehicleContainer(dataWriter, sumWriter);
var port = new MockTnOutPort();
var aux = new Auxiliary(container);
aux.InPort().Connect(port);
var constPower = 1200.SI<Watt>();
aux.AddConstant("CONSTANT", constPower);
var speed = 1400.RPMtoRad();
var torque = 500.SI<NewtonMeter>();
var t = new TimeSpan();
aux.OutPort().Request(t, t, torque, speed);
Assert.AreEqual(speed, port.AngularVelocity);
var newTorque = torque + constPower / speed;
// 8.18511... = 1200/(1400*2*math.pi/60)
AssertHelper.AreRelativeEqual(port.Torque - newTorque, 8.1851113590118.SI<NewtonMeter>());
speed = 1400.RPMtoRad();
torque = 1500.SI<NewtonMeter>();
aux.OutPort().Request(t, t, torque, speed);
Assert.AreEqual(speed, port.AngularVelocity);
newTorque = torque + constPower / speed;
// 8.18511... = 1200/(1400*2*math.pi/60)
AssertHelper.AreRelativeEqual(port.Torque - newTorque, 8.1851113590118.SI<NewtonMeter>());
speed = 900.RPMtoRad();
torque = 1500.SI<NewtonMeter>();
aux.OutPort().Request(t, t, torque, speed);
Assert.AreEqual(speed, port.AngularVelocity);
newTorque = torque + constPower / speed;
// 12.73239... = 1200/(900*2*math.pi/60)
AssertHelper.AreRelativeEqual(port.Torque - newTorque, 12.732395447351628.SI<NewtonMeter>());
}
[TestMethod]
public void Test_AuxDirect()
{
var dataWriter = new TestModalDataWriter();
var sumWriter = new TestSumWriter();
var container = new VehicleContainer(dataWriter, sumWriter);
var data = DrivingCycleData.ReadFromFile(@"TestData\Cycles\Coach time based short.vdri",
DrivingCycleData.CycleType.TimeBased);
var cycle = new MockDrivingCycle(data);
var port = new MockTnOutPort();
var aux = new Auxiliary(container);
aux.InPort().Connect(port);
aux.AddDirect(cycle);
var speed = 1400.RPMtoRad();
var torque = 500.SI<NewtonMeter>();
var t = new TimeSpan();
var expected = new[] { 6100, 3100, 2300, 4500, 6100 };
foreach (var e in expected) {
aux.OutPort().Request(t, t, torque, speed);
Assert.AreEqual(speed, port.AngularVelocity);
var newTorque = torque + e.SI<Watt>() / speed;
AssertHelper.AreRelativeEqual(port.Torque, newTorque);
}
}
[TestMethod]
public void Test_AuxMapping()
{
var dataWriter = new TestModalDataWriter();
var sumWriter = new TestSumWriter();
var container = new VehicleContainer(dataWriter, sumWriter);
var data = DrivingCycleData.ReadFromFile(@"TestData\Cycles\Coach time based short.vdri",
DrivingCycleData.CycleType.TimeBased);
var cycle = new MockDrivingCycle(data);
var port = new MockTnOutPort();
var aux = new Auxiliary(container);
aux.InPort().Connect(port);
var auxData = MappingAuxiliaryData.ReadFromFile(@"TestData\Components\24t_Coach_ALT.vaux");
aux.AddMapping("ALT1", cycle, auxData);
var speed = 1400.RPMtoRad();
var torque = 500.SI<NewtonMeter>();
var t = new TimeSpan();
aux.OutPort().Request(t, t, torque, speed);
Assert.AreEqual(speed, port.AngularVelocity);
Assert.IsTrue(port.Torque > torque);
Assert.Inconclusive();
}
......
<t> , <v> , <grad> , <n> , <Padd> , <Aux_ALT1> , <Aux_ALT2> , <Aux_ALT3>
0 , 0 , -0.020237973 , 2 , 6.1 , 0.25 , 0.25 , 0.25
1 , 64 , -0.020237973 , 0 , 3.1 , 0.25 , 0.25 , 0.25
2 , 64 , -0.020237973 , 0 , 2.3 , 0.25 , 0.25 , 0.25
3 , 64 , -0.020237973 , 0 , 4.5 , 0.25 , 0.25 , 0.25
4 , 64 , -0.020237973 , 0 , 6.1 , 0.25 , 0.25 , 0.25
5 , 64 , -0.020237973 , 0 , 6.1 , 0.25 , 0.25 , 0.25
6 , 64 , -0.020237973 , 0 , 6.1 , 0.25 , 0.25 , 0.25
......@@ -22,17 +22,24 @@ namespace TUGraz.VectoCore.Tests.Utils
}
}
public static void AreEqual(double expected, double actual,
public static void AreRelativeEqual(SI expected, SI actual)
{
Assert.IsTrue(actual.HasEqualUnit(expected),
string.Format("Wrong SI Units: expected: {0}, actual: {1}", expected.ToBasicUnits(), actual.ToBasicUnits()));
AreRelativeEqual(expected.Value(), actual.Value());
}
public static void AreRelativeEqual(double expected, double actual,
double toleranceFactor = DoubleExtensionMethods.Tolerance)
{
if (actual.IsEqual(0.0)) {
Assert.AreEqual(expected, 0.0, DoubleExtensionMethods.Tolerance,
string.Format("AssertHelper.AreEqual failed. Expected: {0}, Actual: {1}, Tolerance: {2}", expected, actual,
string.Format("AssertHelper.AreRelativeEqual failed. Expected: {0}, Actual: {1}, Tolerance: {2}", expected, actual,
toleranceFactor));
return;
}
Assert.IsTrue(Math.Abs(expected / actual) < 1 + toleranceFactor,
string.Format("AssertHelper.AreEqual failed. Expected: {0}, Actual: {1}, Tolerance: {2}", expected, actual,
string.Format("AssertHelper.AreRelativeEqual failed. Expected: {0}, Actual: {1}, Tolerance: {2}", expected, actual,
toleranceFactor));
}
}
......
......@@ -175,6 +175,9 @@
<None Include="TestData\Components\Retarder.vrlm">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Cycles\Coach time based short.vdri">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Cycles\Coach_24t_xshort.vdri">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
......
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