From 4d6b70888474bd22d039d90739a4e5c2d5d93e6e Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Thu, 2 Apr 2020 11:09:17 +0200
Subject: [PATCH] added technology info for bus aux  (ES, HVAC, PS); move door
 drive technology from aux to vehicle

---
 VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb |  2 +-
 VECTO/Input Files/Engine.vb                   |  1 +
 VECTO/Input Files/Gearbox.vb                  |  1 +
 VECTO/Input Files/MockVehicleInputData.vb     |  1 +
 VECTO/Input Files/Vehicle.vb                  |  1 +
 .../Mocks/AlternatorMapMock.vb                |  6 +++++
 .../Mocks/CompressorMapMock.vb                |  6 +++++
 .../AveragePneumaticLoadDemandTests.vb        | 22 +++++++++----------
 .../UnitTests/CompressorMapTests.vb           | 20 ++++++++---------
 .../BusHVACSystemConfiguration.cs             |  9 ++++++++
 .../BusAuxiliaries/IAlternatorMap.cs          |  3 +++
 .../BusAuxiliaries/ICompressorMap.cs          |  2 ++
 .../VectoCommon/BusAuxiliaries/ISSMInputs.cs  |  9 +++++++-
 .../InputData/DeclarationInputData.cs         |  3 ++-
 .../FileIO/JSON/BusAuxiliaryInputData.cs      |  2 +-
 .../FileIO/JSON/JSONComponentInputData.cs     |  4 ++++
 .../InputData/FileIO/JSON/JSONVehicleData.cs  |  3 +--
 ...MLDeclarationBusAuxiliariesDataProvider.cs |  8 -------
 .../XMLDeclarationVehicleDataProvider.cs      | 11 ++++++++--
 .../XMLEngineeringVehicleDataProvider.cs      |  1 +
 .../ComponentData/CompressorMapReader.cs      |  8 +++----
 .../DeclarationDataAdapterPrimaryBus.cs       |  5 +++--
 .../DeclarationDataAdapterSingleBus.cs        |  2 +-
 .../Impl/Electrics/AlternatorMap.cs           |  8 ++++++-
 .../Impl/Electrics/CombinedAlternator.cs      |  7 ++++++
 .../Impl/Electrics/SimpleAlternator.cs        |  2 ++
 .../DownstreamModules/Impl/HVAC/SSMInputs.cs  |  1 +
 .../Impl/Pneumatics/CompressorMap.cs          |  6 ++++-
 .../OutputData/SummaryDataContainer.cs        | 12 ++++++++--
 .../Utils/MockDeclarationVehicleInputData.cs  |  2 ++
 30 files changed, 120 insertions(+), 48 deletions(-)

diff --git a/VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb b/VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb
index da243091fc..404ba55f17 100644
--- a/VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb
+++ b/VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb
@@ -298,7 +298,7 @@ Public Class frmAuxiliaryConfig
         Dim comp As ICompressorMap
         Try
 
-            comp = CompressorMapReader.ReadFile(FilePathUtils.ResolveFilePath(aauxPath, txtCompressorMap.Text), 1.0)
+            comp = CompressorMapReader.ReadFile(FilePathUtils.ResolveFilePath(aauxPath, txtCompressorMap.Text), 1.0, "")
             'comp.Initialise()
             ErrorProvider.SetError(txtCompressorMap, String.Empty)
         Catch ex As Exception
diff --git a/VECTO/Input Files/Engine.vb b/VECTO/Input Files/Engine.vb
index 8e87c3b3a6..9c94817eec 100644
--- a/VECTO/Input Files/Engine.vb	
+++ b/VECTO/Input Files/Engine.vb	
@@ -657,6 +657,7 @@ Public Class DummyVehicle
     Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length
     Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width
     Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight
+    Public ReadOnly Property DoorDriveTechnology As ConsumerTechnology Implements IVehicleDeclarationInputData.DoorDriveTechnology
 
     Public readonly Property Components As IVehicleComponentsDeclaration Implements IVehicleDeclarationInputData.Components
 	get
diff --git a/VECTO/Input Files/Gearbox.vb b/VECTO/Input Files/Gearbox.vb
index 771b29b61e..1814870345 100644
--- a/VECTO/Input Files/Gearbox.vb	
+++ b/VECTO/Input Files/Gearbox.vb	
@@ -845,6 +845,7 @@ Public Class MockEngineeringVehicle
     Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length
     Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width
     Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight
