diff --git a/VectoCore/VectoCoreTest/Integration/FuelTypesTest.cs b/VectoCore/VectoCoreTest/Integration/FuelTypesTest.cs index d0b1144f7a0bcd13c0bcaee83a08d1afeabb5796..be3602c0ce05debba34723caf25952cf30fdca25 100644 --- a/VectoCore/VectoCoreTest/Integration/FuelTypesTest.cs +++ b/VectoCore/VectoCoreTest/Integration/FuelTypesTest.cs @@ -29,9 +29,12 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System; using System.IO; using NUnit.Framework; +using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Impl; @@ -50,19 +53,46 @@ namespace TUGraz.VectoCore.Tests.Integration Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); } - [TestCase(FuelType.DieselCI, - @"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto", 0, 0.0006886, 9391.5411, + [TestCase(FuelType.DieselCI, null, + @"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto", 0, + 0.0002199424, 0.0002199424, 26.308901, 0.0006886, 9391.5411, TestName = "Diesel LH Low"), - TestCase(FuelType.EthanolCI, - @"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto", 0, 0.00040262, 5652.5200, - TestName = "Ethanol LH Low"), - TestCase(FuelType.DieselCI, - @"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto", 1, 0.0007971, 10876.9518, + TestCase(FuelType.EthanolCI, null, + @"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto", 0, + 0.0002199424, 0.0002199424, 26.822245, 0.00040262, 5652.5200, + TestName = "Ethanol/CI LH Low"), + + TestCase(FuelType.DieselCI, null, + @"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto", 1, + 0.0002547295, 0.0002547295, 30.4700418, 0.0007971, 10876.9518, TestName = "Diesel LH Ref"), - TestCase(FuelType.EthanolCI, - @"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto", 1, 0.0004660, 6546.5494, - TestName = "Ethanol LH Ref"),] - public void TestFuelTypesCO2(FuelType fuelType, string jobName, int runIdx, double expectedCo2, double expectedMJ) + TestCase(FuelType.EthanolCI, null, + @"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto", 1, + 0.0002547295, 0.0002547295, 31.0645792, 0.0004660, 6546.5494, + TestName = "Ethanol/CI LH Ref"), + TestCase(FuelType.EthanolPI, null, + @"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto", 1, + 0.0002547295, 0.0002547295, 32.408339, 0.00053238, 7412.62989, + TestName = "Ethanol/PI LH Ref"), + TestCase(FuelType.PetrolPI, null, + @"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto", 1, + 0.0002547295, 0.0002547295, 33.963939, 0.000774377, 10571.27631, + TestName = "Petrol/PI LH Ref"), + TestCase(FuelType.LPGPI, null, + @"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto", 1, + 0.0002547295, 0.0002547295, double.NaN, 0.00076928, 11717.55928, + TestName = "LPG/PI LH Ref"), + TestCase(FuelType.NGPI, TankSystem.Liquefied, + @"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto", 1, + 0.0002547295, 0.0002547295, double.NaN, 0.00070560, 11488.30269, + TestName = "LNG/PI LH Ref"), + TestCase(FuelType.NGPI, TankSystem.Compressed, + @"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto", 1, + 0.0002547295, 0.0002547295, double.NaN, 0.00064701, 11488.30269, + TestName = "CNG/PI LH Ref"), + ] + public void TestFuelTypesCO2(FuelType fuelType, TankSystem? tankSystem, string jobName, int runIdx, + double expectedFCMap, double expectedFCFinal, double expectedFCperkm, double expectedCo2, double expectedMJ) { // the same engine fc-map is used for different fuel types, thus the difference in expected results var fileWriter = new FileOutputWriter(jobName); @@ -82,13 +112,24 @@ namespace TUGraz.VectoCore.Tests.Integration var run = jobContainer.Runs[runIdx]; var modContainer = (ModalDataContainer)run.Run.GetContainer().ModalData; var modData = modContainer.Data; - modContainer.FuelData = FuelData.Instance().Lookup(fuelType); + modContainer.FuelData = FuelData.Instance().Lookup(fuelType, tankSystem); run.Run.Run(); // restore data table before assertions modContainer.Data = modData; + + Console.WriteLine("FC-Map g/m: {0}, FC-Final g/m {1}, FC-Final l/100km: {2}, CO2 g/m: {3}, Energy J/m: {4}", + modContainer.FCMapPerMeter().Value(), + modContainer.FuelConsumptionFinal().Value(), + modContainer.FuelConsumptionFinalVolumePerMeter()?.ConvertToLiterPer100Kilometer().Value ?? double.NaN, + modContainer.CO2PerMeter().Value(), + modContainer.EnergyPerMeter().Value()); + Assert.AreEqual(expectedFCMap, modContainer.FCMapPerMeter().Value(), 1e-6); + Assert.AreEqual(expectedFCFinal, modContainer.FuelConsumptionFinal().Value(), 1e-3); + Assert.AreEqual(expectedFCperkm, modContainer.FuelConsumptionFinalVolumePerMeter()?.ConvertToLiterPer100Kilometer().Value ?? double.NaN, 1e-6); + Assert.AreEqual(expectedCo2, modContainer.CO2PerMeter().Value(), 1e-6); Assert.AreEqual(expectedMJ, modContainer.EnergyPerMeter().Value(), 1e-3); } diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs index 5a7c1398e6a3ab07139ee2e52c3b14df3bfafbc6..32fa277ddf2585eded1eb86b674c3af463a376f0 100644 --- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs @@ -127,22 +127,22 @@ namespace TUGraz.VectoCore.Tests.XML var helper = new XPathHelper(ExecutionMode.Declaration); helper.AddNamespaces(manager); - var technology = nav.SelectSingleNode(helper.QueryAbs( + var EngineFuelType = nav.SelectSingleNode(helper.QueryAbs( helper.NSPrefix(XMLNames.VectoInputDeclaration, Constants.XML.RootNSPrefix), XMLNames.Component_Vehicle, XMLNames.Vehicle_Components, XMLNames.Component_Engine, XMLNames.ComponentDataWrapper, XMLNames.Engine_FuelType), manager); - technology.SetValue(fuel); + EngineFuelType.SetValue(fuel); var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); - var techInput = inputDataProvider.JobInputData.Vehicle.EngineInputData.FuelType; - Assert.AreEqual(fuel, techInput.ToXMLFormat()); - - Assert.NotNull(DeclarationData.FuelData.Lookup(techInput)); + var fuelTyle = inputDataProvider.JobInputData.Vehicle.EngineInputData.FuelType; + Assert.AreEqual(fuel, fuelTyle.ToXMLFormat()); + var tankSystem = fuelTyle == FuelType.NGPI || fuelTyle == FuelType.NGCI ? TankSystem.Liquefied : (TankSystem?)null; + Assert.NotNull(DeclarationData.FuelData.Lookup(fuelTyle, tankSystem)); } }