diff --git a/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs b/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs index a5dc4a8e78e6d3a1c81f6a91e28a4791204758cd..d9b8a81a59cd1dd079ca58cc561b77ad8b1deaaa 100644 --- a/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs +++ b/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs @@ -2,6 +2,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using TUGraz.VectoCore.Exceptions; using TUGraz.VectoCore.FileIO.Reader.Impl; +using TUGraz.VectoCore.Models.Connector.Ports.Impl; using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.Models.SimulationComponent; using TUGraz.VectoCore.Models.SimulationComponent.Impl; @@ -61,6 +62,34 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent [TestMethod] public void Gearbox_IntersectFullLoadCurves() { + var container = new VehicleContainer(); + var gearboxData = DeclarationModeSimulationDataReader.CreateGearboxDataFromFile(GearboxDataFile, EngineDataFile); + var gearbox = new Gearbox(container, gearboxData); + + var port = new MockTnOutPort(); + gearbox.InPort().Connect(port); + + var ratios = new[] { 0.0, 6.38, 4.63, 3.44, 2.59, 1.86, 1.35, 1, 0.76 }; + // the first element 0.0 is just a placeholder for axlegear, not used in this test + + //todo: serach for a overload point in gearbox fullloadcurve + //todo: serach for a overload point in engine fullloadcurve + var expected = new[] { + new { gear = 1, t = 2400, n = 1200, loss = 10.108 }, + new { gear = 1, t = 2400, n = 1200, loss = 10.108 }, + }; + + foreach (var exp in expected) { + var torque = (exp.t.SI<NewtonMeter>() - exp.loss.SI<NewtonMeter>()) * ratios[exp.gear]; + var angularVelocity = exp.n.RPMtoRad() / ratios[exp.gear]; + + gearbox.Gear = (uint)exp.gear; + var response = gearbox.OutPort().Request(0.SI<Second>(), 1.SI<Second>(), torque, angularVelocity); + Assert.IsInstanceOfType(response, typeof(ResponseFailOverload)); + + //var overload = response as ResponseFailOverload; + } + Assert.Inconclusive("Test if the intersection of two fullloadcurves is correct"); } @@ -77,9 +106,6 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var ratios = new[] { 0.0, 6.38, 4.63, 3.44, 2.59, 1.86, 1.35, 1, 0.76 }; // the first element 0.0 is just a placeholder for axlegear, not used in this test - var absTime = 0.SI<Second>(); - var dt = 1.SI<Second>(); - var expected = new[] { new { gear = 1, t = 50, n = 800, loss = 10.108 }, new { gear = 1, t = 2450, n = 800, loss = 58.11 }, @@ -115,9 +141,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var angularVelocity = expectedN / ratios[exp.gear]; gearbox.Gear = (uint)exp.gear; - gearbox.OutPort().Request(absTime, dt, torque, angularVelocity); - AssertHelper.AreRelativeEqual(absTime, port.AbsTime); - AssertHelper.AreRelativeEqual(dt, port.Dt); + gearbox.OutPort().Request(0.SI<Second>(), 1.SI<Second>(), torque, angularVelocity); + AssertHelper.AreRelativeEqual(0.SI<Second>(), port.AbsTime); + AssertHelper.AreRelativeEqual(1.SI<Second>(), port.Dt); AssertHelper.AreRelativeEqual(expectedN, port.AngularVelocity); AssertHelper.AreRelativeEqual(expectedT, port.Torque); } diff --git a/VectoCoreTest/Models/SimulationComponentData/GearboxDataTest.cs b/VectoCoreTest/Models/SimulationComponentData/GearboxDataTest.cs index 05e0728e42d56b0e730381b3b5b32c3f0ba62b91..d0e347d16a222e257dc895db2cfb054dc6974f4c 100644 --- a/VectoCoreTest/Models/SimulationComponentData/GearboxDataTest.cs +++ b/VectoCoreTest/Models/SimulationComponentData/GearboxDataTest.cs @@ -1,7 +1,6 @@ using System; using System.Globalization; using Microsoft.VisualStudio.TestTools.UnitTesting; -using TUGraz.VectoCore.Exceptions; using TUGraz.VectoCore.FileIO.Reader.Impl; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Utils; diff --git a/VectoCoreTest/TestData/Components/24t Coach Engine.vfld b/VectoCoreTest/TestData/Components/24t Coach Engine.vfld new file mode 100644 index 0000000000000000000000000000000000000000..8a54ff5496ec94eb5ab4ba64a8c848477068d316 --- /dev/null +++ b/VectoCoreTest/TestData/Components/24t Coach Engine.vfld @@ -0,0 +1,11 @@ +n [U/min] ,Mfull [Nm],Mdrag [Nm],<PT1> [s] +560 ,680 ,-149 ,0.6 +600 ,882 ,-148 ,0.6 +800 ,1491 ,-149 ,0.6 +1000 ,2100 ,-160 ,0.6 +1200 ,2200 ,-179 ,0.6 +1400 ,2300 ,-203 ,0.6 +1600 ,2179 ,-235 ,0.49 +1800 ,2057 ,-264 ,0.25 +2000 ,1652 ,-301 ,0.25 +2100 ,1500 ,-320 ,0.25 \ No newline at end of file