diff --git a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs index 46f50c6a3759f0d8e7bb938b786a9c65827fdc74..45d856b81210cb6222ec1c13410a5e4d555c2e54 100644 --- a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs +++ b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs @@ -1,4 +1,5 @@ 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(); } } diff --git a/VectoCoreTest/TestData/EngineFullLoadJumps.csv b/VectoCoreTest/TestData/EngineFullLoadJumps.csv index 35ce389570e8c7745526c6b3c5a90059298de562..89e5222336a837730249f4d3b99588234e1a5234 100644 --- a/VectoCoreTest/TestData/EngineFullLoadJumps.csv +++ b/VectoCoreTest/TestData/EngineFullLoadJumps.csv @@ -1,5 +1,5 @@ -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 diff --git a/VectoCoreTest/TestData/Results/EngineFullLoadJumps/EngineFLJ_1000rpm_2Hz.csv b/VectoCoreTest/TestData/Results/EngineFullLoadJumps/EngineFLJ_1000rpm_2Hz.csv index 59fc231f620847c9ddbe9350cac1e9a011b51efa..215a2a23005c9e4f11c5428d930f27bc98b8e32c 100644 --- a/VectoCoreTest/TestData/Results/EngineFullLoadJumps/EngineFLJ_1000rpm_2Hz.csv +++ b/VectoCoreTest/TestData/Results/EngineFullLoadJumps/EngineFLJ_1000rpm_2Hz.csv @@ -1,37 +1,37 @@ 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 diff --git a/VectoCoreTest/VectoCoreTest.csproj b/VectoCoreTest/VectoCoreTest.csproj index 02acf498682ab5e5a687a2571cc82e4da5c95774..8588e76ee1256a1668221c37d3c7300608bee707 100644 --- a/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCoreTest/VectoCoreTest.csproj @@ -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>