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

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

reading engine only driving cycle

parent 9be9a4fc
No related branches found
No related tags found
No related merge requests found
......@@ -9,7 +9,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
{
public class FullLoadCurve
{
private DataTable data;
private DataTable _data;
public FullLoadCurve(string fileName)
{
......
using System.Collections.Generic;
using System.Data;
using System.IO;
namespace TUGraz.VectoCore.Models.SimulationComponent.Data
{
public enum EngineOnlyDrivingCycleFields
{
n,
Pe
}
public static class EngineOnlyDrivingCycle
{
public static DataTable getDataTable()
{
DataTable data = new DataTable();
data.Columns.Add(EngineOnlyDrivingCycleFields.n.ToString(), typeof(float));
data.Columns.Add(EngineOnlyDrivingCycleFields.Pe.ToString(), typeof(float));
return data;
}
public static DataTable read(string fileName)
{
var data = getDataTable();
var reader = new StreamReader(fileName);
// read header line
reader.ReadLine();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
data.Rows.Add(values);
}
return data;
}
}
}
......@@ -63,6 +63,7 @@
<Compile Include="Models\Connector\Ports\Impl\TnInPort.cs" />
<Compile Include="Models\Connector\Ports\Impl\TnOutPort.cs" />
<Compile Include="Models\Connector\Ports\ITnPort.cs" />
<Compile Include="Models\SimulationComponent\Data\EngineOnlyDrivingCycle.cs" />
<Compile Include="Models\SimulationComponent\Data\ModalResult.cs" />
<Compile Include="Models\SimulationComponent\Data\ModalResultFields.cs" />
<Compile Include="Models\SimulationComponent\Data\CombustionEngineData.cs" />
......
using System;
using System.Data;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TUGraz.VectoCore.Models.Connector.Ports;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
......@@ -11,9 +12,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
public class CombustionEngineTest
{
[TestMethod]
public void EngineHasOutPort()
public void TestEngineHasOutPort()
{
var engineData = new CombustionEngineData();
var engineData = new CombustionEngineData("24t Coach.veng");
var engine = new CombustionEngine(engineData);
var port = engine.OutPort();
......@@ -21,9 +22,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
}
[TestMethod]
public void OutPortRequestNotFailing()
public void TestOutPortRequestNotFailing()
{
var engineData = new CombustionEngineData();
var engineData = new CombustionEngineData("24t Coach.veng");
var engine = new CombustionEngine(engineData);
var port = (ITnOutPort)engine.OutPort();
......@@ -37,10 +38,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
}
[TestMethod]
public void SimpleModalData()
public void TestSimpleModalData()
{
//todo: choose correct combustion engine data
var engineData = new CombustionEngineData();
var engineData = new CombustionEngineData("24t Coach.veng");
var engine = new CombustionEngine(engineData);
var port = (ITnOutPort)engine.OutPort();
......@@ -63,32 +63,30 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
}
[TestMethod]
public void EngineOnlyDrivingCycle()
public void TestEngineOnlyDrivingCycle()
{
//todo: choose correct combustion engine data
var engineData = new CombustionEngineData("24t Coach.veng");
var engine = new CombustionEngine(engineData);
var port = (ITnOutPort)engine.OutPort();
//todo: read engine only input file
//todo: loop over all cycles
var data = EngineOnlyDrivingCycle.read("Coach Engine Only.vdri");
TimeSpan absTime = new TimeSpan(seconds: 0, minutes: 0, hours: 0);
TimeSpan dt = new TimeSpan(seconds: 1, minutes: 0, hours: 0);
const int torque = 400;
const int engineSpeed = 1500;
port.Request(absTime, dt, torque, engineSpeed);
TestDataWriter dataWriter = new TestDataWriter();
engine.CommitSimulationStep(dataWriter);
foreach (DataRow row in data.Rows)
{
float torque = (float)row[EngineOnlyDrivingCycleFields.Pe.ToString()];
float engineSpeed = (float)row[EngineOnlyDrivingCycleFields.n.ToString()];
port.Request(absTime, dt, torque, engineSpeed);
engine.CommitSimulationStep(dataWriter);
absTime += dt;
}
//todo: test with correct output values, add other fields to test
Assert.Equals(dataWriter[ModalResultFields.FC], 13000);
......
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