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

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

tests for reading vecto job file, executing the job and writing moddata

parent 6982118c
No related branches found
No related tags found
No related merge requests found
Showing
with 23925 additions and 60 deletions
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Runtime.Serialization;
using Newtonsoft.Json;
......@@ -96,7 +97,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
[JsonProperty(Required = Required.Always)] public string EngineFile;
[JsonProperty(Required = Required.Always)] public string GearboxFile;
[JsonProperty(Required = Required.Always)] public IList<string> Cycles;
[JsonProperty(Required = Required.Always)] public IList<AuxData> Aux;
[JsonProperty] public IList<AuxData> Aux = new List<AuxData>();
[JsonProperty(Required = Required.Always)] public string VACC;
[JsonProperty(Required = Required.Always)] public bool EngineOnlyMode;
[JsonProperty(Required = Required.Always)] public StartStopData StartStop;
......
using System.Collections.Generic;
using System.IO;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.SimulationComponent;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
......@@ -19,7 +20,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
builder.AddEngine(engineFile);
builder.AddGearbox();
var simulator = builder.Build(cycleFile, resultFile, jobName: "", jobFileName: "");
var simulator = builder.Build(cycleFile, resultFile);
return simulator;
}
......@@ -37,7 +38,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
builder.AddDriver(data.StartStop, data.OverSpeedEcoRoll, data.LookAheadCoasting,
data.AccelerationLimitingFile);
var job = builder.Build(cycle, resultFile: "", jobName: "", jobFileName: data.FileName);
var job = builder.Build(cycle, data.FileName);
yield return job;
}
......@@ -63,12 +64,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
_container = new VehicleContainer();
}
public IVectoSimulator Build(string cycleFile, string resultFile, string jobName, string jobFileName)
public IVectoSimulator Build(string cycleFile, string jobFile)
{
if (_engineOnly) {
return BuildEngineOnly(cycleFile, resultFile, jobName, jobFileName);
return BuildEngineOnly(cycleFile, jobFile);
}
return BuildFullPowertrain(cycleFile, resultFile, jobName, jobFileName);
return BuildFullPowertrain(cycleFile, jobFile);
}
public void AddEngine(string engineFile)
......@@ -103,12 +104,19 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
VectoJobData.Data.DataBody.OverSpeedEcoRollData overSpeedEcoRoll,
VectoJobData.Data.DataBody.LACData lookAheadCoasting, string accelerationLimitingFile)
{
if (_engineOnly) {
return;
}
var driverData = new DriverData(startStop, overSpeedEcoRoll, lookAheadCoasting, accelerationLimitingFile);
_driver = new Driver(driverData);
}
public void AddVehicle(string vehicleFile)
{
if (_engineOnly) {
return;
}
var vehicleData = VehicleData.ReadFromFile(vehicleFile);
_vehicle = new Vehicle(_container, vehicleData);
}
......@@ -119,7 +127,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
_retarder = new Retarder(_container, retarderData);
}
private IVectoSimulator BuildFullPowertrain(string cycleFile, string resultFile, string jobName, string jobFileName)
private IVectoSimulator BuildFullPowertrain(string cycleFile, string jobFile)
{
//throw new NotImplementedException("FullPowertrain is not fully implemented yet.");
var cycleData = DrivingCycleData.ReadFromFileEngineOnly(cycleFile);
......@@ -154,12 +162,14 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
// connect clutch --> aux
_clutch.InShaft().Connect(previousAux.OutShaft());
var dataWriter = new ModalDataWriter(resultFile);
var simulator = new VectoSimulator(jobName, jobFileName, _container, cycle, dataWriter);
var dataWriter =
new ModalDataWriter(string.Format("{0}_{1}.vmod", Path.GetFileNameWithoutExtension(jobFile),
Path.GetFileNameWithoutExtension(cycleFile)));
var simulator = new VectoSimulator(Path.GetFileNameWithoutExtension(jobFile), jobFile, _container, cycle, dataWriter);
return simulator;
}
private IVectoSimulator BuildEngineOnly(string cycleFile, string resultFile, string jobName, string jobFileName)
private IVectoSimulator BuildEngineOnly(string cycleFile, string jobFile)
{
var cycleData = DrivingCycleData.ReadFromFileEngineOnly(cycleFile);
var cycle = new EngineOnlyDrivingCycle(_container, cycleData);
......@@ -171,8 +181,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
cycle.InShaft().Connect(_gearBox.OutShaft());
var dataWriter = new ModalDataWriter(resultFile);
var simulator = new VectoSimulator(jobName, jobFileName, _container, cycle, dataWriter);
var dataWriter =
new ModalDataWriter(string.Format("{0}_{1}.vmod", Path.GetFileNameWithoutExtension(jobFile),
Path.GetFileNameWithoutExtension(cycleFile)));
var simulator = new VectoSimulator(Path.GetFileNameWithoutExtension(jobFile), jobFile, _container, cycle, dataWriter);
return simulator;
}
}
......
......@@ -14,6 +14,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
private readonly IList<VectoSimulationComponent> _components = new List<VectoSimulationComponent>();
private IEngineCockpit _engine;
private IGearboxCockpit _gearbox;
private ILog _logger;
#region IGearCockpit
......@@ -29,7 +30,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
#region IEngineCockpit
public PerSecond EngineSpeed()
public PerSecond EngineSpeed()
{
if (_engine == null) {
throw new VectoException("no engine available!");
......@@ -48,6 +49,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
#endregion
public VehicleContainer()
{
_logger = LogManager.GetLogger(GetType());
}
#region IVehicleContainer
public virtual void AddComponent(VectoSimulationComponent component)
......@@ -69,7 +75,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
public void CommitSimulationStep(IModalDataWriter dataWriter)
{
LogManager.GetLogger(GetType()).Info("VehicleContainer committing simulation.");
_logger.Info("VehicleContainer committing simulation.");
foreach (var component in _components) {
component.CommitSimulationStep(dataWriter);
}
......@@ -78,7 +84,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
public void FinishSimulation(IModalDataWriter dataWriter)
{
LogManager.GetLogger(GetType()).Info("VehicleContainer finishing simulation.");
_logger.Info("VehicleContainer finishing simulation.");
dataWriter.Finish();
}
......
......@@ -37,7 +37,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
public override void CommitSimulationStep(IModalDataWriter writer)
{
throw new NotImplementedException();
//todo: implement!
//throw new NotImplementedException();
}
public ITnInPort InShaft()
......
......@@ -124,7 +124,6 @@
<Compile Include="Models\SimulationComponent\Data\Engine\FullLoadCurve.cs" />
<Compile Include="Models\SimulationComponent\Data\IAuxiliaryCycleData.cs" />
<Compile Include="Models\SimulationComponent\Data\RetarderLossMap.cs" />
<Compile Include="Models\SimulationComponent\IAxleGear.cs" />
<Compile Include="Models\SimulationComponent\IClutch.cs" />
<Compile Include="Models\SimulationComponent\IEngineOnlyDrivingCycle.cs" />
<Compile Include="Models\SimulationComponent\IDriverDemandDrivingCycle.cs" />
......
......@@ -79,8 +79,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
[TestMethod]
public void TestEngineOnly_MultipleJobs()
{
var resultFiles =
new[] { 1, 2, 3 }.Select(x => string.Format("TestEngineOnly-MultipleJobs-result{0}.vmod", x)).ToList();
var resultFiles = new[] { 1, 2, 3 }.Select(x => string.Format("TestEngineOnly-MultipleJobs-result{0}", x)).ToList();
var expectedResultsName = @"TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly short.vmod";
var expectedResults = ModalResults.ReadFromFile(expectedResultsName);
......@@ -89,6 +88,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
foreach (var resultFile in resultFiles) {
simulation.AddJob(CreateJob(resultFile));
}
resultFiles = resultFiles.Select(x => x + "_Coach Engine Only short.vmod").ToList();
simulation.RunJobs();
......@@ -106,31 +106,35 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
var jobContainer = new JobContainer(jobData);
jobContainer.RunJobs();
// compare results
var resultFiles = new[] { 1, 2, 3 }.Select(x => string.Format(@"24t Coach{0}.vmod", x)).ToList();
var expectedResultFiles =
new[] { 1, 2, 3 }.Select(x => string.Format(@"TestData\Results\EngineOnlyCycles\24t Coach_Engine Only{0}.vmod", x))
.ToList();
var sumFile = @"24t Coach.vsum";
var expectedSumFile = "24t Coach-expected.vsum";
Assert.IsTrue(File.Exists(sumFile), "sum file is missing: " + sumFile);
var resultFiles = expectedResultFiles.Select(x => Path.GetFileName(x));
//Assert.IsTrue(File.Exists(sumFile), "sum file is missing: " + sumFile);
foreach (var result in resultFiles) {
Assert.IsTrue(File.Exists(result), "vmod file is missing: " + result);
}
var expectedResultFiles =
resultFiles.Select(x => Path.GetFileNameWithoutExtension(x) + "-expected.vmod").GetEnumerator();
Assert.AreEqual(File.ReadAllLines(sumFile).Length, File.ReadAllLines(expectedSumFile).Length,
"sum file row count differs.");
//Assert.AreEqual(File.ReadAllLines(sumFile).Length, File.ReadAllLines(expectedSumFile).Length,
// "sum file row count differs.");
foreach (var resultFile in resultFiles) {
var results = ModalResults.ReadFromFile(resultFile);
expectedResultFiles.MoveNext();
var expectedResults = ModalResults.ReadFromFile(expectedResultFiles.Current);
var resultFileIt = resultFiles.GetEnumerator();
foreach (var expectedResultFile in expectedResultFiles) {
resultFileIt.MoveNext();
var results = ModalResults.ReadFromFile(resultFileIt.Current);
var expectedResults = ModalResults.ReadFromFile(expectedResultFile);
Assert.AreEqual(expectedResults.Rows.Count, results.Rows.Count, "Moddata: Row count differs.");
}
Assert.Inconclusive("compare correct filenames!!");
//todo compare sum file
Assert.Inconclusive("todo: compare sum file!!");
}
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
{
"Header": {
"CreatedBy": " ()",
"Date": "3/4/2015 2:09:13 PM",
"Date": "4/24/2015 11:11:45 AM",
"AppVersion": "2.0.4-beta3",
"FileVersion": 2
},
"Body": {
"SavedInDeclMode": false,
"VehicleFile": "../Components/24t Coach.vveh",
"EngineFile": "../Components/24t Coach.veng",
"GearboxFile": "../Components/24t Coach.vgbx",
"VehicleFile": "TestData/Components/24t Coach.vveh",
"EngineFile": "TestData/Components/24t Coach.veng",
"GearboxFile": "TestData/Components/24t Coach.vgbx",
"Cycles": [
"../Cycles/LOT2_rural Engine Only.vdri"
"TestData/Cycles/Engine Only1.vdri",
"TestData/Cycles/Engine Only2.vdri",
"TestData/Cycles/Engine Only3.vdri"
],
"Aux": [
{
"ID": "ALT1",
"Type": "Alternator",
"Path": "../Components/24t_Coach_ALT.vaux",
"Technology": ""
},
{
"ID": "ALT2",
"Type": "Alternator",
"Path": "../Components/24t_Coach_ALT.vaux",
"Technology": ""
},
{
"ID": "ALT3",
"Type": "Alternator",
"Path": "../Components/24t_Coach_ALT.vaux",
"Technology": ""
}
],
"VACC": "../Components/Coach.vacc",
"VACC": "TestData/Components/Coach.vacc",
"EngineOnlyMode": true,
"StartStop": {
"Enabled": false,
......
Job [-],Input File [-],Cycle [-],time [s],Ppos [kW],Pneg [kW],FC [g/h],FC-AUXc [g/h],FC-WHTCc [g/h]
1,24t Coach.vecto,Engine Only1.vdri,3951,29.5999634846317,-1.63579455196953,ERROR,-,-
1,24t Coach.vecto,Engine Only2.vdri,3951,29.5999634846317,-1.63579455196953,ERROR,-,-
1,24t Coach.vecto,Engine Only3.vdri,3951,29.5999634846317,-1.63579455196953,ERROR,-,-
{
"Header": {
"CreatedBy": " ()",
"Date": "4/24/2015 11:11:47 AM",
"AppVersion": "2.0.4-beta3",
"FileVersion": 1
},
"Body": {
"Settings": {
"Air Density [kg/m3]": 1.188,
"CO2/FC [-]": 3.16,
"Fuel Density [kg/l]": 0.832,
"Distance Correction": true
},
"Results": [
{
"Job": "24t Coach.vecto",
"Cycle": "Engine Only1.vdri",
"Loading": "User-defined Loading",
"AbortedByError": false,
"Results": {
"time": {
"Value": 3951,
"Unit": "[s]"
},
"Ppos": {
"Value": 29.599963484631711,
"Unit": "[kW]"
},
"Pneg": {
"Value": -1.6357945519695312,
"Unit": "[kW]"
},
"FC": {
"Value": "ERROR",
"Unit": "[g/h]"
},
"FC-AUXc": {
"Value": "-",
"Unit": "[g/h]"
},
"FC-WHTCc": {
"Value": "-",
"Unit": "[g/h]"
}
}
},
{
"Job": "24t Coach.vecto",
"Cycle": "Engine Only2.vdri",
"Loading": "User-defined Loading",
"AbortedByError": false,
"Results": {
"time": {
"Value": 3951,
"Unit": "[s]"
},
"Ppos": {
"Value": 29.599963484631711,
"Unit": "[kW]"
},
"Pneg": {
"Value": -1.6357945519695312,
"Unit": "[kW]"
},
"FC": {
"Value": "ERROR",
"Unit": "[g/h]"
},
"FC-AUXc": {
"Value": "-",
"Unit": "[g/h]"
},
"FC-WHTCc": {
"Value": "-",
"Unit": "[g/h]"
}
}
},
{
"Job": "24t Coach.vecto",
"Cycle": "Engine Only3.vdri",
"Loading": "User-defined Loading",
"AbortedByError": false,
"Results": {
"time": {
"Value": 3951,
"Unit": "[s]"
},
"Ppos": {
"Value": 29.599963484631711,
"Unit": "[kW]"
},
"Pneg": {
"Value": -1.6357945519695312,
"Unit": "[kW]"
},
"FC": {
"Value": "ERROR",
"Unit": "[g/h]"
},
"FC-AUXc": {
"Value": "-",
"Unit": "[g/h]"
},
"FC-WHTCc": {
"Value": "-",
"Unit": "[g/h]"
}
}
}
]
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -128,7 +128,9 @@
<None Include="TestData\Components\Retarder.vrlm">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Cycles\LOT2_rural Engine Only.vmod" />
<None Include="TestData\Cycles\LOT2_rural Engine Only.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Cycles\Coach Engine Only short.vdri">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
......@@ -159,7 +161,33 @@
<None Include="TestData\Cycles\Coach Engine Only.vdri">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Jobs\24t Coach.vecto" />
<None Include="TestData\Jobs\24t Coach.vecto">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Results\EngineOnlyCycles\24t Coach.vsum">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Results\EngineOnlyCycles\24t Coach.vsum.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Results\EngineOnlyCycles\24t Coach_Engine Only1.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Results\EngineOnlyCycles\24t Coach_Engine Only2.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Results\EngineOnlyCycles\24t Coach_Engine Only3.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Cycles\Engine Only1.vdri">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Cycles\Engine Only2.vdri">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Cycles\Engine Only3.vdri">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly short.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
......@@ -168,7 +196,9 @@
</None>
</ItemGroup>
<ItemGroup>
<None Include="TestData\Cycles\EngineOnly_FullLoad.vdri" />
<None Include="TestData\Cycles\EngineOnly_FullLoad.vdri">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
......
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