From 4e6a285b9d6879400e765389d7a1d664573fdb8c Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Wed, 20 Jul 2016 09:07:56 +0200
Subject: [PATCH] create aux component for constant aux demand

---
 .../EngineeringDataAdapter.cs                 | 51 +++++++++++++------
 1 file changed, 36 insertions(+), 15 deletions(-)

diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
index 8fbeb94159..cfae4d0db7 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
@@ -36,6 +36,7 @@ using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.InputData.Reader.DataObjectAdaper;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
@@ -44,7 +45,7 @@ using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
 using TUGraz.VectoCore.OutputData;
 using DriverData = TUGraz.VectoCore.Models.SimulationComponent.Data.DriverData;
 
-namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdaper
+namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 {
 	public class EngineeringDataAdapter : AbstractSimulationDataAdapter
 	{
@@ -180,25 +181,45 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdaper
 			if (auxInputData.SavedInDeclarationMode) {
 				WarnEngineeringMode("AuxData");
 			}
-
 			return auxInputData.Auxiliaries.Select(a => {
-				if (a.DemandMap == null) {
-					throw new VectoSimulationException("Demand Map for auxiliary {0} {1} required", a.ID, a.Technology);
-				}
-				if (a.DemandMap.Columns.Count != 3 || a.DemandMap.Rows.Count < 4) {
-					throw new VectoSimulationException(
-						"Demand Map for auxiliary {0} {1} has to contain exactly 3 columns and at least 4 rows", a.ID, a.Technology);
+				switch (a.AuxiliaryType) {
+					case AuxiliaryDemandType.Mapping:
+						return CreateMappingAuxiliary(a);
+					case AuxiliaryDemandType.Constant:
+						return CreateConstantAuxiliary(a);
+					default:
+						throw new VectoException("Auxiliary type {0} not supported!", a.AuxiliaryType);
 				}
-				return new VectoRunData.AuxData {
-					ID = a.ID,
-					Technology = a.Technology,
-					TechList = a.TechList.DefaultIfNull(Enumerable.Empty<string>()).ToArray(),
-					DemandType = AuxiliaryDemandType.Mapping,
-					Data = new AuxiliaryData(a, a.ID) //AuxiliaryData.Create(a.DemandMap)
-				};
 			}).Concat(new VectoRunData.AuxData { ID = "", DemandType = AuxiliaryDemandType.Direct }.ToEnumerable()).ToList();
 		}
 
+		private static VectoRunData.AuxData CreateMappingAuxiliary(IAuxiliaryEngineeringInputData a)
+		{
+			if (a.DemandMap == null) {
+				throw new VectoSimulationException("Demand Map for auxiliary {0} {1} required", a.ID, a.Technology);
+			}
+			if (a.DemandMap.Columns.Count != 3 || a.DemandMap.Rows.Count < 4) {
+				throw new VectoSimulationException(
+					"Demand Map for auxiliary {0} {1} has to contain exactly 3 columns and at least 4 rows", a.ID, a.Technology);
+			}
+			return new VectoRunData.AuxData {
+				ID = a.ID,
+				Technology = a.Technology,
+				TechList = a.TechList.DefaultIfNull(Enumerable.Empty<string>()).ToArray(),
+				DemandType = AuxiliaryDemandType.Mapping,
+				Data = new AuxiliaryData(a, a.ID) //AuxiliaryData.Create(a.DemandMap)
+			};
+		}
+
+		private static VectoRunData.AuxData CreateConstantAuxiliary(IAuxiliaryEngineeringInputData a)
+		{
+			return new VectoRunData.AuxData {
+				ID = a.ID,
+				DemandType = AuxiliaryDemandType.Constant,
+				PowerDemand = a.ConstantPowerDemand
+			};
+		}
+
 		internal DriverData CreateDriverData(IDriverEngineeringInputData driver)
 		{
 			if (driver.SavedInDeclarationMode) {
-- 
GitLab