diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationEngineDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationEngineDataProvider.cs index d1f7ae2fa77e2fed146efab77ff8de403141e0cd..5e901cc6269a800e1459278b0389a1e19f0b6163 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationEngineDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationEngineDataProvider.cs @@ -332,7 +332,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider .Cast<XmlNode>().All(x => x.Attributes?[fcMapAttr] != null); if (correctionFactorNodes.Count > 0) { if (!whrPwrNodes) { - throw new VectoXMLException("WHR correction factors provided but no {0} power defined.", fcMapAttr); + throw new VectoXMLException("WHR correction factors provided but {0} missing for some entries.", fcMapAttr); } //return new XMLDeclarationWHRData(); diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEngineDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEngineDataProvider.cs index 83cfe8cafeca058d37b3193e3da42701fda0eca3..b92c0ad5f50f792ab0e63da669073c76cb733db5 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEngineDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEngineDataProvider.cs @@ -315,6 +315,24 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider } + public override WHRType WHRType + { + get { + var retVal = WHRType.None; + if (XmlConvert.ToBoolean(GetString("MechanicalOutputICE"))) { + retVal |= WHRType.MechanicalOutputICE; + } + if (XmlConvert.ToBoolean(GetString("MechanicalOutputDrivetrain"))) { + retVal |= WHRType.MechanicalOutputDrivetrain; + } + if (XmlConvert.ToBoolean(GetString("ElectricalOutput"))) { + retVal |= WHRType.ElectricalOutput; + } + + return retVal; + } + } + #endregion diff --git a/VectoCore/VectoCoreTest/FileIO/SimulationDataReaderTest.cs b/VectoCore/VectoCoreTest/FileIO/SimulationDataReaderTest.cs index db13be0186c0cbfcbdb0dea55677c138b6370c3f..633eb5409309455a1816d04533a84b98edde85fb 100644 --- a/VectoCore/VectoCoreTest/FileIO/SimulationDataReaderTest.cs +++ b/VectoCore/VectoCoreTest/FileIO/SimulationDataReaderTest.cs @@ -50,14 +50,14 @@ namespace TUGraz.VectoCore.Tests.FileIO protected const string DeclarationJob = @"TestData\Jobs\12t Delivery Truck.vecto"; protected const double Tolerance = 0.0001; - [OneTimeSetUp] - public void RunBeforeAnyTests() - { - Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); - } + [OneTimeSetUp] + public void RunBeforeAnyTests() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + } [Category("LongRunning")] - [TestCase] + [TestCase] public void ReadDeclarationJobFile() { var dataProvider = JSONInputDataFactory.ReadJsonJob(DeclarationJob); @@ -99,8 +99,8 @@ namespace TUGraz.VectoCore.Tests.FileIO Assert.AreEqual(3.7890, runData.EngineData.Inertia.Value(), 1e-6); - var downshiftSpeeds = new[] { 660, 660, 1679.9982 }; - var downshiftTorque = new[] { -163.9, 257.9742, 988.9 }; + var downshiftSpeeds = new[] { 660, 660, 800, 1000, 1087.625, 1087.625}; + var downshiftTorque = new[] { -163.9, 623.966, 725.102, 848.0332, 872.2098, 988.9 }; Assert.AreEqual(downshiftSpeeds.Length, runData.GearboxData.Gears[2].ShiftPolygon.Downshift.Count); for (var i = 0; i < downshiftSpeeds.Length; i++) { @@ -110,11 +110,11 @@ namespace TUGraz.VectoCore.Tests.FileIO "i: " + i); } - var upshiftSpeed = new[] { 1889.6633, 1889.6633, 606.64575 / Constants.RPMToRad }; - var upshiftTorque = new[] { -163.9, 245.31958, 988.9 }; + var upshiftSpeed = new[] {2318.28077, 2318.28077 }; + var upshiftTorque = new[] { -163.9, 988.9 }; - Assert.AreEqual(upshiftSpeed.Length, runData.GearboxData.Gears[2].ShiftPolygon.Downshift.Count); - for (var i = 0; i < downshiftSpeeds.Length; i++) { + Assert.AreEqual(upshiftSpeed.Length, runData.GearboxData.Gears[2].ShiftPolygon.Upshift.Count); + for (var i = 0; i < upshiftSpeed.Length; i++) { Assert.AreEqual(upshiftSpeed[i].RPMtoRad().Value(), runData.GearboxData.Gears[1].ShiftPolygon.Upshift[i].AngularSpeed.Value(), Tolerance); Assert.AreEqual(upshiftTorque[i], runData.GearboxData.Gears[1].ShiftPolygon.Upshift[i].Torque.Value(), Tolerance); diff --git a/VectoCore/VectoCoreTest/Models/Simulation/ShiftStrategyV2Test.cs b/VectoCore/VectoCoreTest/Models/Simulation/ShiftStrategyV2Test.cs index 7d86c1a0e7e01cc5a465f563daf1ed10215ee2f1..d0181591a1e5d8ee599f95c69cd8556d3ccdf0fe 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/ShiftStrategyV2Test.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/ShiftStrategyV2Test.cs @@ -317,25 +317,6 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation } - [TestCase(@"J:\TE-Em\Projekte\I_2017_24_VECTO_Erweiterungen_2018ff\Arbeitsordner\GearshiftModel\AMT\Overdrive\Scania\FC based DECL\Scania w overdrive transm.vecto", 1)] - public void RunDeclaration(string jobName, int runIdx) - { - RunJob_DeclSingle(jobName, runIdx); - } - - - [TestCase(@"E:\QUAM\Workspace\VECTO_DEV_quam\VectoCore\VectoCoreTest\TestData\Integration\ShiftStrategyV2\Allison_FC-based_AT_CONFIDENTIAL\WDB96702410158849.vecto", 5)] - public void RunDeclarationAllisonFCShift(string jobName, int runIdx) - { - RunJob_DeclSingle(jobName, runIdx); - } - - [TestCase(@"E:\QUAM\Workspace\VECTO_DEV_quam\VectoCore\VectoCoreTest\TestData\Integration\ShiftStrategyV2\Allison_Voith_AT_CONFIDENTIAL\WDB96702410158849.vecto", 5)] - public void RunDeclarationAllisonVoithhift(string jobName, int runIdx) - { - RunJob_Engineering(jobName); - } - public void RunJob_Engineering(string jobName) { var relativeJobPath = jobName; diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/RetarderTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/RetarderTest.cs index 151aa3f7e761623df93d658e5e1c0da1563d3a89..e2a5d7fccd314661b960d50c8de53a41c5219eb3 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/RetarderTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/RetarderTest.cs @@ -156,7 +156,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent outPort.Initialize(50.SI<NewtonMeter>(), 2550.RPMtoRad()); outPort.Request(0.SI<Second>(), 0.SI<Second>(), 50.SI<NewtonMeter>(), 2550.RPMtoRad()); AssertHelper.Exception<VectoException>(() => retarder.CommitSimulationStep(new MockModalDataContainer()), - "Retarder LossMap data was extrapolated in Declaration mode: range for loss map is not sufficient: n:2550 (min:0, max:2300), ratio:2"); + "Retarder LossMap data was extrapolated in Declaration mode: range for loss map is not sufficient: n:5100 (min:0, max:2300), ratio:2"); } [TestCase] diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponentData/GearshiftLinesVoithTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponentData/GearshiftLinesVoithTest.cs index b39d1b46142176e2ef5cefb68d81498b01b84655..eae9458ffc89542545b353678e3ae1a0dc315cce 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponentData/GearshiftLinesVoithTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponentData/GearshiftLinesVoithTest.cs @@ -9,6 +9,7 @@ using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; +using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; using TUGraz.VectoCore.Models.SimulationComponent.Impl; using TUGraz.VectoCore.Utils; @@ -123,6 +124,12 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData GearshiftParameters = new ShiftStrategyParameters() { GearshiftLines = data, LoadstageThresholds = loadStageThresoldsUp.Zip(loadStageThresoldsDown, Tuple.Create) + }, + GearboxData = new GearboxData() { + Gears = new Dictionary<uint, GearData>() { + {1, new GearData() }, + {2,new GearData() } + } } }; return runData; diff --git a/VectoCore/VectoCoreTest/Models/WHRMapReaderTest.cs b/VectoCore/VectoCoreTest/Models/WHRMapReaderTest.cs index 6fa6e5e05689a202585e00898640ff26753af29f..c7056cb6159dc91384bc1096212db3188e7b22c2 100644 --- a/VectoCore/VectoCoreTest/Models/WHRMapReaderTest.cs +++ b/VectoCore/VectoCoreTest/Models/WHRMapReaderTest.cs @@ -127,9 +127,10 @@ namespace TUGraz.VectoCore.Tests.Models var inputDataProvider = xmlInputReader.CreateDeclaration(modified); var dao = new DeclarationModeVectoRunDataFactory(inputDataProvider, new NullDeclarationReport()); - var runs = dao.NextRun().ToArray(); - - Assert.IsTrue(runs.All(x => x.EngineData.ElectricalWHR == null)); + AssertHelper.Exception<VectoXMLException>( + () => { + var runs = dao.NextRun().ToArray(); + }, "WHR electric power provided but no correction factors found."); } [TestCase()] @@ -150,9 +151,10 @@ namespace TUGraz.VectoCore.Tests.Models var inputDataProvider = xmlInputReader.CreateDeclaration(modified); var dao = new DeclarationModeVectoRunDataFactory(inputDataProvider, new NullDeclarationReport()); - var runs = dao.NextRun().ToArray(); - - Assert.IsTrue(runs.All(x => x.EngineData.ElectricalWHR == null)); + AssertHelper.Exception<VectoXMLException>( + () => { + var runs = dao.NextRun().ToArray(); + }, "WHR correction factors provided but electricPower missing for some entries."); } [TestCase()] @@ -174,10 +176,10 @@ namespace TUGraz.VectoCore.Tests.Models var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = xmlInputReader.CreateDeclaration(modified); var dao = new DeclarationModeVectoRunDataFactory(inputDataProvider, new NullDeclarationReport()); - AssertHelper.Exception<VectoException>( + AssertHelper.Exception<VectoXMLException>( () => { var runs = dao.NextRun().ToArray(); - }, "WHRData has to be provided for every entry in the FC-Map! n: 560.00, T: 400.00"); + }, "WHR correction factors provided but electricPower missing for some entries."); } [TestCase()] @@ -209,10 +211,9 @@ namespace TUGraz.VectoCore.Tests.Models var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = xmlInputReader.CreateDeclaration(modified); var dao = new DeclarationModeVectoRunDataFactory(inputDataProvider, new NullDeclarationReport()); - AssertHelper.Exception<VectoException>( - () => { - var runs = dao.NextRun().ToArray(); - }, "WHRData (correction factors) can only be defined for one fuel!"); + var runs = dao.NextRun().ToArray(); + + Assert.IsTrue(runs.All(x => x.EngineData.ElectricalWHR?.WHRMap != null)); } [TestCase()] @@ -260,10 +261,10 @@ namespace TUGraz.VectoCore.Tests.Models var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = xmlInputReader.CreateDeclaration(modified); var dao = new DeclarationModeVectoRunDataFactory(inputDataProvider, new NullDeclarationReport()); - AssertHelper.Exception<VectoException>( + AssertHelper.Exception<VectoXMLException>( () => { var runs = dao.NextRun().ToArray(); - }, "Correction Factors and WHR-Map have to be defined for the same fuel!"); + }, "WHR correction factors provided but electricPower missing for some entries."); } [TestCase()] @@ -285,10 +286,10 @@ namespace TUGraz.VectoCore.Tests.Models var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = xmlInputReader.CreateDeclaration(modified); var dao = new DeclarationModeVectoRunDataFactory(inputDataProvider, new NullDeclarationReport()); - AssertHelper.Exception<VectoException>( + AssertHelper.Exception<VectoXMLException>( () => { var runs = dao.NextRun().ToArray(); - }, "WHRData has to be provided for every entry in the FC-Map! n: 560.00, T: 400.00"); + }, "WHR correction factors provided but electricPower missing for some entries."); } [TestCase()] @@ -306,9 +307,9 @@ namespace TUGraz.VectoCore.Tests.Models var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = xmlInputReader.CreateDeclaration(modified); var dao = new DeclarationModeVectoRunDataFactory(inputDataProvider, new NullDeclarationReport()); - var runs = dao.NextRun().ToArray(); - - Assert.IsTrue(runs.All(x => x.EngineData.ElectricalWHR == null)); + //var runs = dao.NextRun().ToArray(); + AssertHelper.Exception<VectoXMLException>(() => { var tmp = dao.NextRun().ToArray(); }); + } [TestCase()] @@ -329,9 +330,9 @@ namespace TUGraz.VectoCore.Tests.Models var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = xmlInputReader.CreateDeclaration(modified); var dao = new DeclarationModeVectoRunDataFactory(inputDataProvider, new NullDeclarationReport()); - var runs = dao.NextRun().ToArray(); - - Assert.IsTrue(runs.All(x => x.EngineData.ElectricalWHR == null)); + //var runs = dao.NextRun().ToArray(); + //Assert.IsTrue(runs.All(x => x.EngineData.ElectricalWHR == null)); + AssertHelper.Exception<VectoXMLException>(() => { var tmp = dao.NextRun().ToArray(); }); }