diff --git a/VectoCore/Models/SimulationComponent/Data/Engine/EngineFullLoadCurve.cs b/VectoCore/Models/SimulationComponent/Data/Engine/EngineFullLoadCurve.cs index 96f980beb78ebbbf2f05a6c47506e205972bddb5..af4de4c69d1bf3f2eb7b190bd2edad93bae6c590 100644 --- a/VectoCore/Models/SimulationComponent/Data/Engine/EngineFullLoadCurve.cs +++ b/VectoCore/Models/SimulationComponent/Data/Engine/EngineFullLoadCurve.cs @@ -195,7 +195,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine return retVal; } - private Watt ComputeArea(PerSecond lowEngineSpeed, PerSecond highEngineSpeed) + protected internal Watt ComputeArea(PerSecond lowEngineSpeed, PerSecond highEngineSpeed) { var startSegment = FindIndex(lowEngineSpeed); var endSegment = FindIndex(highEngineSpeed); diff --git a/VectoCoreTest/Models/SimulationComponentData/FullLoadCurveTest.cs b/VectoCoreTest/Models/SimulationComponentData/FullLoadCurveTest.cs index 26b0b545f8cdd976dc52fff8bbf3bb13efc95765..ab1b139af2de374d1ef2523c14b99882c5363761 100644 --- a/VectoCoreTest/Models/SimulationComponentData/FullLoadCurveTest.cs +++ b/VectoCoreTest/Models/SimulationComponentData/FullLoadCurveTest.cs @@ -115,6 +115,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData var fldCurve = EngineFullLoadCurve.ReadFromFile(CoachEngineFLD); fldCurve.EngineData = new CombustionEngineData { IdleSpeed = 560.RPMtoRad() }; AssertHelper.AreRelativeEqual(130.691151551712.SI<PerSecond>(), fldCurve.PreferredSpeed); + var totalArea = fldCurve.ComputeArea(fldCurve.EngineData.IdleSpeed, fldCurve.N95hSpeed); + Assert.AreEqual((0.51 * totalArea).Value(), + fldCurve.ComputeArea(fldCurve.EngineData.IdleSpeed, fldCurve.PreferredSpeed).Value(), 1E-3); AssertHelper.AreRelativeEqual(194.515816596908.SI<PerSecond>(), fldCurve.N95hSpeed); AssertHelper.AreRelativeEqual(94.2463966015023.SI<PerSecond>(), fldCurve.LoSpeed); AssertHelper.AreRelativeEqual(219.084329211505.SI<PerSecond>(), fldCurve.HiSpeed); @@ -122,6 +125,31 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData AssertHelper.AreRelativeEqual(-320.SI<NewtonMeter>(), fldCurve.MaxDragTorque); } + [TestMethod] + public void TestPreferredSpeed2() + { + var fldData = new[] { + "560,1180,-149,0.6", + "600,1282,-148,0.6", + "800,1791,-149,0.6", + "1000,2300,-160,0.6", + "1200,2400,-179,0.6", + "1400,2300,-203,0.6", + "1600,2079,-235,0.49", + "1800,1857,-264,0.25", + "2000,1352,-301,0.25", + "2100,1100,-320,0.25", + }; + 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() }; + + var totalArea = fldCurve.ComputeArea(fldCurve.EngineData.IdleSpeed, fldCurve.N95hSpeed); + 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>