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

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

engine full load jump testcases with different timesteps work

parent 31ee6b22
No related branches found
No related tags found
No related merge requests found
using System;
using System.Globalization;
using System.IO;
using System.Reflection;
using Microsoft.VisualStudio.TestTools.UnitTesting;
......@@ -118,38 +119,45 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
[TestMethod]
//[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\TestData\\EngineLoadJumpTests.csv",
// "EngineLoadJumpTests#csv", DataAccessMethod.Sequential)]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\TestData\\EngineFullLoadJumps.csv",
"EngineFullLoadJumps#csv", DataAccessMethod.Sequential)]
public void TestEngineFullLoadJump()
{
var vehicleContainer = new VehicleContainer();
var gearbox = new EngineOnlyGearbox(vehicleContainer);
var engineData = CombustionEngineData.ReadFromFile(CoachEngine);
var engineData = CombustionEngineData.ReadFromFile(TestContext.DataRow["EngineFile"].ToString());
var engine = new CombustionEngine(vehicleContainer, engineData);
gearbox.InShaft().Connect(engine.OutShaft());
var expectedResults = VectoCSVFile.Read(TestContext.DataRow["ResultFile"].ToString());
var requestPort = gearbox.OutShaft();
var modalData = new TestModalDataWriter();
var idlePower = 50.SI<Watt>();
var angularSpeed = 1000.RPMtoRad();
var idlePower = Double.Parse(TestContext.DataRow["initialIdleLoad"].ToString()).SI<Watt>();
var t = TimeSpan.FromSeconds(0);
var dt = TimeSpan.FromSeconds(0.5);
for (; t.TotalSeconds < 10; t += dt) {
var angularSpeed = Double.Parse(TestContext.DataRow["rpm"].ToString()).RPMtoRad();
var t = TimeSpan.FromSeconds(-10);
var dt = TimeSpan.FromSeconds(1);
for (; t.TotalSeconds < 0; t += dt) {
requestPort.Request(t, dt, Formulas.PowerToTorque(idlePower, angularSpeed), angularSpeed);
}
dt = TimeSpan.FromSeconds(double.Parse(TestContext.DataRow["dt"].ToString(), CultureInfo.InvariantCulture));
var fullLoadPower = Formulas.TorqueToPower(2300.SI<NewtonMeter>(), angularSpeed);
for (; t.TotalSeconds < 20; t += dt) {
var i = 0;
for (; t.TotalSeconds < 10; t += dt, i++) {
requestPort.Request(t, dt, Formulas.PowerToTorque(fullLoadPower, angularSpeed), angularSpeed);
modalData[ModalResultField.time] = t.TotalSeconds;
modalData[ModalResultField.simulationInterval] = dt.TotalSeconds;
engine.CommitSimulationStep(modalData);
// todo: compare results...
Assert.AreEqual(expectedResults.Rows[i].ParseDouble(0), t.TotalSeconds, 0.001, "Time");
Assert.AreEqual(expectedResults.Rows[i].ParseDouble(1), modalData.GetDouble(ModalResultField.Pe_full), 0.1,
String.Format("Load in timestep {0}", t));
modalData.CommitSimulationStep();
}
}
......
TestName,EngineFile,rpm,initialIdleLoad,finalIdleLoad,ResultFile
Test1Hz,TestData\Components\14t Coach.veng,1000,50,70,TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_1Hz.csv
Test2Hz,TestData\Components\14t Coach.veng,1000,50,70,TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_2Hz.csv
Test5Hz,TestData\Components\14t Coach.veng,1000,50,70,TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_5Hz.csv
Test10Hz,TestData\Components\14t Coach.veng,1000,50,70,TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_10Hz.csv
\ No newline at end of file
TestName,dt,EngineFile,rpm,initialIdleLoad,finalIdleLoad,ResultFile
Test1Hz,"1",TestData\Components\24t Coach.veng,1000,50,70,TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_1Hz.csv
Test2Hz,"0.5",TestData\Components\24t Coach.veng,1000,50,70,TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_2Hz.csv
Test5Hz,"0.2",TestData\Components\24t Coach.veng,1000,50,70,TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_5Hz.csv
Test10Hz,"0.1",TestData\Components\24t Coach.veng,1000,50,70,TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_10Hz.csv
\ No newline at end of file
t,Pe_FullDyn
0.00,50.00
0.50,109507.02
1.00,169210.84
1.50,201776.57
2.00,219539.69
2.50,229228.67
3.00,234513.56
3.50,237396.23
4.00,238968.60
4.50,239826.25
5.00,240294.06
5.50,240549.23
6.00,240688.42
6.50,240764.33
7.00,240805.74
7.50,240828.33
8.00,240840.65
8.50,240847.37
9.00,240851.04
9.50,240853.04
10.00,240854.13
11.00,90364.05
12.00,33930.27
13.00,12767.60
14.00,4831.60
15.00,1855.60
16.00,739.60
17.00,321.10
18.00,164.16
19.00,105.31
20.00,83.24
21.00,74.97
22.00,71.86
23.00,70.70
24.00,70.26
25.00,70.10
0,109479.743989
0.5,169195.967983
1,201768.453797
1.5,219535.264242
2,229226.251757
2.5,234512.244947
3,237395.51396
3.5,238968.206149
4,239826.038252
4.5,240293.946671
5,240549.169446
5.5,240688.381868
6,240764.315917
6.5,240805.734489
7,240828.326437
7.5,240840.649318
8,240847.37089
8.5,240851.037201
9,240853.037008
9.5,240854.127811
10,240854.722795
11,90364.271048
12,33930.351643
13,12767.631866
14,4831.61195
15,1855.604481
16,739.60168
17,321.10063
18,164.162736
19,105.311026
20,83.241635
21,74.965613
22,71.862105
23,70.698289
24,70.261859
25,70.098197
......@@ -148,6 +148,21 @@
<None Include="TestData\Cycles\Coach Engine Only.vdri">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\EngineFullLoadJumps.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_10Hz.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_1Hz.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_2Hz.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_5Hz.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Results\EngineOnlyCycles\24tCoach_EngineOnlyPaux.vmod">
<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