From b8dc8caaa58bcd44831942d56589b913fdc2ee5e Mon Sep 17 00:00:00 2001 From: Michael Krisper <michael.krisper@tugraz.at> Date: Mon, 15 Jun 2015 11:38:08 +0200 Subject: [PATCH] rename: job -> run --- VectoCore/Models/Simulation/IVectoRun.cs | 19 ++++++++++++++ .../Models/Simulation/IVectoSimulator.cs | 19 -------------- .../Models/Simulation/Impl/JobContainer.cs | 22 ++++++++-------- .../Simulation/Impl/SimulatorFactory.cs | 18 ++++++------- .../Impl/{VectoSimulator.cs => VectoRun.cs} | 4 +-- VectoCore/VectoCore.csproj | 4 +-- .../EngineOnlyCycle/EngineOnlyCycleTest.cs | 2 +- VectoCoreTest/Models/DeclarationDataTest.cs | 25 +++++++++++++------ .../Models/Simulation/SimulationTests.cs | 22 ++++++++-------- 9 files changed, 73 insertions(+), 62 deletions(-) create mode 100644 VectoCore/Models/Simulation/IVectoRun.cs delete mode 100644 VectoCore/Models/Simulation/IVectoSimulator.cs rename VectoCore/Models/Simulation/Impl/{VectoSimulator.cs => VectoRun.cs} (93%) diff --git a/VectoCore/Models/Simulation/IVectoRun.cs b/VectoCore/Models/Simulation/IVectoRun.cs new file mode 100644 index 0000000000..dc6171fd0f --- /dev/null +++ b/VectoCore/Models/Simulation/IVectoRun.cs @@ -0,0 +1,19 @@ +namespace TUGraz.VectoCore.Models.Simulation +{ + /// <summary> + /// Defines the methods for a single vecto run. + /// </summary> + public interface IVectoRun + { + /// <summary> + /// Run the simulation. + /// </summary> + void Run(); + + /// <summary> + /// Return the vehicle container. + /// </summary> + /// <returns></returns> + IVehicleContainer GetContainer(); + } +} \ No newline at end of file diff --git a/VectoCore/Models/Simulation/IVectoSimulator.cs b/VectoCore/Models/Simulation/IVectoSimulator.cs deleted file mode 100644 index 53737997cb..0000000000 --- a/VectoCore/Models/Simulation/IVectoSimulator.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace TUGraz.VectoCore.Models.Simulation -{ - /// <summary> - /// Defines the methods for the vecto simulator. - /// </summary> - public interface IVectoSimulator - { - /// <summary> - /// Run the simulation. - /// </summary> - void Run(); - - /// <summary> - /// Return the vehicle container. - /// </summary> - /// <returns></returns> - IVehicleContainer GetContainer(); - } -} \ No newline at end of file diff --git a/VectoCore/Models/Simulation/Impl/JobContainer.cs b/VectoCore/Models/Simulation/Impl/JobContainer.cs index 93b3a56df7..250a8bc908 100644 --- a/VectoCore/Models/Simulation/Impl/JobContainer.cs +++ b/VectoCore/Models/Simulation/Impl/JobContainer.cs @@ -16,7 +16,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// </summary> public class JobContainer { - private readonly List<IVectoSimulator> _simulators = new List<IVectoSimulator>(); + private readonly List<IVectoRun> _runs = new List<IVectoRun>(); private readonly SummaryFileWriter _sumWriter; private static int _jobNumber; @@ -40,37 +40,37 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl var sumFilePath = Path.GetDirectoryName(data.JobFileName); _sumWriter = new SummaryFileWriter(string.Format("{0}.vsum", Path.Combine(sumFilePath, sumFileName))); - AddJobs(data); + AddRuns(data); } /// <summary> /// Creates and Adds jobs from the VectoJobData object. /// </summary> /// <param name="data">The data.</param> - public void AddJobs(VectoJobData data) + public void AddRuns(VectoJobData data) { _jobNumber++; - _simulators.AddRange(SimulatorFactory.CreateJobs(data, _sumWriter, _jobNumber)); + _runs.AddRange(SimulatorFactory.CreateRuns(data, _sumWriter, _jobNumber)); } /// <summary> /// Adds a custom created job. /// </summary> - /// <param name="sim">The sim.</param> - public void AddJob(IVectoSimulator sim) + /// <param name="run">The run.</param> + public void AddRun(IVectoRun run) { _jobNumber++; - _simulators.Add(sim); + _runs.Add(run); } /// <summary> - /// Runs all jobs, waits until finished. + /// Execute all runs, waits until finished. /// </summary> - public void RunJobs() + public void Execute() { - LogManager.GetLogger(GetType()).Info("VectoSimulator started running. Starting Jobs."); + LogManager.GetLogger(GetType()).Info("VectoRun started running. Executing Runs."); - Task.WaitAll(_simulators.Select(job => Task.Factory.StartNew(job.Run)).ToArray()); + Task.WaitAll(_runs.Select(r => Task.Factory.StartNew(r.Run)).ToArray()); _sumWriter.Finish(); } diff --git a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs index 6915fb6462..cf5426ad35 100644 --- a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs +++ b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs @@ -13,9 +13,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl private static IModalDataWriter _dataWriter; /// <summary> - /// Creates a simulation job for time based engine only powertrain. + /// Creates a simulation run for time based engine only powertrain. /// </summary> - public static IVectoSimulator CreateTimeBasedEngineOnlyJob(string engineFile, string cycleFile, string jobFileName, + public static IVectoRun CreateTimeBasedEngineOnlyRun(string engineFile, string cycleFile, string jobFileName, string jobName, IModalDataWriter dataWriter, SummaryFileWriter sumWriter) { var sumWriterDecorator = new SumWriterDecoratorEngineOnly(sumWriter, jobFileName, jobName, cycleFile); @@ -27,13 +27,13 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl } /// <summary> - /// Creates powertrains and jobs from a VectoJobData Object. + /// Creates powertrains and runs from a VectoJobData Object. /// </summary> /// <param name="data">The data.</param> /// <param name="sumWriter">The sum writer.</param> /// <param name="jobNumber">The job number.</param> /// <returns></returns> - public static IEnumerable<IVectoSimulator> CreateJobs(VectoJobData data, SummaryFileWriter sumWriter, int jobNumber) + public static IEnumerable<IVectoRun> CreateRuns(VectoJobData data, SummaryFileWriter sumWriter, int jobNumber) { for (var i = 0; i < data.Cycles.Count; i++) { var cycleFile = data.Cycles[i]; @@ -104,12 +104,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl _container = new VehicleContainer(dataWriter, sumWriter); } - public IVectoSimulator Build(string cycleFile) + public IVectoRun Build(string cycleFile) { return _engineOnly ? BuildEngineOnly(cycleFile) : BuildFullPowertrain(cycleFile); } - private IVectoSimulator BuildFullPowertrain(string cycleFile) + private IVectoRun BuildFullPowertrain(string cycleFile) { //throw new NotImplementedException("FullPowertrain is not fully implemented yet."); var cycleData = DrivingCycleData.ReadFromFileEngineOnly(cycleFile); @@ -144,11 +144,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl // connect clutch --> aux _clutch.InShaft().Connect(previousAux.OutShaft()); - var simulator = new VectoSimulator(_container, cycle); + var simulator = new VectoRun(_container, cycle); return simulator; } - private IVectoSimulator BuildEngineOnly(string cycleFile) + private IVectoRun BuildEngineOnly(string cycleFile) { var cycleData = DrivingCycleData.ReadFromFileEngineOnly(cycleFile); var cycle = new EngineOnlyDrivingCycle(_container, cycleData); @@ -164,7 +164,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl cycle.InShaft().Connect(_gearBox.OutShaft()); - var simulator = new VectoSimulator(_container, cycle); + var simulator = new VectoRun(_container, cycle); return simulator; } diff --git a/VectoCore/Models/Simulation/Impl/VectoSimulator.cs b/VectoCore/Models/Simulation/Impl/VectoRun.cs similarity index 93% rename from VectoCore/Models/Simulation/Impl/VectoSimulator.cs rename to VectoCore/Models/Simulation/Impl/VectoRun.cs index e55bfa77a7..52c9c13a89 100644 --- a/VectoCore/Models/Simulation/Impl/VectoSimulator.cs +++ b/VectoCore/Models/Simulation/Impl/VectoRun.cs @@ -11,12 +11,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// <summary> /// Simulator for one vecto simulation job. /// </summary> - public class VectoSimulator : IVectoSimulator + public class VectoRun : IVectoRun { private TimeSpan _absTime = new TimeSpan(seconds: 0, minutes: 0, hours: 0); private TimeSpan _dt = new TimeSpan(seconds: 1, minutes: 0, hours: 0); - public VectoSimulator(IVehicleContainer container, IDrivingCycleOutPort cyclePort) + public VectoRun(IVehicleContainer container, IDrivingCycleOutPort cyclePort) { Container = container; CyclePort = cyclePort; diff --git a/VectoCore/VectoCore.csproj b/VectoCore/VectoCore.csproj index 074b97fe29..57748b42c5 100644 --- a/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore.csproj @@ -194,10 +194,10 @@ <Compile Include="Models\Simulation\Data\ModalResult.cs"> <SubType>Component</SubType> </Compile> - <Compile Include="Models\Simulation\IVectoSimulator.cs" /> + <Compile Include="Models\Simulation\IVectoRun.cs" /> <Compile Include="Models\Simulation\Data\ModalDataWriter.cs" /> <Compile Include="Models\Simulation\Impl\SimulatorFactory.cs" /> - <Compile Include="Models\Simulation\Impl\VectoSimulator.cs" /> + <Compile Include="Models\Simulation\Impl\VectoRun.cs" /> <Compile Include="Models\Simulation\Impl\JobContainer.cs" /> <Compile Include="Models\Simulation\Impl\VehicleContainer.cs" /> <Compile Include="Models\Simulation\Cockpit\ICockpit.cs" /> diff --git a/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs b/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs index 2adc0b1700..847731dcca 100644 --- a/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs +++ b/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs @@ -37,7 +37,7 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle gearbox.InShaft().Connect(aux.OutShaft()); var port = aux.OutShaft(); -// IVectoJob job = SimulationFactory.CreateTimeBasedEngineOnlyJob(TestContext.DataRow["EngineFile"].ToString(), +// IVectoJob job = SimulationFactory.CreateTimeBasedEngineOnlyRun(TestContext.DataRow["EngineFile"].ToString(), // TestContext.DataRow["CycleFile"].ToString(), "test2.csv"); var absTime = new TimeSpan(seconds: 0, minutes: 0, hours: 0); diff --git a/VectoCoreTest/Models/DeclarationDataTest.cs b/VectoCoreTest/Models/DeclarationDataTest.cs index ee03b3e173..7c2b430f16 100644 --- a/VectoCoreTest/Models/DeclarationDataTest.cs +++ b/VectoCoreTest/Models/DeclarationDataTest.cs @@ -35,6 +35,13 @@ namespace TUGraz.VectoCore.Tests.Models Assert.AreEqual(3.05, tmp.F_b, Tolerance); } + [TestMethod] + public void PT1Test() + { + Assert.Inconclusive(); + } + + [TestMethod] public void SegmentTest() { @@ -62,6 +69,7 @@ namespace TUGraz.VectoCore.Tests.Models Assert.AreEqual(MissionType.LongHaul, longHaulMission.MissionType); Assert.AreEqual("RigidSolo.vcdv", longHaulMission.VCDV); Assert.IsTrue(new[] { 0.4, 0.6 }.SequenceEqual(longHaulMission.AxleWeightDistribution)); + Assert.IsTrue(new double[] { }.SequenceEqual(longHaulMission.TrailerAxleWeightDistribution)); Assert.AreEqual(1900.SI<Kilogram>(), longHaulMission.MassExtra); Assert.IsNotNull(longHaulMission.CycleFile); @@ -72,10 +80,12 @@ namespace TUGraz.VectoCore.Tests.Models Assert.AreEqual(vehicleData.GrossVehicleMassRating - longHaulMission.MassExtra - vehicleData.CurbWeight, longHaulMission.MaxLoad); + var regionalDeliveryMission = segment.Missions[1]; Assert.AreEqual(MissionType.RegionalDelivery, regionalDeliveryMission.MissionType); Assert.AreEqual("RigidSolo.vcdv", regionalDeliveryMission.VCDV); Assert.IsTrue(new[] { 0.45, 0.55 }.SequenceEqual(regionalDeliveryMission.AxleWeightDistribution)); + Assert.IsTrue(new double[] { }.SequenceEqual(regionalDeliveryMission.TrailerAxleWeightDistribution)); Assert.AreEqual(1900.SI<Kilogram>(), regionalDeliveryMission.MassExtra); Assert.IsNotNull(regionalDeliveryMission.CycleFile); @@ -86,10 +96,12 @@ namespace TUGraz.VectoCore.Tests.Models Assert.AreEqual(vehicleData.GrossVehicleMassRating - regionalDeliveryMission.MassExtra - vehicleData.CurbWeight, regionalDeliveryMission.MaxLoad); + var urbanDeliveryMission = segment.Missions[2]; Assert.AreEqual(MissionType.UrbanDelivery, urbanDeliveryMission.MissionType); Assert.AreEqual("RigidSolo.vcdv", urbanDeliveryMission.VCDV); Assert.IsTrue(new[] { 0.45, 0.55 }.SequenceEqual(urbanDeliveryMission.AxleWeightDistribution)); + Assert.IsTrue(new double[] { }.SequenceEqual(urbanDeliveryMission.TrailerAxleWeightDistribution)); Assert.AreEqual(1900.SI<Kilogram>(), urbanDeliveryMission.MassExtra); Assert.IsNotNull(urbanDeliveryMission.CycleFile); @@ -100,14 +112,12 @@ namespace TUGraz.VectoCore.Tests.Models Assert.AreEqual(vehicleData.GrossVehicleMassRating - urbanDeliveryMission.MassExtra - vehicleData.CurbWeight, urbanDeliveryMission.MaxLoad); - //todo: test trailer axle distribution - //var runs = new List<IVectoSimulator>(); + //// FACTORY + //var runs = new List<IVectoRun>(); - //foreach (var mission in segment.Missions) - //{ - // foreach (var loading in mission.Loadings) - // { + //foreach (var mission in segment.Missions) { + // foreach (var loading in mission.Loadings) { // var container = new VehicleContainer(); // // connect cycle --> driver --> vehicle --> wheels --> axleGear --> gearBox @@ -139,9 +149,10 @@ namespace TUGraz.VectoCore.Tests.Models // var cycle = new DistanceBasedDrivingCycle(container, cycleData); // cycle.InShaft().Connect(driver.OutShaft()); - // var simulator = new VectoSimulator(container, cycle); + // var simulator = new VectoRun(container, cycle); // runs.Add(simulator); // } + //} } } } \ No newline at end of file diff --git a/VectoCoreTest/Models/Simulation/SimulationTests.cs b/VectoCoreTest/Models/Simulation/SimulationTests.cs index 16ac702ffd..429b93abb7 100644 --- a/VectoCoreTest/Models/Simulation/SimulationTests.cs +++ b/VectoCoreTest/Models/Simulation/SimulationTests.cs @@ -21,7 +21,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation public void TestSimulationEngineOnly() { var resultFileName = "TestEngineOnly-result.vmod"; - var job = CreateJob(resultFileName); + var job = CreateRun(resultFileName); var container = job.GetContainer(); @@ -35,7 +35,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var actual = "TestEngineOnly_JobRun-result.vmod"; var expected = @"TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly short.vmod"; - var job = CreateJob(actual); + var job = CreateRun(actual); job.Run(); ResultFileHelper.TestModFile(expected, actual); @@ -47,25 +47,25 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var actual = @"TestEngineOnly_SimulatorRun-result.vmod"; var expected = @"TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly short.vmod"; - var job = CreateJob(actual); + var run = CreateRun(actual); var sim = new JobContainer(new TestSumWriter()); - sim.AddJob(job); - sim.RunJobs(); + sim.AddRun(run); + sim.Execute(); ResultFileHelper.TestModFile(expected, actual); } - public IVectoSimulator CreateJob(string resultFileName) + public IVectoRun CreateRun(string resultFileName) { var sumFileName = resultFileName.Substring(0, resultFileName.Length - 4) + "vsum"; var dataWriter = new ModalDataWriter(resultFileName, engineOnly: true); var sumWriter = new SummaryFileWriter(sumFileName); - var job = SimulatorFactory.CreateTimeBasedEngineOnlyJob(EngineFile, CycleFile, jobFileName: "", jobName: "", + var run = SimulatorFactory.CreateTimeBasedEngineOnlyRun(EngineFile, CycleFile, jobFileName: "", jobName: "", dataWriter: dataWriter, sumWriter: sumWriter); - return job; + return run; } @@ -80,9 +80,9 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var simulation = new JobContainer(new TestSumWriter()); foreach (var resultFile in resultFiles) { - simulation.AddJob(CreateJob(resultFile)); + simulation.AddRun(CreateRun(resultFile)); } - simulation.RunJobs(); + simulation.Execute(); ResultFileHelper.TestModFiles(resultFiles.Select(x => x + "_Coach Engine Only short.vmod"), Enumerable.Repeat(@"TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly short.vmod", resultFiles.Length)); @@ -93,7 +93,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation { var jobData = VectoJobData.ReadFromFile(@"TestData\Jobs\24t Coach.vecto"); var jobContainer = new JobContainer(jobData); - jobContainer.RunJobs(); + jobContainer.Execute(); ResultFileHelper.TestSumFile(@"TestData\Results\EngineOnlyCycles\24t Coach.vsum", @"TestData\Jobs\24t Coach.vsum"); ResultFileHelper.TestModFiles(new[] { -- GitLab