+    Public ReadOnly Property DoorDriveTechnology As ConsumerTechnology Implements IVehicleDeclarationInputData.DoorDriveTechnology
     Public Property Components As IVehicleComponentsDeclaration Implements IVehicleDeclarationInputData.Components
     Public ReadOnly Property XMLSource As XmlNode Implements IVehicleDeclarationInputData.XMLSource
 
diff --git a/VECTO/Input Files/MockVehicleInputData.vb b/VECTO/Input Files/MockVehicleInputData.vb
index 1cca56259f..701d1c3d8c 100644
--- a/VECTO/Input Files/MockVehicleInputData.vb	
+++ b/VECTO/Input Files/MockVehicleInputData.vb	
@@ -49,6 +49,7 @@ Public Class MockVehicleInputData
     Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length
     Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width
     Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight
+    Public ReadOnly Property DoorDriveTechnology As ConsumerTechnology Implements IVehicleDeclarationInputData.DoorDriveTechnology
     Public Property Components As IVehicleComponentsDeclaration Implements IVehicleDeclarationInputData.Components
     Public ReadOnly Property XMLSource As XmlNode Implements IVehicleDeclarationInputData.XMLSource
 End Class
\ No newline at end of file
diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb
index 828418783b..f828420273 100644
--- a/VECTO/Input Files/Vehicle.vb	
+++ b/VECTO/Input Files/Vehicle.vb	
@@ -427,6 +427,7 @@ Public Class Vehicle
     Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length
     Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width
     Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight
+    Public ReadOnly Property DoorDriveTechnology As ConsumerTechnology Implements IVehicleDeclarationInputData.DoorDriveTechnology
 
     Public ReadOnly Property IVehicleEngineeringInputData_Components As IVehicleComponentsEngineering Implements IVehicleEngineeringInputData.Components
 	get
diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/AlternatorMapMock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/AlternatorMapMock.vb
index 9742a349e1..dfa0194b82 100644
--- a/VECTOAux/VectoAuxiliariesTests/Mocks/AlternatorMapMock.vb
+++ b/VECTOAux/VectoAuxiliariesTests/Mocks/AlternatorMapMock.vb
@@ -21,6 +21,12 @@ Namespace Mocks
 			Return 0.0
 		End Function
 
+        Public ReadOnly Property Technologies As IList(Of String) Implements IAlternatorMap.Technologies
+        get
+                Return New List(Of string)
+        End Get
+        End Property
+
         public ReadOnly property Source As String Implements IAlternatorMap.Source
         get
             Return ""
diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb
index 03ce403cbe..ad762131d3 100644
--- a/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb
+++ b/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb
@@ -27,6 +27,12 @@ Namespace Mocks
             Return 0.01.SI(Unit.SI.Watt.Per.Liter.Per.Hour).Cast (Of JoulePerNormLiter)
         End Function
 
+        Public ReadOnly Property Technology As String Implements ICompressorMap.Technology
+        get
+                Return ""
+        End Get
+        End Property
+
         Public readonly property Source As String Implements ICompressorMap.Source
             get
                 return ""
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb
index 49bcc5ba19..baa50fd3d7 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb
@@ -73,7 +73,7 @@ Namespace UnitTests
 
             Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
                                         
-            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0)
+            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "")
                                         
 
             Dim auxCfg = Utils.GetAuxTestConfig()
@@ -93,7 +93,7 @@ Namespace UnitTests
             initialise()
 
             Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
-            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0)
+            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "")
                                        
 
             'psCompressorMap.Initialise()
@@ -117,7 +117,7 @@ Namespace UnitTests
             initialise()
 
             Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
-            Dim psCompressorMap =CompressorMapReader.ReadFile(_compressorMapPath, 1.0)
+            Dim psCompressorMap =CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "")
                        
 
             'psCompressorMap.Initialise()
@@ -144,7 +144,7 @@ Namespace UnitTests
             _defaultInputConfig.CompressorGearEfficiency = 0.8
 
             Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
-            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0)
+            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "")
                                         
 
             'psCompressorMap.Initialise()
@@ -166,7 +166,7 @@ Namespace UnitTests
             initialise()
 
             Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
-            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0)
+            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "")
                                         
 
             'psCompressorMap.Initialise()
@@ -195,7 +195,7 @@ Namespace UnitTests
             _defaultInputConfig.SmartRegeneration = False
 
             Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
