From 11470742c57b6d8b9fd47546d0f538388dd0a086 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Wed, 22 Mar 2017 15:49:04 +0100
Subject: [PATCH] simulate ems cycles only if sufficient engine power is
 available

---
 .../Reader/Impl/DeclarationModeVectoRunDataFactory.cs       | 6 +++++-
 VectoCore/VectoCore/Models/Declaration/DeclarationData.cs   | 3 +++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
index c02751a487..5a97451882 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
@@ -34,6 +34,7 @@ using System.Linq;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.InputData.Reader.ComponentData;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 using TUGraz.VectoCore.Models.Declaration;
@@ -91,8 +92,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 				};
 				Report.InitializeReport(powertrainConfig, segment);
 			}
-
+			var maxEnginePower = engineData.FullLoadCurve.FullLoadStationaryPower(engineData.FullLoadCurve.PreferredSpeed);
 			foreach (var mission in segment.Missions) {
+				if (mission.MissionType.IsEMS() && maxEnginePower.IsSmaller(DeclarationData.MinEnginePowerForEMS)) {
+					continue;
+				}
 				DrivingCycleData cycle;
 				lock (CyclesCacheLock) {
 					if (CyclesCache.ContainsKey(mission.MissionType)) {
diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
index f3ecfc262a..c695c436c3 100644
--- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
+++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
@@ -48,6 +48,8 @@ namespace TUGraz.VectoCore.Models.Declaration
 	{
 		public const string DeclarationDataResourcePrefix = "TUGraz.VectoCore.Resources.Declaration";
 
+		public static readonly Watt MinEnginePowerForEMS = 300e3.SI<Watt>();
+
 		private static DeclarationData _instance;
 		private Segments _segments;
 		private Wheels _wheels;
@@ -63,6 +65,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 		private Payloads _payloads;
 		private PTOTransmission _pto;
 
+		
 		public static PTOTransmission PTOTransmission
 		{
 			get { return Instance()._pto ?? (Instance()._pto = new PTOTransmission()); }
-- 
GitLab