From 580fab80350bd2d5499abcf84710a4893c092a84 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Mon, 26 Mar 2018 14:50:06 +0200 Subject: [PATCH] adding testcase for influence of engine correction factors --- .../Declaration/EngineInputDataTests.cs | 69 +++++++++++++++++++ .../CombustionEngineTest.cs | 20 +++--- VectoCore/VectoCoreTest/VectoCoreTest.csproj | 1 + 3 files changed, 82 insertions(+), 8 deletions(-) create mode 100644 VectoCore/VectoCoreTest/Integration/Declaration/EngineInputDataTests.cs diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/EngineInputDataTests.cs b/VectoCore/VectoCoreTest/Integration/Declaration/EngineInputDataTests.cs new file mode 100644 index 0000000000..f20843f544 --- /dev/null +++ b/VectoCore/VectoCoreTest/Integration/Declaration/EngineInputDataTests.cs @@ -0,0 +1,69 @@ +using System.Data; +using System.IO; +using System.Linq; +using System.Xml; +using NUnit.Framework; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Configuration; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; +using TUGraz.VectoCore.InputData.Reader.ComponentData; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.OutputData; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.Tests.Integration.Declaration +{ + [TestFixture] + public class EngineInputDataTests + { + const string SampleVehicleDecl = "TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample.xml"; + + [OneTimeSetUp] + public void RunBeforeAnyTests() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + } + + [TestCase(null, 1.0, 45.5323), + TestCase("CFRegPer", 1.2, 45.5323 * 1.2), + TestCase("BFColdHot", 1.2, 45.5323 * 1.2), + TestCase("CFNCV", 1.2, 45.5323) // has no influence - only for documentation purpose + ] + public void TestEngineCorrectionFactors(string correctionFactor, double value, double expectedFc) + { + var reader = XmlReader.Create(SampleVehicleDecl); + var modified = reader; + if (correctionFactor != null) { + var doc = new XmlDocument(); + doc.Load(reader); + var nav = doc.CreateNavigator(); + var manager = new XmlNamespaceManager(nav.NameTable); + var helper = new XPathHelper(ExecutionMode.Declaration); + helper.AddNamespaces(manager); + + var firstAxle = nav.SelectSingleNode("//"+ + helper.Query( + //helper.NSPrefix(XMLNames.VectoInputDeclaration, Constants.XML.RootNSPrefix), + correctionFactor + ), manager); + firstAxle.InnerXml = value.ToXMLFormat(4); + + modified = XmlReader.Create(new StringReader(nav.OuterXml)); + + } + var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); + + var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null, validate: false); + var first = factory.SimulationRuns().First(); + + var modData = ((ModalDataContainer)first.GetContainer().ModalData).Data; + first.Run(); + + Assert.AreEqual(expectedFc, modData.AsEnumerable().Sum(r => r.Field<SI>((int)ModalResultField.FCFinal).Value()), 1e-3); + + } + } +} diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs index 1c6eeba330..89287f4c23 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs @@ -45,6 +45,9 @@ using TUGraz.VectoCore.Models.SimulationComponent.Impl; using TUGraz.VectoCore.Tests.Utils; using TUGraz.VectoCore.Utils; using System.IO; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCore.InputData.FileIO.JSON; +using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; // ReSharper disable UnusedVariable // ReSharper disable NotAccessedVariable @@ -63,13 +66,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent private const string TruckEngine = @"TestData\Components\40t_Long_Haul_Truck.veng"; - [OneTimeSetUp] - public void RunBeforeAnyTests() - { - Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); - } + [OneTimeSetUp] + public void RunBeforeAnyTests() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + } - [TestCase] + [TestCase] public void TestEngineHasOutPort() { var vehicle = new VehicleContainer(ExecutionMode.Engineering); @@ -525,17 +528,18 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var displace = engineData.Displacement; Assert.AreEqual(0.01273, displace.Value()); - Assert.IsTrue(displace.HasEqualUnit(new SI(Unit.SI.Cubic.Meter))); + Assert.IsTrue(displace.HasEqualUnit(new SI(Unit.SI.Cubic.Meter))); var inert = engineData.Inertia; Assert.AreEqual(3.8, inert.Value(), 0.00001); - Assert.IsTrue(inert.HasEqualUnit(new SI(Unit.SI.Kilo.Gramm.Square.Meter))); + Assert.IsTrue(inert.HasEqualUnit(new SI(Unit.SI.Kilo.Gramm.Square.Meter))); var idle = engineData.IdleSpeed; Assert.AreEqual(58.6430628670095, idle.Value(), 0.000001); Assert.IsTrue(idle.HasEqualUnit(0.SI<PerSecond>())); } + private static void VehicleContainer(string engineFile, out VehicleContainer container, out CombustionEngine engine, out ITnOutPort requestPort, out MockGearbox gearbox) { diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index c78002d36d..ff713a6788 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -83,6 +83,7 @@ <Compile Include="Integration\BusAuxiliaries\AAuxTests.cs" /> <Compile Include="Integration\CoachAdvancedAuxPowertrain.cs" /> <Compile Include="Integration\CoachPowerTrain.cs" /> + <Compile Include="Integration\Declaration\EngineInputDataTests.cs" /> <Compile Include="Integration\DriverStrategy\SimpleCycles.cs" /> <Compile Include="Integration\VTP\VTPTest.cs" /> <Compile Include="Integration\FuelTypesTest.cs" /> -- GitLab