-            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0)
+            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "")
                                        
 
             'psCompressorMap.Initialise()
@@ -222,7 +222,7 @@ Namespace UnitTests
             '_defaultInputConfig.RetarderBrake = False
            
             Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.None)
-            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0)
+            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "")
                                        
 
             'psCompressorMap.Initialise()
@@ -250,7 +250,7 @@ Namespace UnitTests
             _defaultInputConfig.KneelingHeight = 100.SI(Unit.si.Milli.Meter).Cast (Of Meter)
 
             Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
-            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0)
+            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "")
                                        
 
             'psCompressorMap.Initialise()
@@ -275,7 +275,7 @@ Namespace UnitTests
             _defaultInputConfig.AirSuspensionControl = ConsumerTechnology.Mechanically
 
             Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
-            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0)
+            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "")
                                         
 
             'psCompressorMap.Initialise()
@@ -302,7 +302,7 @@ Namespace UnitTests
             _defaultInputConfig.AdBlueDosing = ConsumerTechnology.Pneumatically
 
             Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
-            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0)
+            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "")
                                         
 
             'psCompressorMap.Initialise()
@@ -329,7 +329,7 @@ Namespace UnitTests
             _defaultInputConfig.Doors = ConsumerTechnology.Electrically
 
             Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission)
-            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0)
+            Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "")
 
             Dim auxConfig As IAuxiliaryConfig = GetAuxConfig(psAuxConfig)
 
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/CompressorMapTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/CompressorMapTests.vb
index dd6ad116e5..f2a8cdc1af 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/CompressorMapTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/CompressorMapTests.vb
@@ -23,7 +23,7 @@ Namespace UnitTests
 
         Private Function GetInitialiseMap() As ICompressorMap
             Dim path As String = GOODMAP
-            Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0)
+            Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0, "")
             'target.Initialise()
             Return target
         End Function
@@ -39,7 +39,7 @@ Namespace UnitTests
         Public Sub CreateNewCompressorMapInstanceTest()
             Dim pat As String = "test"
             Assert.That(Sub()
-                Dim target As ICompressorMap = CompressorMapReader.ReadFile(pat, 1.0)
+                Dim target As ICompressorMap = CompressorMapReader.ReadFile(pat, 1.0, "")
             end sub, throws.instanceof(of Vectoexception))
         End Sub
 
@@ -56,7 +56,7 @@ Namespace UnitTests
             'Dim target As ICompressorMap = CompressorMapReader.ReadFile(path)
 
             Assert.That(sub() 
-                dim tmp = CompressorMapReader.ReadFile(path, 1.0)
+                dim tmp = CompressorMapReader.ReadFile(path, 1.0, "")
             end sub, Throws.InstanceOf (of VectoException))
         End Sub
 
@@ -65,7 +65,7 @@ Namespace UnitTests
             Dim path As String = INVALIDNUMBEROFCOLUMNS
 
             Assert.That(Sub()
-                Dim target = CompressorMapReader.ReadFile(path, 1.0)
+                Dim target = CompressorMapReader.ReadFile(path, 1.0, "")
             End Sub, Throws.InstanceOf (Of VectoException))
         End Sub
 
@@ -74,7 +74,7 @@ Namespace UnitTests
             Dim path As String = INVALIDRPMMAP
 
             Assert.That(Sub()
-                Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0)
+                Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0, "")
             End Sub, Throws.InstanceOf (Of VectoException))
         End Sub
 
@@ -83,7 +83,7 @@ Namespace UnitTests
             Dim path As String = INVALIDFLOWRATEMAP
             
             Assert.That(Sub()
-                Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0)
+                Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0, "")
                         End Sub, Throws.InstanceOf (Of VectoException))
         End Sub
 
@@ -92,7 +92,7 @@ Namespace UnitTests
             Dim path As String = INVALIDPOWERCOMPRESSORONMAP
             
             Assert.That(Sub()
-                Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0)
+                Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0, "")
                         End Sub, Throws.InstanceOf (Of VectoException))
         End Sub
 
@@ -101,7 +101,7 @@ Namespace UnitTests
             Dim path As String = INVALIDPOWERCOMPRESSOROFFMAP
            
             Assert.That(Sub()
-                Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0)
+                Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0, "")
                         End Sub, Throws.InstanceOf (Of VectoException))
         End Sub
 
