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

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

V79 structurally finished. Still some changes needed (which fields in...

V79 structurally finished. Still some changes needed (which fields in engineonly mode, correct calculation of the 3second average in sum file).
parent 112ea3a0
No related branches found
No related tags found
No related merge requests found
Showing
with 49 additions and 41 deletions
......@@ -2,7 +2,18 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
{
public interface ISummaryDataWriter
{
/// <summary>
/// Writes a single sum entry for the given modaldata of the job.
/// </summary>
/// <param name="data">The modal data.</param>
/// <param name="jobFileName">Name of the job file.</param>
/// <param name="jobName">Name of the job.</param>
/// <param name="cycleFileName">Name of the cycle file.</param>
void Write(IModalDataWriter data, string jobFileName, string jobName, string cycleFileName);
/// <summary>
/// Writes the data to the sum file.
/// </summary>
void Finish();
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using TUGraz.VectoCore.Utils;
......@@ -133,10 +132,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
}
}
row["pStop [%]"] = 100.0 * timeSum / (double)data.Compute("Max(time)", "");
_table.ImportRow(row);
_table.Rows.Add(row);
}
public void Finish()
......
using System.Collections.Generic;
using System.IO;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.SimulationComponent;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
......@@ -29,7 +30,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
for (var i = 0; i < data.Cycles.Count; i++) {
var cycleFile = data.Cycles[i];
var jobName = string.Format("{0}-{1}", jobNumber, i);
var modFileName = string.Format("{0}_{1}.vmod", data.JobFileName, cycleFile);
var modFileName = string.Format("{0}_{1}.vmod", Path.GetFileNameWithoutExtension(data.JobFileName),
Path.GetFileNameWithoutExtension(cycleFile));
_dataWriter = new ModalDataWriter(modFileName);
var builder = new SimulatorBuilder(_dataWriter, sumWriter, data.JobFileName, jobName, cycleFile, data.IsEngineOnly);
......
......@@ -198,7 +198,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
// y = kx + d
var k = (p2.TorqueFullLoad - p1.TorqueFullLoad) / (p2.EngineSpeed - p1.EngineSpeed);
var d = p2.TorqueFullLoad - k * p2.EngineSpeed;
if (k == 0.0.SI()) {
if (k == 0.SI()) {
return new Tuple<PerSecond, Watt>(p2.EngineSpeed, Formulas.TorqueToPower(p2.TorqueFullLoad, p2.EngineSpeed));
}
var engineSpeedMaxPower = (-1 * d / (2 * k)).Cast<PerSecond>();
......
......@@ -60,7 +60,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
if (Cockpit.Gear() == 0) {
_clutchState = ClutchState.ClutchOpened;
engineSpeedIn = _idleSpeed;
torqueIn = 0.0.SI<NewtonMeter>();
torqueIn = 0.SI<NewtonMeter>();
} else {
var engineSpeedNorm = (angularVelocity - _idleSpeed) /
(_ratedSpeed - _idleSpeed);
......
......@@ -266,7 +266,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
protected Watt InertiaPowerLoss(NewtonMeter torque, PerSecond angularVelocity)
{
var deltaEngineSpeed = angularVelocity - _previousState.EngineSpeed;
var avgEngineSpeed = (_previousState.EngineSpeed + angularVelocity) / 2.0.SI<Second>();
var avgEngineSpeed = (_previousState.EngineSpeed + angularVelocity) / 2.SI<Second>();
var result = _data.Inertia * deltaEngineSpeed * avgEngineSpeed;
return result.Cast<Watt>();
}
......
......@@ -41,7 +41,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
Assert.AreEqual(absTime, outPort.AbsTime);
Assert.AreEqual(dt, outPort.Dt);
Assert.AreEqual(600.0.RPMtoRad(), outPort.AngularVelocity);
Assert.AreEqual(600.RPMtoRad(), outPort.AngularVelocity);
Assert.AreEqual(0.SI<NewtonMeter>(), outPort.Torque);
}
......@@ -68,7 +68,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
Assert.AreEqual(absTime, outPort.AbsTime);
Assert.AreEqual(dt, outPort.Dt);
Assert.AreEqual(0.0.SI<MeterPerSecond>(), outPort.Velocity);
Assert.AreEqual(0.SI<MeterPerSecond>(), outPort.Velocity);
Assert.AreEqual((-0.020237973).SI().GradientPercent.Cast<Radian>(), outPort.Gradient);
}
......
......@@ -23,7 +23,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
var container = job.GetContainer();
Assert.AreEqual(560.0.RPMtoRad(), container.EngineSpeed());
Assert.AreEqual(560.RPMtoRad(), container.EngineSpeed());
Assert.AreEqual(0U, container.Gear());
try {
......@@ -133,7 +133,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
};
var expectedSumFile = @"TestData\Results\EngineOnlyCycles\24t Coach.vsum";
var sumFile = @"24t Coach.vsum";
var sumFile = @"TestData\Jobs\24t Coach.vsum";
var resultFiles = expectedResultFiles.Select(x => Path.GetFileName(x));
Assert.IsTrue(File.Exists(sumFile), "sum file is missing: " + sumFile);
......@@ -141,8 +141,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
Assert.IsTrue(File.Exists(result), "vmod file is missing: " + result);
}
//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.");
var resultFileIt = resultFiles.GetEnumerator();
......@@ -153,9 +153,6 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
Assert.AreEqual(expectedResults.Rows.Count, results.Rows.Count, "Moddata: Row count differs.");
}
//todo compare sum file
Assert.Inconclusive("todo: compare sum file!!");
}
}
}
\ No newline at end of file
......@@ -68,7 +68,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var absTime = new TimeSpan(seconds: 0, minutes: 0, hours: 0);
var dt = new TimeSpan(seconds: 1, minutes: 0, hours: 0);
var torque = 400.SI<NewtonMeter>();
var engineSpeed = 1500.0.RPMtoRad();
var engineSpeed = 1500.RPMtoRad();
port.Request(absTime, dt, torque, engineSpeed);
}
......@@ -86,7 +86,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var dt = new TimeSpan(seconds: 1, minutes: 0, hours: 0);
var torque = 0.SI<NewtonMeter>();
var engineSpeed = 600.0.RPMtoRad();
var engineSpeed = 600.RPMtoRad();
var dataWriter = new TestModalDataWriter();
for (var i = 0; i < 21; i++) {
......
......@@ -16,9 +16,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
{
var fldCurve = FullLoadCurve.ReadFromFile(CoachEngineFLD);
Assert.AreEqual(1180, (double) fldCurve.FullLoadStationaryTorque(560.0.RPMtoRad()), Tolerance);
Assert.AreEqual(1352, (double) fldCurve.FullLoadStationaryTorque(2000.0.RPMtoRad()), Tolerance);
Assert.AreEqual(1231, (double) fldCurve.FullLoadStationaryTorque(580.0.RPMtoRad()), Tolerance);
Assert.AreEqual(1180, (double) fldCurve.FullLoadStationaryTorque(560.RPMtoRad()), Tolerance);
Assert.AreEqual(1352, (double) fldCurve.FullLoadStationaryTorque(2000.RPMtoRad()), Tolerance);
Assert.AreEqual(1231, (double) fldCurve.FullLoadStationaryTorque(580.RPMtoRad()), Tolerance);
}
[TestMethod]
......@@ -33,9 +33,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
{
var fldCurve = FullLoadCurve.ReadFromFile(CoachEngineFLD);
Assert.AreEqual(69198.814183, (double) fldCurve.FullLoadStationaryPower(560.0.RPMtoRad()), Tolerance);
Assert.AreEqual(283162.218372, (double) fldCurve.FullLoadStationaryPower(2000.0.RPMtoRad()), Tolerance);
Assert.AreEqual(74767.810760, (double) fldCurve.FullLoadStationaryPower(580.0.RPMtoRad()), Tolerance);
Assert.AreEqual(69198.814183, (double) fldCurve.FullLoadStationaryPower(560.RPMtoRad()), Tolerance);
Assert.AreEqual(283162.218372, (double) fldCurve.FullLoadStationaryPower(2000.RPMtoRad()), Tolerance);
Assert.AreEqual(74767.810760, (double) fldCurve.FullLoadStationaryPower(580.RPMtoRad()), Tolerance);
}
[TestMethod]
......@@ -43,11 +43,11 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
{
var fldCurve = FullLoadCurve.ReadFromFile(CoachEngineFLD);
Assert.AreEqual(-149, (double) fldCurve.DragLoadStationaryTorque(560.0.RPMtoRad()), Tolerance);
Assert.AreEqual(-301, (double) fldCurve.DragLoadStationaryTorque(2000.0.RPMtoRad()), Tolerance);
Assert.AreEqual(-148.5, (double) fldCurve.DragLoadStationaryTorque(580.0.RPMtoRad()), Tolerance);
Assert.AreEqual(-150, (double) fldCurve.DragLoadStationaryTorque(520.0.RPMtoRad()), Tolerance);
Assert.AreEqual(-339, (double) fldCurve.DragLoadStationaryTorque(2200.0.RPMtoRad()), Tolerance);
Assert.AreEqual(-149, (double) fldCurve.DragLoadStationaryTorque(560.RPMtoRad()), Tolerance);
Assert.AreEqual(-301, (double) fldCurve.DragLoadStationaryTorque(2000.RPMtoRad()), Tolerance);
Assert.AreEqual(-148.5, (double) fldCurve.DragLoadStationaryTorque(580.RPMtoRad()), Tolerance);
Assert.AreEqual(-150, (double) fldCurve.DragLoadStationaryTorque(520.RPMtoRad()), Tolerance);
Assert.AreEqual(-339, (double) fldCurve.DragLoadStationaryTorque(2200.RPMtoRad()), Tolerance);
}
[TestMethod]
......@@ -55,9 +55,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
{
var fldCurve = FullLoadCurve.ReadFromFile(CoachEngineFLD);
Assert.AreEqual(-8737.81636, (double) fldCurve.DragLoadStationaryPower(560.0.RPMtoRad()), Tolerance);
Assert.AreEqual(-63041.29254, (double) fldCurve.DragLoadStationaryPower(2000.0.RPMtoRad()), Tolerance);
Assert.AreEqual(-9019.51251, (double) fldCurve.DragLoadStationaryPower(580.0.RPMtoRad()), Tolerance);
Assert.AreEqual(-8737.81636, (double) fldCurve.DragLoadStationaryPower(560.RPMtoRad()), Tolerance);
Assert.AreEqual(-63041.29254, (double) fldCurve.DragLoadStationaryPower(2000.RPMtoRad()), Tolerance);
Assert.AreEqual(-9019.51251, (double) fldCurve.DragLoadStationaryPower(580.RPMtoRad()), Tolerance);
}
[TestMethod]
......@@ -65,9 +65,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
{
var fldCurve = FullLoadCurve.ReadFromFile(CoachEngineFLD);
Assert.AreEqual(0.6, (double) fldCurve.PT1(560.0.RPMtoRad()), Tolerance);
Assert.AreEqual(0.25, (double) fldCurve.PT1(2000.0.RPMtoRad()), Tolerance);
Assert.AreEqual(0.37, (double) fldCurve.PT1(1700.0.RPMtoRad()), Tolerance);
Assert.AreEqual(0.6, (double) fldCurve.PT1(560.RPMtoRad()), Tolerance);
Assert.AreEqual(0.25, (double) fldCurve.PT1(2000.RPMtoRad()), Tolerance);
Assert.AreEqual(0.37, (double) fldCurve.PT1(1700.RPMtoRad()), Tolerance);
}
/// <summary>
......
......@@ -10,12 +10,12 @@ namespace TUGraz.VectoCore.Tests.Utils
[TestMethod]
public void DoubleExtensions_SI()
{
var val = 600.0.RPMtoRad();
var val = 600.RPMtoRad();
Assert.AreEqual(600 / 60 * 2 * Math.PI, val.Double());
Assert.IsTrue(0.0.SI<PerSecond>().HasEqualUnit(val));
Assert.IsTrue(0.SI<PerSecond>().HasEqualUnit(val));
var val2 = 1200.0.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>();
var val2 = 1200.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>();
val = val * 2;
Assert.AreEqual(val, val2);
......
......@@ -105,7 +105,7 @@ namespace TUGraz.VectoCore.Tests.Utils
Assert.AreEqual("0 [-]", si.ToString());
Assert.IsTrue(si.HasEqualUnit(new SI()));
var si2 = 5.0.SI().Watt;
var si2 = 5.SI().Watt;
Assert.AreEqual("5 [W]", si2.ToString());
var si3 = 2.SI().Radian.Per.Second;
......@@ -117,7 +117,7 @@ namespace TUGraz.VectoCore.Tests.Utils
Assert.AreEqual("10 [kgmm/ssss]", si4.ToBasicUnits().ToString());
var kg = 5.0.SI().Kilo.Gramm;
var kg = 5.SI().Kilo.Gramm;
Assert.AreEqual(5.0, kg.Double());
Assert.AreEqual("5 [kg]", kg.ToString());
......
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