diff --git a/LicenceHeader/Program.cs b/LicenceHeader/Program.cs index 853fb97b14b7b224bf92b3207b6358db618252c1..7d5ed4285c2d4475cbc83ecd268d29523cc42f1c 100644 --- a/LicenceHeader/Program.cs +++ b/LicenceHeader/Program.cs @@ -34,6 +34,7 @@ namespace LicenceHeader var count = 0; foreach (var file in Directory.GetFiles(SolutionRootDirectory, "*.cs", SearchOption.AllDirectories)) { + Console.WriteLine(file); if (file.Contains("\\obj\\") || file.Contains("\\bin\\")) { continue; } diff --git a/LicenceHeader/header.txt b/LicenceHeader/header.txt index 4ad4eb3d90ce2923358992c2875799c2ec24c924..7fd7590f224b5b1c880d96f5436ec47f189204ec 100644 --- a/LicenceHeader/header.txt +++ b/LicenceHeader/header.txt @@ -1,5 +1,5 @@ /* -* Copyright 2015 European Union +* Copyright 2015 Graz University of Technology * * Licensed under the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. diff --git a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs index bb7bee8536b6793686554dc76bead4bef9971aad..212144642a433f7f74087f0e9214da221661127a 100644 --- a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs +++ b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs @@ -107,7 +107,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl } } - private void CheckLossMapRangeForFullLoadCurves(GearboxData gearboxData, CombustionEngineData engineData) + internal static void CheckLossMapRangeForFullLoadCurves(GearboxData gearboxData, CombustionEngineData engineData) { foreach (var gear in gearboxData.Gears) { for (var angularVelocity = engineData.IdleSpeed; diff --git a/VectoCoreTest/Models/Simulation/SimulationTests.cs b/VectoCoreTest/Models/Simulation/SimulationTests.cs index 58e55345c6eb56f7f63ba127fa0e1aff12a359c2..aaad3c987ed758163a130ce9fb58d8e7a971334f 100644 --- a/VectoCoreTest/Models/Simulation/SimulationTests.cs +++ b/VectoCoreTest/Models/Simulation/SimulationTests.cs @@ -25,104 +25,103 @@ using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.Tests.Models.Simulation { - [TestClass] - public class SimulationTests - { - private const string EngineFile = @"TestData\Components\24t Coach.veng"; - private const string CycleFile = @"TestData\Cycles\Coach Engine Only short.vdri"; - - private const string EngineOnlyJob = @"TestData\Jobs\EngineOnlyJob.vecto"; - - [TestMethod] - public void TestSimulationEngineOnly() - { - var resultFileName = "TestEngineOnly-result.vmod"; - var job = CreateRun(resultFileName); - - var container = job.GetContainer(); - - Assert.AreEqual(560.RPMtoRad(), container.EngineSpeed); - Assert.AreEqual(0U, container.Gear); - } - - [TestMethod] - public void TestEngineOnly_JobRun() - { - var actual = @"TestData\Jobs\EngineOnlyJob_Coach Engine Only short.vmod"; - var expected = @"TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly short.vmod"; - - var job = CreateRun(actual); - job.Run(); - - ResultFileHelper.TestModFile(expected, actual); - } - - private class MockSumWriter : SummaryFileWriter - { - public override void Write(bool isEngineOnly, IModalDataWriter data, string jobFileName, string jobName, - string cycleFileName, - Kilogram vehicleMass, Kilogram vehicleLoading) {} - - public override void Finish() {} - } - - - [TestMethod] - public void TestEngineOnly_SimulatorRun() - { - var actual = @"TestData\Jobs\EngineOnlyJob_Coach Engine Only short.vmod"; - var expected = @"TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly short.vmod"; - - var run = CreateRun(actual); - - var sim = new JobContainer(new MockSumWriter()); - sim.AddRun(run); - sim.Execute(); - sim.WaitFinished(); - - ResultFileHelper.TestModFile(expected, actual); - } - - public IVectoRun CreateRun(string resultFileName) - { - var sumFileName = resultFileName.Substring(0, resultFileName.Length - 5) + Constants.FileExtensions.SumFile; - - var dataWriter = new ModalDataWriter(resultFileName, SimulatorFactory.FactoryMode.EngineOnlyMode); - var sumWriter = new SummaryFileWriter(sumFileName); - - var factory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineOnlyMode, EngineOnlyJob) { - SumWriter = sumWriter - }; - - return factory.SimulationRuns().First(); - } - - [TestMethod] - public void Test_VectoJob() - { - var sumWriter = new SummaryFileWriter(@"24t Coach.vsum"); - var jobContainer = new JobContainer(sumWriter); - - var runsFactory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineOnlyMode, - @"TestData\Jobs\24t Coach EngineOnly.vecto"); - - jobContainer.AddRuns(runsFactory); - jobContainer.Execute(); - - jobContainer.WaitFinished(); - - ResultFileHelper.TestSumFile(@"TestData\Results\EngineOnlyCycles\24t Coach.vsum", @"24t Coach.vsum"); - - ResultFileHelper.TestModFiles(new[] { - @"TestData\Results\EngineOnlyCycles\24t Coach_Engine Only1.vmod", - @"TestData\Results\EngineOnlyCycles\24t Coach_Engine Only2.vmod", - @"TestData\Results\EngineOnlyCycles\24t Coach_Engine Only3.vmod" - }, new[] { - @"TestData\Jobs\24t Coach EngineOnly_Engine Only1.vmod", - @"TestData\Jobs\24t Coach EngineOnly_Engine Only2.vmod", - @"TestData\Jobs\24t Coach EngineOnly_Engine Only3.vmod" - }) - ; - } - } + [TestClass] + public class SimulationTests + { + private const string EngineFile = @"TestData\Components\24t Coach.veng"; + private const string CycleFile = @"TestData\Cycles\Coach Engine Only short.vdri"; + + private const string EngineOnlyJob = @"TestData\Jobs\EngineOnlyJob.vecto"; + + [TestMethod] + public void TestSimulationEngineOnly() + { + var resultFileName = "TestEngineOnly-result.vmod"; + var job = CreateRun(resultFileName); + + var container = job.GetContainer(); + + Assert.AreEqual(560.RPMtoRad(), container.EngineSpeed); + Assert.AreEqual(0U, container.Gear); + } + + [TestMethod] + public void TestEngineOnly_JobRun() + { + var actual = @"TestData\Jobs\EngineOnlyJob_Coach Engine Only short.vmod"; + var expected = @"TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly short.vmod"; + + var job = CreateRun(actual); + job.Run(); + + ResultFileHelper.TestModFile(expected, actual); + } + + private class MockSumWriter : SummaryFileWriter + { + public override void Write(bool isEngineOnly, IModalDataWriter data, string jobFileName, string jobName, + string cycleFileName, + Kilogram vehicleMass, Kilogram vehicleLoading) {} + + public override void Finish() {} + } + + + [TestMethod] + public void TestEngineOnly_SimulatorRun() + { + var actual = @"TestData\Jobs\EngineOnlyJob_Coach Engine Only short.vmod"; + var expected = @"TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly short.vmod"; + + var run = CreateRun(actual); + + var sim = new JobContainer(new MockSumWriter()); + sim.AddRun(run); + sim.Execute(); + sim.WaitFinished(); + + ResultFileHelper.TestModFile(expected, actual); + } + + public IVectoRun CreateRun(string resultFileName) + { + var sumFileName = resultFileName.Substring(0, resultFileName.Length - 5) + Constants.FileExtensions.SumFile; + + var dataWriter = new ModalDataWriter(resultFileName, SimulatorFactory.FactoryMode.EngineOnlyMode); + var sumWriter = new SummaryFileWriter(sumFileName); + + var factory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineOnlyMode, EngineOnlyJob) { + SumWriter = sumWriter + }; + + return factory.SimulationRuns().First(); + } + + [TestMethod] + public void Test_VectoJob() + { + var sumWriter = new SummaryFileWriter(@"24t Coach.vsum"); + var jobContainer = new JobContainer(sumWriter); + + var runsFactory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineOnlyMode, + @"TestData\Jobs\24t Coach EngineOnly.vecto"); + + jobContainer.AddRuns(runsFactory); + jobContainer.Execute(); + + jobContainer.WaitFinished(); + + ResultFileHelper.TestSumFile(@"TestData\Results\EngineOnlyCycles\24t Coach.vsum", @"24t Coach.vsum"); + + ResultFileHelper.TestModFiles(new[] { + @"TestData\Results\EngineOnlyCycles\24t Coach_Engine Only1.vmod", + @"TestData\Results\EngineOnlyCycles\24t Coach_Engine Only2.vmod", + @"TestData\Results\EngineOnlyCycles\24t Coach_Engine Only3.vmod" + }, new[] { + @"TestData\Jobs\24t Coach EngineOnly_Engine Only1.vmod", + @"TestData\Jobs\24t Coach EngineOnly_Engine Only2.vmod", + @"TestData\Jobs\24t Coach EngineOnly_Engine Only3.vmod" + }); + } + } } \ No newline at end of file diff --git a/VectoCoreTest/Models/SimulationComponentData/FullLoadCurveTest.cs b/VectoCoreTest/Models/SimulationComponentData/FullLoadCurveTest.cs index c0d361c40e9840ec26012f0126903023daa03f3a..63b2387cdf080a172a97707f48bec90bb83c04f3 100644 --- a/VectoCoreTest/Models/SimulationComponentData/FullLoadCurveTest.cs +++ b/VectoCoreTest/Models/SimulationComponentData/FullLoadCurveTest.cs @@ -14,10 +14,16 @@ * limitations under the Licence. */ +using System.IO; using Microsoft.VisualStudio.TestTools.UnitTesting; using TUGraz.VectoCore.Exceptions; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.Simulation.Impl; 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.Tests.Utils; using TUGraz.VectoCore.Utils; @@ -143,5 +149,23 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData () => EngineFullLoadCurve.ReadFromFile(@"TestData\Components\FullLoadCurve insufficient entries.vfld"), "FullLoadCurve must consist of at least two lines with numeric values (below file header)"); } + + [TestMethod] + public void FullLoad_LossMap_Test() + { + var engineData = new CombustionEngineData { + FullLoadCurve = EngineFullLoadCurve.ReadFromFile(@"TestData\Components\12t Delivery Truck.vfld"), + IdleSpeed = 560.RPMtoRad() + }; + + var gearboxData = new GearboxData(); + gearboxData.Gears[1] = new GearData { + LossMap = TransmissionLossMap.ReadFromFile(@"TestData\Components\limited.vtlm", 1, "1"), + Ratio = 1 + }; + + AssertHelper.Exception<VectoException>( + () => SimulatorFactory.CheckLossMapRangeForFullLoadCurves(gearboxData, engineData)); + } } } \ No newline at end of file diff --git a/VectoCoreTest/TestData/Components/Axle.vtlm b/VectoCoreTest/TestData/Components/Axle.vtlm index ca83698dd7d8747eaa2cc34fc5c1440b1d209a10..a2f69201fe0a5444d2b61277178fb1c851b7f55e 100644 --- a/VectoCoreTest/TestData/Components/Axle.vtlm +++ b/VectoCoreTest/TestData/Components/Axle.vtlm @@ -265,3 +265,22 @@ Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm],Eff [-] 2600,13500,242.5 2600,14500,257.5 2600,15500,272.5 +3600,-2500,77.5 +3600,-1500,62.5 +3600,-500,47.5 +3600,500,47.5 +3600,1500,62.5 +3600,2500,77.5 +3600,3500,92.5 +3600,4500,107.5 +3600,5500,122.5 +3600,6500,137.5 +3600,7500,152.5 +3600,8500,167.5 +3600,9500,182.5 +3600,10500,197.5 +3600,11500,212.5 +3600,12500,227.5 +3600,13500,242.5 +3600,14500,257.5 +3600,15500,272.5 \ No newline at end of file diff --git a/VectoCoreTest/TestData/Components/Direct Gear.vtlm b/VectoCoreTest/TestData/Components/Direct Gear.vtlm index f01578ad9e3711612d374a7b4fe9ad6b667438da..65f85329b91de25332bc8f8c6ac9cfdcec314e2e 100644 --- a/VectoCoreTest/TestData/Components/Direct Gear.vtlm +++ b/VectoCoreTest/TestData/Components/Direct Gear.vtlm @@ -163,7 +163,22 @@ Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm],Eff [-] 2000,1850,24.43, 2000,2050,25.43, 2000,2250,26.43, -2000,2450,27.43, +3000,2450,27.43, +3000,-350,16.93, +3000,-150,15.93, +3000,50,15.43, +3000,250,16.43, +3000,450,17.43, +3000,650,18.43, +3000,850,19.43, +3000,1050,20.43, +3000,1250,21.43, +3000,1450,22.43, +3000,1650,23.43, +3000,1850,24.43, +3000,2050,25.43, +3000,2250,26.43, +3000,2450,27.43, 0,-1000,10.06, 200,-1000,11.072, 400,-1000,12.084, diff --git a/VectoCoreTest/TestData/Components/Indirect Gear.vtlm b/VectoCoreTest/TestData/Components/Indirect Gear.vtlm index 90e4beee5b235671a0500dbd9f28ff2b3dd73236..a0dff7db051305a8b68c741a6920f0e905ed0af8 100644 --- a/VectoCoreTest/TestData/Components/Indirect Gear.vtlm +++ b/VectoCoreTest/TestData/Components/Indirect Gear.vtlm @@ -164,6 +164,21 @@ Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm],Eff [-] 2000,2050,56.18, 2000,2250,60.18, 2000,2450,64.18, +3000,-350,22.18, +3000,-150,18.18, +3000,50,16.18, +3000,250,20.18, +3000,450,24.18, +3000,650,28.18, +3000,850,32.18, +3000,1050,36.18, +3000,1250,40.18, +3000,1450,44.18, +3000,1650,48.18, +3000,1850,52.18, +3000,2050,56.18, +3000,2250,60.18, +3000,2450,64.18, 0,-1000,25.06, 200,-1000,26.072, 400,-1000,27.084, diff --git a/VectoCoreTest/TestData/Components/limited.vtlm b/VectoCoreTest/TestData/Components/limited.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..96c02e2c5473a4721c9d573be480678efcba3fca --- /dev/null +++ b/VectoCoreTest/TestData/Components/limited.vtlm @@ -0,0 +1,39 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm],Eff [-] +0,-2500,77.5 +0,-1500,62.5 +0,-500,47.5 +0,500,47.5 +0,1500,62.5 +0,2500,77.5 +0,3500,92.5 +0,4500,107.5 +0,5500,122.5 +0,6500,137.5 +0,7500,152.5 +0,8500,167.5 +0,9500,182.5 +0,10500,197.5 +0,11500,212.5 +0,12500,227.5 +0,13500,242.5 +0,14500,257.5 +0,15500,272.5 +200,-2500,77.5 +200,-1500,62.5 +200,-500,47.5 +200,500,47.5 +200,1500,62.5 +200,2500,77.5 +200,3500,92.5 +200,4500,107.5 +200,5500,122.5 +200,6500,137.5 +200,7500,152.5 +200,8500,167.5 +200,9500,182.5 +200,10500,197.5 +200,11500,212.5 +200,12500,227.5 +200,13500,242.5 +200,14500,257.5 +200,15500,272.5 \ No newline at end of file diff --git a/VectoCoreTest/VectoCoreTest.csproj b/VectoCoreTest/VectoCoreTest.csproj index 176794c9104fde36ab3cfb424eb0c3d6dc31b827..d645ed3e4c9e749ba7dc962d6551b7a6f0319d9d 100644 --- a/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCoreTest/VectoCoreTest.csproj @@ -156,6 +156,9 @@ <None Include="TestData\Components\12t Delivery Truck.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> + <None Include="TestData\Components\limited.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> <None Include="TestData\Components\Axle 40t Truck.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None>