@@ -110,7 +110,7 @@ Namespace UnitTests
             Dim path As String = INSSUFICIENTROWSMAP
             
             Assert.That(Sub()
-                Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0)
+                Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0, "")
                         End Sub, Throws.InstanceOf (Of VectoException))
         End Sub
 
@@ -153,7 +153,7 @@ Namespace UnitTests
         <Test()>
         Public Sub InterpMiddle()
 
-            Dim target As ICompressorMap = CompressorMapReader.ReadFile(GOODMAP, 1.0)
+            Dim target As ICompressorMap = CompressorMapReader.ReadFile(GOODMAP, 1.0, "")
             'Assert.IsTrue(target.Initialise())
 
             Dim actual = target.Interpolate(1750.RPMtoRad()).FlowRate
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs b/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs
index c0309ba539..e40f28a280 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs
@@ -23,5 +23,14 @@ namespace TUGraz.VectoCommon.BusAuxiliaries {
 		{
 			return (Prefix + text).ParseEnum<BusHVACSystemConfiguration>();
 		}
+
+		public static string GetName(this BusHVACSystemConfiguration auxCfg)
+		{
+			if (auxCfg == BusHVACSystemConfiguration.Unknown) {
+				return "unknonwn";
+			}
+
+			return auxCfg.ToString().Replace(Prefix, "");
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IAlternatorMap.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IAlternatorMap.cs
index 08b7359015..748ac019dd 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/IAlternatorMap.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/IAlternatorMap.cs
@@ -9,6 +9,7 @@
 // 
 // See the LICENSE.txt for the specific language governing permissions and limitations.
 
+using System.Collections.Generic;
 using TUGraz.VectoCommon.Utils;
 
 namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.Electrics
@@ -25,6 +26,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.El
 		/// 	<remarks></remarks>
 		double GetEfficiency(PerSecond rpm, Ampere currentDemand);
 
+		IList<string> Technologies { get; }
+
 		string Source { get; }
 	}
 }
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/ICompressorMap.cs b/VectoCommon/VectoCommon/BusAuxiliaries/ICompressorMap.cs
index 7d8e132e17..dc45c9d954 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/ICompressorMap.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/ICompressorMap.cs
@@ -52,6 +52,8 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 		// Returns Average Power Demand Per Compressor Unit FlowRate
 		JoulePerNormLiter GetAveragePowerDemandPerCompressorUnitFlowRate();
 
+		string Technology { get; }
+
 		string Source { get; }
 	}
 
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs
index c5f46d8b7a..593ccda428 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs
@@ -22,6 +22,8 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 		IVentilation Ventilation { get; }
 
 		IAuxHeater AuxHeater { get; }
+
+		string HVACTechnology { get; }
 		string Source { get; }
 	}
 
@@ -128,10 +130,15 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 				case ACCompressorType.TwoStage: return "2-stage";
 				case ACCompressorType.ThreeStage: return "3-stage";
 				case ACCompressorType.FourStage: return "4-stage";
-				default: return type.ToString();
+				default: return type.ToString().ToLowerInvariant();
 			}
 		}
 
+		public static string GetName(this ACCompressorType type)
+		{
+			return type.ToString();
+		}
+
 		public static bool IsElectrical(this ACCompressorType type)
 		{
 			return type == ACCompressorType.Continuous;
diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
index a4c0b27b38..4212b3f8f8 100644
--- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
@@ -182,6 +182,8 @@ namespace TUGraz.VectoCommon.InputData
 
 		Meter EntranceHeight { get; }
 
+		ConsumerTechnology DoorDriveTechnology { get; }
+
 		// components
 
 		IVehicleComponentsDeclaration Components { get; }
@@ -736,7 +738,6 @@ namespace TUGraz.VectoCommon.InputData
 	{
 		ConsumerTechnology AirsuspensionControl { get; }
 		ConsumerTechnology AdBlueDosing { get; }
-		ConsumerTechnology DoorDriveTechnology { get; }
 	}
 
 	public interface IHVACBusAuxiliariesDeclarationData
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs
index 1ffff7ba75..f7c9d94272 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs
@@ -152,7 +152,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			pneumaticUserInputsConfig.CompressorGearRatio = puData.GetEx<double>("CompressorGearRatio");
 			var file = puData.GetEx<string>("CompressorMap");
 			if (!string.IsNullOrWhiteSpace(file)) {
-				pneumaticUserInputsConfig.CompressorMap = CompressorMapReader.ReadFile(Path.Combine(baseDir, file), 1.0);
+				pneumaticUserInputsConfig.CompressorMap = CompressorMapReader.ReadFile(Path.Combine(baseDir, file), 1.0, "");
 			}
 			pneumaticUserInputsConfig.Doors = ConsumerTechnologyHelper.Parse(puData.GetEx<string>("Doors"));
 			pneumaticUserInputsConfig.KneelingHeight =
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
index 083d03a68d..33eda91bd1 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
@@ -249,6 +249,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 		public Meter Length { get { return VehicleData.Length; } }
 		public Meter Width { get { return VehicleData.Width; } }
 		public Meter EntranceHeight { get { return null; } }
+		public ConsumerTechnology DoorDriveTechnology
+		{
+			get { return VehicleData.DoorDriveTechnology; }
+		}
 
 		IVehicleComponentsEngineering IVehicleEngineeringInputData.Components
 		{
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
index 53cb71627c..4ee3e8ceca 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
@@ -196,8 +196,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 						ConsumerTechnology.Unknown;
 			}
 		}
