Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit b8dc8caa authored by Michael KRISPER's avatar Michael KRISPER
Browse files

rename: job -> run

parent 06684d0c
No related branches found
No related tags found
No related merge requests found
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
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
......@@ -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();
}
......
......@@ -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;
}
......
......@@ -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;
......
......@@ -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" />
......
......@@ -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);
......
......@@ -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
......@@ -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[] {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment