Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

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

Merge remote-tracking branch 'ivt/Private/EngineFullLoadCurveEval' into...

Merge remote-tracking branch 'ivt/Private/EngineFullLoadCurveEval' into feature/VECTO-194-performance

Conflicts:
	VectoCore/VectoCoreTest/VectoCoreTest.csproj
parents e4ed2743 03929b8b
No related branches found
No related tags found
No related merge requests found
......@@ -51,6 +51,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
[Required, ValidateObject] internal List<FullLoadCurveEntry> FullLoadEntries;
private SortedList<PerSecond, int> _quickLookup;
[Required] internal LookupData<PerSecond, Second> PT1Data;
/// <summary>
......@@ -223,7 +225,22 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
if (angularVelocity > FullLoadEntries.Last().EngineSpeed) {
return FullLoadEntries.Count - 1;
}
for (var index = 1; index < FullLoadEntries.Count; index++) {
if (_quickLookup == null) {
_quickLookup = new SortedList<PerSecond, int>();
var i = 10;
for (; i < FullLoadEntries.Count; i += 10) {
_quickLookup.Add(FullLoadEntries[i].EngineSpeed, Math.Max(1, i - 10));
}
_quickLookup.Add(FullLoadEntries.Last().EngineSpeed + 0.1.SI<PerSecond>(), Math.Max(1, i - 10));
}
var start = 1;
foreach (var lookup in _quickLookup.Where(lookup => angularVelocity < lookup.Key)) {
start = lookup.Value;
break;
}
for (var index = start; index < FullLoadEntries.Count; index++) {
if (angularVelocity >= FullLoadEntries[index - 1].EngineSpeed &&
angularVelocity <= FullLoadEntries[index].EngineSpeed) {
return index;
......
using System;
using System.Diagnostics;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
namespace TUGraz.VectoCore.Tests.Dummy
{
[TestClass]
public class EngineFLDTest
{
[TestMethod]
public void CompareFLDLookupPerformance()
{
var engineFile1 = @"TestData\Components\40t_Long_Haul_Truck.vfld";
var engineFile2 = @"E:\QUAM\Downloads\EngineFLD\Map_375c_BB1390_modTUG_R49_375c_BB1386.vfld";
var map1 = EngineFullLoadCurve.ReadFromFile(engineFile1, true);
var map2 = EngineFullLoadCurve.ReadFromFile(engineFile2, true);
map1.FullLoadStationaryTorque(1000.RPMtoRad());
map2.FullLoadStationaryTorque(1000.RPMtoRad());
foreach (var map in new[] { map1, map2 }) {
var rand = new Random();
var stopWatch = Stopwatch.StartNew();
for (var i = 0; i < 500000; i++) {
var angularVelocity = rand.Next(1000, 1400).RPMtoRad();
var tqMax = map.FullLoadStationaryTorque(angularVelocity);
}
stopWatch.Stop();
Debug.Print("{0}", stopWatch.ElapsedMilliseconds);
}
}
[TestMethod]
public void LookupTest()
{
var engineFile2 = @"E:\QUAM\Downloads\EngineFLD\Map_375c_BB1390_modTUG_R49_375c_BB1386.vfld";
var map = EngineFullLoadCurve.ReadFromFile(engineFile2, true);
Assert.AreEqual(1208, map.FullLoadStationaryTorque(500.RPMtoRad()).Value(), 1e-3);
Assert.AreEqual(27, map.FullLoadStationaryTorque(2202.RPMtoRad()).Value(), 1e-3);
Assert.AreEqual(2341.5714, map.FullLoadStationaryTorque(1500.RPMtoRad()).Value(), 1e-3);
Assert.AreEqual(376.7142, map.FullLoadStationaryTorque(2175.RPMtoRad()).Value(), 1e-3);
Assert.AreEqual(1544, map.FullLoadStationaryTorque(628.RPMtoRad()).Value(), 1e-3);
}
}
}
\ No newline at end of file
......@@ -48,8 +48,9 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\packages\NLog.4.2.3\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="nunit.framework">
<HintPath>..\..\packages\NUnit.2.6.2\lib\nunit.framework.dll</HintPath>
<Reference Include="nunit.framework, Version=2.6.2.12296, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
......@@ -73,6 +74,7 @@
</Otherwise>
</Choose>
<ItemGroup>
<Compile Include="Dummy\EngineFLDTest.cs" />
<Compile Include="Exceptions\ExceptionTests.cs" />
<Compile Include="FileIO\JsonTest.cs" />
<Compile Include="FileIO\SimulationDataReaderTest.cs" />
......@@ -452,69 +454,6 @@
<None Include="TestData\Integration\BusAuxiliaries\testPneumaticActuationsMap.APAC">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck.pdf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck.vecto">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck.veng">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck.vfld">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck.vgbx">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck.vmap">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck.vsum">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck.vsum.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck.vveh">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck_LongHaulEmptyLoading.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck_LongHaulFullLoading.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck_LongHaulReferenceLoad.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck_RegionalDeliveryEmptyLoading.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck_RegionalDeliveryFullLoading.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck_RegionalDeliveryReferenceLoad.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck_UrbanDeliveryEmptyLoading.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck_UrbanDeliveryFullLoading.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\12t Delivery Truck_UrbanDeliveryReferenceLoad.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\Axle.vtlm">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\Direct Gear.vtlm">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\12t Truck\Indirect Gear.vtlm">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\40t Truck\40t_Long_Haul_Truck.pdf" />
<None Include="TestData\Integration\DeclarationMode\40t Truck\40t_Long_Haul_Truck.vecto">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
......@@ -664,17 +603,11 @@
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_downhill_25.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_downhill_5.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_level.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_uphill_15.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_uphill_5.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_downhill_15.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_downhill_25.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_downhill_5.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_level.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_steep_uphill_20.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_uphill_15.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_uphill_3.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_uphill_5.vmod" />
......@@ -770,17 +703,11 @@
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_downhill_25.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_downhill_5.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_level.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_uphill_15.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_uphill_5.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_downhill_15.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_downhill_25.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_downhill_5.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_level.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_steep_uphill_25.vmod">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_uphill_15.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_uphill_3.vmod" />
<None Include="TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_uphill_5.vmod" />
......@@ -1331,7 +1258,6 @@
</None>
</ItemGroup>
<ItemGroup>
<Folder Include="Dummy\" />
<Folder Include="Integration\FullPowertrain\" />
<Folder Include="Models\DeclarationData\" />
</ItemGroup>
......
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