-		public virtual ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } }
-
 		
 		#endregion
 
@@ -373,6 +371,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 		}
 
 		public virtual Meter EntranceHeight { get { return null; } }
+		public virtual ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } }
 
 		IVehicleComponentsEngineering IVehicleEngineeringInputData.Components
 		{
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
index a949d1a3d6..c760303597 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
@@ -129,14 +129,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			}
 		}
 
-		public virtual ConsumerTechnology DoorDriveTechnology
-		{
-			get {
-				return ConsumerTechnologyHelper.Parse(
-					GetString(new[] { XMLNames.BusAux_PneumaticSystem, XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology }));
-			}
-		}
-
 		#endregion
 
 		#region Implementation of IPneumaticSupplyDeclarationData
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
index ea7c167071..e952fea85c 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
@@ -322,6 +322,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return null; }
 		}
 
+		public virtual ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } }
+
 		public virtual IVehicleComponentsDeclaration Components
 		{
 			get { return _components ?? (_components = ComponentReader.ComponentInputData); }
@@ -858,9 +860,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return GetDouble(XMLNames.Bus_EntranceHeight).SI<Meter>(); }
 		}
 
-		public virtual string DoorDriveTechnology
+		public override ConsumerTechnology DoorDriveTechnology
 		{
-			get { return GetString(XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology); }
+			get { return ConsumerTechnologyHelper.Parse(GetString(XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology)); }
 		}
 
 
@@ -998,6 +1000,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		public Meter EntranceHeight { get; }
 
+		public virtual ConsumerTechnology DoorDriveTechnology
+		{
+			get { return ConsumerTechnology.Unknown; }
+		}
+
 		public IVehicleComponentsDeclaration Components
 		{
 			get { return _components ?? (_components = ComponentReader.ComponentInputData); }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs
index 0734e05b54..77f01061df 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs
@@ -174,6 +174,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider
 
 		public virtual Meter Width { get { return null; } }
 		public virtual Meter EntranceHeight { get { return null; } }
+		public ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } }
 
 		IVehicleComponentsDeclaration IVehicleDeclarationInputData.Components
 		{
diff --git a/VectoCore/VectoCore/InputData/Reader/ComponentData/CompressorMapReader.cs b/VectoCore/VectoCore/InputData/Reader/ComponentData/CompressorMapReader.cs
index 4d8654de10..93e7c02fdd 100644
--- a/VectoCore/VectoCore/InputData/Reader/ComponentData/CompressorMapReader.cs
+++ b/VectoCore/VectoCore/InputData/Reader/ComponentData/CompressorMapReader.cs
@@ -14,14 +14,14 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
 	{
 		public static readonly string[] Header = new[] { Fields.RPM, Fields.FlowRate, Fields.PowerOn, Fields.PowerOff };
 
-		public static ICompressorMap ReadFile(string filename, double dragCurveFactorClutch)
+		public static ICompressorMap ReadFile(string filename, double dragCurveFactorClutch, string technology)
 		{
-			return new CompressorMap(Create(VectoCSVFile.Read(filename), dragCurveFactorClutch), Path.GetFullPath(filename));
+			return new CompressorMap(Create(VectoCSVFile.Read(filename), dragCurveFactorClutch), technology, Path.GetFullPath(filename));
 		}
 
-		public static ICompressorMap ReadStream(Stream stream, double dragCurveFactorClutch, string source = null)
+		public static ICompressorMap ReadStream(Stream stream, double dragCurveFactorClutch, string technology, string source = null)
 		{
-			return new CompressorMap(Create(VectoCSVFile.ReadStream(stream), dragCurveFactorClutch), source);
+			return new CompressorMap(Create(VectoCSVFile.ReadStream(stream), dragCurveFactorClutch), technology, source);
 		}
 
 		public static IList<CompressorMapValues> Create(DataTable data, double dragCurveFactorClutch)
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
index 5812c91ea9..691e6fa943 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
@@ -102,7 +102,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				SmartElectrical = busAux.ElectricSupply.SmartElectrics,
 				AverageCurrentDemandInclBaseLoad = currentDemand.Item1,
 				AverageCurrentDemandWithoutBaseLoad = currentDemand.Item2,
-				AlternatorMap = new SimpleAlternator(CalculateAlternatorEfficiency(busAux.ElectricSupply.Alternators)),
+				AlternatorMap = new SimpleAlternator(CalculateAlternatorEfficiency(busAux.ElectricSupply.Alternators)) {Technologies = busAux.ElectricSupply.Alternators.Select(x => x.Technology).ToList()},
 				PowerNetVoltage = Constants.BusAuxiliaries.ElectricSystem.PowernetVoltage,
 				StoredEnergyEfficiency = Constants.BusAuxiliaries.ElectricSystem.StoredEnergyEfficiency,
 				ResultCardIdle = new DummyResultCard(),
@@ -231,7 +231,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			}
 
 			return CompressorMapReader.ReadStream(
-				RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".VAUXBus." + resource), dragCurveFactorClutch);
+				RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".VAUXBus." + resource), dragCurveFactorClutch, $"{compressorSize} - {clutchType}");
 		}
 
 		public virtual ISSMInputs CreateSSMModelParameters(IBusAuxiliariesDeclarationData busAuxInputData, Mission mission, IFuelProperties heatingFuel, LoadingType loadingType)
@@ -284,6 +284,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 				HVACMaxCoolingPower = coolingPower.Item1 + coolingPower.Item2,
 				HVACCompressorType = busParams.HVACCompressorType, // use passenger compartment
+				HVACTechnology = string.Format("{0} ({1})", busParams.HVACConfiguration.GetName(), string.Join(", ", new[] {busParams.HVACCompressorType.GetName(), ACCompressorType.None.GetName()})),
 				COP = DeclarationData.BusAuxiliaries.CalculateCOP(
 					coolingPower.Item1, ACCompressorType.None, coolingPower.Item2, busParams.HVACCompressorType,
 					busParams.FloorType),
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs
index 57338aeffb..6e7977cc42 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs
@@ -114,7 +114,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			IVehicleDeclarationInputData vehicleData, Mission mission)
 		{
 			var retVal = base.GetPneumaticUserConfig(vehicleData, mission);
-			retVal.Doors = CompletedVehicle.Components.BusAuxiliaries.PneumaticConsumers.DoorDriveTechnology;
+			retVal.Doors = CompletedVehicle.DoorDriveTechnology;
 			retVal.KneelingHeight = VectoMath.Max(0.SI<Meter>(), CompletedVehicle.EntranceHeight - Constants.BusParameters.EntranceHeight);
 			return retVal;
 		}
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/AlternatorMap.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/AlternatorMap.cs
index 31fc8df7e0..9defeccb84 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/AlternatorMap.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/AlternatorMap.cs
@@ -233,7 +233,13 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 			return GetValue(rpm, currentDemand);
 		}
 
-		
+		public IList<string> Technologies
+		{
+			get {
+				return new List<string>();
+			}
+		}
+
 
 		// Public Events
 		public event AuxiliaryEventEventHandler AuxiliaryEvent;
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/CombinedAlternator.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/CombinedAlternator.cs
index 7edecd1a7b..37cae3b8b0 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/CombinedAlternator.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/CombinedAlternator.cs
@@ -63,6 +63,13 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 			return alternatorMapValues;
 		}
 
+		public IList<string> Technologies
+		{
+			get {
+				return new List<string>();
+			}
+		}
+
 		protected void Initialise(IList<ICombinedAlternatorMapRow> map)
 		{
 
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/SimpleAlternator.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/SimpleAlternator.cs
index 81732e9172..d5cefea066 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/SimpleAlternator.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/SimpleAlternator.cs
@@ -23,6 +23,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 			return _efficiency;
 		}
 
+		public IList<string> Technologies { get; set; }
+
 		public string Source { get { return null; } }
 
 		#endregion
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs
index fbf2327de6..b4b9f6b310 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs
@@ -184,6 +184,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 		}
 
 		public ISSMTechnologyBenefits Technologies { get; set; }
+		public string HVACTechnology { get; set; }
 
 		#endregion
 	}
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/CompressorMap.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/CompressorMap.cs
index 388a49c61f..0f199a22fe 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/CompressorMap.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/CompressorMap.cs
@@ -52,11 +52,13 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumati
 		/// 		''' Creates a new instance of the CompressorMap class
 		/// 		''' </summary>
 		/// <param name="entries"></param>
+		/// <param name="technology"></param>
 		/// <param name="source"></param>
 		/// ''' <remarks></remarks>
-		public CompressorMap(IList<CompressorMapValues> entries, string source)
+		public CompressorMap(IList<CompressorMapValues> entries, string technology, string source)
 		{
 			Source = source;
+			Technology = technology;
 			Entries = entries;
 			var powerDividedByFlowRateSum = 0.0.SI<JoulePerNormLiter>();
 			foreach (var entry in Entries) {
@@ -67,6 +69,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumati
 			_averagePowerDemandPerCompressorUnitFlowRateLitresperSec = (powerDividedByFlowRateSum / Entries.Count);
 		}
 
+		public string Technology { get; }
+
 		public string Source { get; }
 
 
diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
index afec34e08d..e312866f40 100644
--- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
@@ -700,7 +700,7 @@ namespace TUGraz.VectoCore.OutputData
 
 			WriteAxlegearData(runData.AxleGearData, row);
 
-			WriteAuxTechnologies(runData.Aux, row);
+			WriteAuxTechnologies(runData.Aux, runData.BusAuxiliaries, row);
 
 			WriteAxleWheelsData(runData.VehicleData.AxleData, row);
 
@@ -804,7 +804,7 @@ namespace TUGraz.VectoCore.OutputData
 				: data.CertificationNumber;
 		}
 
-		private void WriteAuxTechnologies(IEnumerable<VectoRunData.AuxData> auxData, DataRow row)
+		private void WriteAuxTechnologies(IEnumerable<VectoRunData.AuxData> auxData, IAuxiliaryConfig busAux, DataRow row)
 		{
 			foreach (var aux in auxData) {
 				if (aux.ID == Constants.Auxiliaries.IDs.PTOConsumer || aux.ID == Constants.Auxiliaries.IDs.PTOTransmission) {
@@ -822,6 +822,14 @@ namespace TUGraz.VectoCore.OutputData
 
 				row[colName] = aux.Technology == null ? "" : string.Join("; ", aux.Technology);
 			}
+
+			if (busAux == null) {
+				return;
+			}
+
+			row[string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.HeatingVentilationAirCondition)] = busAux.SSMInputs.HVACTechnology;
+			row[string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.ElectricSystem)] = string.Join("/", busAux.ElectricalUserInputsConfig.AlternatorMap.Technologies);
+			row[string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.PneumaticSystem)] = busAux.PneumaticUserInputsConfig.CompressorMap.Technology;
 		}
 
 		private static void WriteAngledriveData(AngledriveData data, DataRow row)
diff --git a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs
index e92696fac9..59ef46fd90 100644
--- a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs
@@ -55,6 +55,7 @@ namespace TUGraz.VectoCore.Tests.Utils {
 		public Meter Length { get; set; }
 		public Meter Width { get; set; }
 		public Meter EntranceHeight { get; }
+		public ConsumerTechnology DoorDriveTechnology { get; }
 		public IVehicleComponentsDeclaration Components { get { return this; } }
 		public XmlNode XMLSource { get; }
 
@@ -106,6 +107,7 @@ namespace TUGraz.VectoCore.Tests.Utils {
 		public Meter Length { get; set; }
 		public Meter Width { get; set; }
 		public Meter EntranceHeight { get; }
+		public ConsumerTechnology DoorDriveTechnology { get; }
 		public Watt MaxNetPower2 { get; }
 		public string RegisteredClass { get; set; }
 		public int NuberOfPassengersUpperDeck { get; set; }
-- 
GitLab