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

Skip to content
Snippets Groups Projects
Commit 8ba8d3b5 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

Merge pull request #396 in VECTO/vecto-sim from...

Merge pull request #396 in VECTO/vecto-sim from ~EMQUARIMA/vecto-sim:bugfix/VECTO-475-error-in-shifting-behaior-with to develop

* commit 'daed679b':
  fix computation of rated speed & n95h, n70h, etc.
  add testcase for invalid FLD
parents d3f20e31 daed679b
No related branches found
No related tags found
No related merge requests found
......@@ -32,6 +32,7 @@
using System.Collections.Generic;
using System.Data;
using System.Linq;
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.Reader;
using TUGraz.VectoCore.Models.Declaration;
......@@ -94,12 +95,32 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
public PerSecond N80hSpeed
{
get { return _n80hSpeed ?? (_n80hSpeed = FindEngineSpeedForPower(0.8 * MaxPower).Last()); }
get {
if (_n80hSpeed != null) {
return _n80hSpeed;
}
_n80hSpeed = FindEngineSpeedForPower(0.8 * MaxPower).Last();
if (_n80hSpeed <= RatedSpeed) {
throw new VectoException("failed to compute N80h speed. Preferred speed: {0}, n80h speed: {1}", PreferredSpeed,
_n80hSpeed);
}
return _n80hSpeed;
}
}
public PerSecond N95hSpeed
{
get { return _n95hSpeed ?? (_n95hSpeed = FindEngineSpeedForPower(0.95 * MaxPower).Last()); }
get {
if (_n95hSpeed != null) {
return _n95hSpeed;
}
_n95hSpeed = FindEngineSpeedForPower(0.95 * MaxPower).Last();
if (_n95hSpeed <= RatedSpeed) {
throw new VectoException("failed to compute N95h speed. Preferred speed: {0}, n95h speed: {1}", PreferredSpeed,
_n95hSpeed);
}
return _n95hSpeed;
}
}
public PerSecond LoSpeed
......@@ -109,7 +130,17 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
public PerSecond HiSpeed
{
get { return _engineSpeedHi ?? (_engineSpeedHi = FindEngineSpeedForPower(0.7 * MaxPower).Last()); }
get {
if (_engineSpeedHi != null) {
return _engineSpeedHi;
}
_engineSpeedHi = FindEngineSpeedForPower(0.7 * MaxPower).Last();
if (_engineSpeedHi <= RatedSpeed) {
throw new VectoException("failed to compute n70h speed. Preferred speed: {0}, n70h speed: {1}", PreferredSpeed,
_engineSpeedHi);
}
return _engineSpeedHi;
}
}
public NewtonMeter MaxLoadTorque
......
......@@ -137,7 +137,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
}
var engineSpeedMaxPower = -d / (2 * k);
if (engineSpeedMaxPower.IsSmaller(p1.EngineSpeed) || engineSpeedMaxPower.IsGreater(p2.EngineSpeed)) {
if (k.IsGreater(0)) {
if (p2.TorqueFullLoad * p2.EngineSpeed > p1.TorqueFullLoad * p1.EngineSpeed) {
return Tuple.Create(p2.EngineSpeed, p2.TorqueFullLoad * p2.EngineSpeed);
}
return Tuple.Create(p1.EngineSpeed, p1.TorqueFullLoad * p1.EngineSpeed);
......
......@@ -154,6 +154,32 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
//AssertHelper.AreRelativeEqual(130.691151551712.SI<PerSecond>(), fldCurve.PreferredSpeed);
}
[TestMethod]
public void TestN95hSpeedInvalid()
{
var fldData = new[] {
"600,539.8228,-59.02274, 1.0",
"821,673.5694587,-62.77795, 1.0",
"1041,1102.461949,-68.37734, 1.0",
"1262,1112.899122,-76.0485, 1.0",
"1482,1098.632364,-85.00573, 1.0",
"1606,1093.403667,-90.9053, 1.0",
"1800,1058.081866,-100.937, 1.0",
"1995,992.0155535,-112.1166, 1.0",
"2189,926.7779212,-124.9432, 1.0",
"4000,811.7189964,-138.7132, 1.0",
};
var fldEntries = InputDataHelper.InputDataAsStream("n [U/min],Mfull [Nm],Mdrag [Nm],<PT1> [s] ", fldData);
var fldCurve = EngineFullLoadCurve.Create(VectoCSVFile.ReadStream(fldEntries));
fldCurve.EngineData = new CombustionEngineData { IdleSpeed = 560.RPMtoRad() };
AssertHelper.Exception<VectoException>(() => { var tmp = fldCurve.N95hSpeed; });
//var totalArea = fldCurve.ComputeArea(fldCurve.EngineData.IdleSpeed, );
//Assert.AreEqual((0.51 * totalArea).Value(),
// fldCurve.ComputeArea(fldCurve.EngineData.IdleSpeed, fldCurve.PreferredSpeed).Value(), 1E-3);
//AssertHelper.AreRelativeEqual(130.691151551712.SI<PerSecond>(), fldCurve.PreferredSpeed);
}
/// <summary>
/// [VECTO-78]
/// </summary>
......
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