From 9f6cbb636f0b5a70868d6efcebe812bc8977ada2 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Mon, 17 Oct 2022 13:03:20 +0200
Subject: [PATCH] BusAux: use separate HVAC Configuration for heating and
 cooling extend environmental map with efficiency for heater and heatpump cop
 depending on environmental conditions map HVAC system configuration and
 heatpump types (driver/passenger) to a HVAC configuration for calculations
 segment table: separate busaux HVAC configuration for heating and cooling
 depending on powertrain architecture (conv, HEV, PEV)

---
 .../JobEdit/Vehicle/VehicleViewModel.cs       |   2 +-
 .../InterimStageBusVehicleViewModel_v2_8.cs   |   2 +-
 ..._NonSmart_AlternatorsSetEfficiencyTests.vb |  10 +-
 .../UnitTests/M14Tests.vb                     |   2 +-
 .../M1_AverageHVACLoadDemandTests.vb          |   8 +
 .../M2_AverageElectricalLoadTests.vb          |   2 +-
 .../M5_SmartAlternatorSetGenerationTests.vb   |   4 +-
 .../UnitTests/SSMTOOLTests.vb                 |  27 ++-
 .../VectoAuxiliariesTests/UnitTests/Utils.vb  |   5 +-
 .../VectoAuxiliariesTests.vbproj              |   1 +
 .../BusHVACSystemConfiguration.cs             |  57 ++++-
 .../BusAuxiliaries/IAuxiliaryConfig.cs        |   2 +-
 .../IEnvironmentalConditionsMapEntry.cs       |   7 +-
 .../BusAuxiliaries/ISSMDeclarationInputs.cs   | 101 ++++++--
 .../FileIO/JSON/BusAuxiliaryInputData.cs      |   2 +-
 .../InputData/FileIO/JSON/SSMInputData.cs     |  17 +-
 ...MLDeclarationBusAuxiliariesDataProvider.cs |   2 +-
 .../EnvironmentalContidionsMapReader.cs       |  38 ++-
 .../EngineeringDataAdapter.cs                 |   4 +-
 .../AuxiliaryDataAdapter.cs                   | 226 ++++++++++++------
 .../Models/BusAuxiliaries/AuxiliaryConfig.cs  |   4 +-
 .../Models/BusAuxiliaries/BusAuxiliaries.cs   |  16 +-
 .../HVAC/EnvironmentalConditionMapEntry.cs    |  18 +-
 .../Impl/HVAC/SSMCalculate.cs                 |  70 +++++-
 .../DownstreamModules/Impl/HVAC/SSMInputs.cs  |  23 +-
 .../DownstreamModules/Impl/HVAC/SSMTOOL.cs    |  10 +-
 .../Models/Declaration/DeclarationData.cs     |  98 ++++++--
 .../Models/Declaration/HVACCoolingPower.cs    |   6 +-
 .../VectoCore/Models/Declaration/Mission.cs   |  39 +--
 .../Models/Declaration/PrimaryBusSegments.cs  |  37 ++-
 .../Impl/SimulatorFactory/SimulatorFactory.cs |   5 -
 .../SimulatorFactoryDeclaration.cs            |   8 +-
 .../OutputData/FileIO/BusAuxWriter.cs         |   4 +-
 .../OutputData/SummaryDataContainer.cs        |   2 +-
 .../Declaration/Buses/DefaultClimatic.aenv    |  24 +-
 .../PrimaryBusSegmentationTable.csv           |  44 ++--
 VectoCore/VectoCore/VectoCore.csproj          |   2 +
 .../CompletedBusFactorMethodTest.cs           |  26 +-
 .../EngineeringModeBusAuxTest.cs              |   2 +-
 39 files changed, 668 insertions(+), 289 deletions(-)

diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/VehicleViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/VehicleViewModel.cs
index bdd1d5d53f..14bf6ca8db 100644
--- a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/VehicleViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/VehicleViewModel.cs
@@ -354,7 +354,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle
 		ConsumerTechnology? IVehicleDeclarationInputData.DoorDriveTechnology { get; }
 
 		public VehicleDeclarationType VehicleDeclarationType => throw new NotImplementedException();
-		public Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits { get; }
+		public IDictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits { get; }
 		public TableData BoostingLimitations { get; }
 
 		public string VehicleTypeApprovalNumber => throw new NotImplementedException();
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs
index d692eb4ab9..c1d1e80836 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs
@@ -798,7 +798,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			set => SetProperty(ref _vehicleDeclarationType, value);
 		}
 
-		public Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits { get; }
+		public IDictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits { get; }
 		public TableData BoostingLimitations { get; }
 
 		private string _vehicleTypeApprovalNumber;
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb
index cb275e66c2..54ede74a5a 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb
@@ -28,7 +28,7 @@ Namespace UnitTests
 
             Dim auxconfig = Utils.GetAuxTestConfig()
 
-            Dim ssm As SSMTOOL = New SSMTOOL(auxconfig.SSMInputs) _
+            Dim ssm As SSMTOOL = New SSMTOOL(auxconfig.SSMInputsCooling) _
             ', New HVACConstants())
             'CType(CType(ssm.SSMInputs, SSMInputs).Vehicle, VehicleData).Height=  0.SI (Of Meter)
             'ssm.Load(_SSMMAP)
@@ -68,7 +68,7 @@ Namespace UnitTests
             CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap =alternatorMap
 
             Dim target As IM0_NonSmart_AlternatorsSetEfficiency = New M00Impl(auxConfig.ElectricalUserInputsConfig,
-                                                                              signals,  New SSMTOOL(auxconfig.SSMInputs).ElectricalWAdjusted)
+                                                                              signals,  New SSMTOOL(auxconfig.SSMInputsCooling).ElectricalWAdjusted)
             Assert.IsNotNull(target)
         End Sub
 
@@ -93,7 +93,7 @@ Namespace UnitTests
             CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).PowerNetVoltage = powernetVoltage
             CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap = Nothing
 
-            Assert.That(Sub() target = New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, New SSMTOOL(auxconfig.SSMInputs).ElectricalWAdjusted),
+            Assert.That(Sub() target = New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, New SSMTOOL(auxconfig.SSMInputsCooling).ElectricalWAdjusted),
                         Throws.InstanceOf (Of ArgumentException))
         End Sub
 
@@ -111,7 +111,7 @@ Namespace UnitTests
             CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap =alternatorMap
 
 
-            Dim target As M00Impl = New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, New SSMTOOL(auxconfig.SSMInputs).ElectricalWAdjusted)
+            Dim target As M00Impl = New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, New SSMTOOL(auxconfig.SSMInputsCooling).ElectricalWAdjusted)
 
             Dim actual As Double = target.AlternatorsEfficiency
 
@@ -128,7 +128,7 @@ Namespace UnitTests
             CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap =alternatorMap
 
 
-            Dim target As IM0_NonSmart_AlternatorsSetEfficiency = New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, New SSMTOOL(auxconfig.SSMInputs).ElectricalWAdjusted)
+            Dim target As IM0_NonSmart_AlternatorsSetEfficiency = New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, New SSMTOOL(auxconfig.SSMInputsCooling).ElectricalWAdjusted)
 
             Dim actual As Ampere
             Dim expected As Single = 0
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb
index 8bdad5364a..b65ffb715e 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb
@@ -52,7 +52,7 @@ Namespace UnitTests
         Public Property SSMInputs As ISSMDeclarationInputs Implements ISSMTOOL.SSMInputs
 
             Get
-                Return CType(Utils.GetAuxTestConfig().SSMInputs, ISSMDeclarationInputs)
+                Return CType(Utils.GetAuxTestConfig().SSMInputsCooling, ISSMDeclarationInputs)
             End Get
             Set(value As ISSMDeclarationInputs)
             End Set
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M1_AverageHVACLoadDemandTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M1_AverageHVACLoadDemandTests.vb
index 09fa249606..b8f26cfc0b 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M1_AverageHVACLoadDemandTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M1_AverageHVACLoadDemandTests.vb
@@ -42,6 +42,14 @@ Namespace UnitTests
             dim vehicle = auxConfig.VehicleData
             'CType(vehicle, VehicleData).Height = 0.SI (of Meter)
             Dim ssmInput = SSMInputData.ReadFile(_SSMMAP, vehicle, Nothing)
+
+            If (ssmInput.HVACSystemConfiguration = BusHVACSystemConfiguration.Unknown ) then
+                Dim tmp =CType(ssmInput, SSMInputs)
+                tmp.HVACSystemConfiguration = BusHVACSystemConfiguration.Configuration6
+                tmp.HeatPumpTypePassengerCompartment = HeatPumpType.non_R_744_2_stage
+            end if
+                                                                                                                            
+
             ssm = New SSMTOOL(ssmInput)
             
             alternatorMap = AlternatorReader.ReadMap(_GOODMAP)
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb
index db3991edd8..a9c64a744e 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb
@@ -56,7 +56,7 @@ Namespace UnitTests
 		    CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap =altMap
 		    CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorGearEfficiency = 0.8
 
-			Dim m0 As New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, New SSMTOOL(auxConfig.SSMInputs).ElectricalWAdjusted)
+			Dim m0 As New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, New SSMTOOL(auxConfig.SSMInputsCooling).ElectricalWAdjusted)
 
 			'Get Consumers.
 
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M5_SmartAlternatorSetGenerationTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M5_SmartAlternatorSetGenerationTests.vb
index 1fbe62b3db..4d781b92fc 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M5_SmartAlternatorSetGenerationTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M5_SmartAlternatorSetGenerationTests.vb
@@ -40,7 +40,7 @@ Namespace UnitTests
 
             Dim auxConfig = Utils.GetAuxTestConfig()
 		    
-			Dim ssm As ISSMTOOL = New SSMTOOL(auxConfig.SSMInputs)
+			Dim ssm As ISSMTOOL = New SSMTOOL(auxConfig.SSMInputsCooling)
                 'New SSMTOOL(SSMInputData.ReadFile(_SSMMAP, DeclarationData.BusAuxiliaries.DefaultEnvironmentalConditions, DeclarationData.BusAuxiliaries.SSMTechnologyList)) ', New HVACConstants())
 
 		    
@@ -65,7 +65,7 @@ Namespace UnitTests
 		    CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap = alternatoMap
 
             Dim m0 As New M00Impl(auxConfig.ElectricalUserInputsConfig, _signals,
-                                New SSMTOOL(auxConfig.SSMInputs).ElectricalWAdjusted)
+                                New SSMTOOL(auxConfig.SSMInputsCooling).ElectricalWAdjusted)
 
 			'Results Cards
 			Dim readings = New List(Of SmartResult)
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb
index d870204272..b05a80f908 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb
@@ -76,9 +76,11 @@ Namespace UnitTests
 
             Dim mission As New Mission With {
                 .BusParameter = New BusParameters() With {
-                .HVACCompressorType = HeatPumpType.non_R_744_2_stage,
-                .HVACAuxHeaterPower = 30000.0.SI(Of Watt),
-                .HVACConfiguration = BusHVACSystemConfiguration.Configuration6,
+                    .HVACConventional = New HVACParameters  With {
+                    .HeatPumpTypePassengerCompartmentCooling = HeatPumpType.non_R_744_2_stage,
+                    .HVACAuxHeaterPower = 30000.0.SI(Of Watt),
+                    .HVACConfiguration = BusHVACSystemConfiguration.Configuration6
+                    },
                 .DoubleDecker = False,
                 .VehicleWidth = 2.55.SI(Of Meter),
                 .VehicleLength = 10.655.SI(Of Meter),
@@ -92,7 +94,8 @@ Namespace UnitTests
             Dim auxInput as IBusAuxiliariesDeclarationData = Nothing
 
             Dim dao = New GenericCompletedBusAuxiliaryDataAdapter()
-            Dim target As ISSMDeclarationInputs = dao.CreateSSMModelParameters(auxInput, mission, FuelData.Diesel, LoadingType.ReferenceLoad)
+            Dim target As ISSMDeclarationInputs = dao.CreateSSMModelParameters(auxInput, mission, LoadingType.ReferenceLoad, mission.BusParameter.HVACConventional.HVACConfiguration,
+                                                                               HeatPumpType.none, mission.BusParameter.HVACConventional.HeatPumpTypePassengerCompartmentCooling, mission.BusParameter.HVACConventional.HVACAuxHeaterPower, FuelData.Diesel)
 
             If section = "BusParameterisation" Then
                 'BUS Parameterisation
@@ -152,7 +155,7 @@ Namespace UnitTests
                 '*********
                 Assert.AreEqual(HeatPumpType.non_R_744_2_stage, target.ACSystem.HVACCompressorType)
                 Assert.AreEqual(15.5567, target.ACSystem.HVACMaxCoolingPower.Value()/1000.0, 1e-3)
-                Assert.AreEqual(3.5, target.ACSystem.COP)
+                'Assert.AreEqual(3.5, target.ACSystem.COP)
             End If
 
             If section = "Ventilation" Then
@@ -584,9 +587,11 @@ Namespace UnitTests
             Dim mission As New Mission With {
                 .MissionType = MissionType.HeavyUrban,
                 .BusParameter = New BusParameters() With {
-                    .HVACCompressorType = HeatPumpType.non_R_744_2_stage,
-                    .HVACAuxHeaterPower = 18000.0.SI(Of Watt),
-                    .HVACConfiguration = BusHVACSystemConfiguration.Configuration6,
+                    .HVACConventional = New HVACParameters() With {
+                        .HeatPumpTypePassengerCompartmentCooling = HeatPumpType.non_R_744_2_stage,
+                        .HVACAuxHeaterPower = 18000.0.SI(Of Watt),
+                        .HVACConfiguration = BusHVACSystemConfiguration.Configuration6
+                    },
                     .DoubleDecker = False,
                     .BodyHeight = 2.7.SI(Of Meter),
                     .VehicleWidth = 2.55.SI(Of Meter),
@@ -599,8 +604,10 @@ Namespace UnitTests
             Dim auxInput as IBusAuxiliariesDeclarationData = Nothing
 
             Dim dao = New GenericCompletedBusAuxiliaryDataAdapter()
-            Dim target As SSMTOOL = New SSMTOOL(dao.CreateSSMModelParameters(auxInput, mission,
-                                                                             FuelData.Diesel, LoadingType.ReferenceLoad))
+            Dim params as ISSMDeclarationInputs = dao.CreateSSMModelParameters(auxInput, mission, LoadingType.ReferenceLoad, mission.BusParameter.HVACConventional.HVACConfiguration,
+                                                                                             HeatPumpType.none, mission.BusParameter.HVACConventional.HeatPumpTypePassengerCompartmentCooling, mission.BusParameter.HVACConventional.HVACAuxHeaterPower, FuelData.Diesel)
+
+            Dim target As SSMTOOL = New SSMTOOL(params)
 
             success = BusAuxWriter.SaveSSMConfig(target.SSMInputs, filePath)
             'success = target.Save(filePath)
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb
index 1ac1af2911..b2d94c0129 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb
@@ -121,14 +121,13 @@ Public Class Utils
                 .SmartAirCompression = False,
                 .SmartRegeneration = False 
                 },
-                .SSMInputs = New SSMInputs(Nothing, heatingFuel) With {
+                .SSMInputsCooling = New SSMInputs(Nothing, heatingFuel) With {
                 .Technologies = techBenefits,
                 .BusFloorType = FloorType.HighFloor,
                 .BusSurfaceArea = 0.SI(Of SquareMeter),
                 .BusVolume = 0.SI(Of CubicMeter),
                 .BusWindowSurface = 0.SI(of SquareMeter),
                 .UValue = 3.SI(Of WattPerKelvinSquareMeter),
-                .COP = 3.5,
                 .VentilationRate = 20.SI(Unit.SI.Per.Hour).Cast (Of PerSecond),
                 .VentilationRateHeating = 20.SI(Unit.SI.Per.Hour).Cast (Of PerSecond),
                 .DefaultConditions =
@@ -138,7 +137,7 @@ Public Class Utils
                 .CoolingBoundaryTemperature = 23.0.DegCelsiusToKelvin(),
                 .SpecificVentilationPower = 0.56.SI(Unit.SI.Watt.Hour.Per.Cubic.Meter).Cast (Of JoulePerCubicMeter),
                 .HVACCompressorType = HeatPumpType.non_R_744_2_stage, 
-                .HVACMaxCoolingPower = 18.si(Unit.SI.kilo.watt).Cast (of Watt),
+                .HVACMaxCoolingPowerPassenger = 18.si(Unit.SI.kilo.watt).Cast (of Watt),
                 .AuxHeaterEfficiency =  0.84,
                 .FuelFiredHeaterPower = 30.SI(Unit.SI.kilo.watt).Cast (Of Watt),
                 .FuelEnergyToHeatToCoolant = Constants.BusAuxiliaries.Heater.FuelEnergyToHeatToCoolant,
diff --git a/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj b/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj
index cee4dd27f4..21bc8436d3 100644
--- a/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj
+++ b/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj
@@ -12,6 +12,7 @@
   </PropertyGroup>
 
   <ItemGroup>
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
     <PackageReference Include="NUnit" Version="3.13.2" />
     <PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
     <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs b/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs
index 80ce7c5716..4371b6e7da 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs
@@ -44,7 +44,7 @@ namespace TUGraz.VectoCommon.BusAuxiliaries {
 	{
 		private const string Prefix = "Configuration";
 
-		public static BusHVACSystemConfiguration? Parse(string text)
+		public static BusHVACSystemConfiguration Parse(string text)
 		{
 			return (Prefix + text).ParseEnum<BusHVACSystemConfiguration>();
 		}
@@ -59,6 +59,14 @@ namespace TUGraz.VectoCommon.BusAuxiliaries {
 		}
 
 		public static string GetName(this BusHVACSystemConfiguration? hvacConfig)
+		{
+			if (hvacConfig == null) {
+				return "not set";
+			}
+
+			return hvacConfig.Value.GetName();
+		}
+		public static string GetName(this BusHVACSystemConfiguration hvacConfig)
 		{
 			if (hvacConfig == BusHVACSystemConfiguration.Unknown) {
 				return "Unknown";
@@ -68,6 +76,15 @@ namespace TUGraz.VectoCommon.BusAuxiliaries {
 		}
 
 		public static string ToXmlFormat(this BusHVACSystemConfiguration? hvacConfiguration)
+		{
+			if (hvacConfiguration == null) {
+				return "N/A";
+			}
+
+			return hvacConfiguration.Value.ToXmlFormat();
+		}
+
+		public static string ToXmlFormat(this BusHVACSystemConfiguration hvacConfiguration)
 		{
 			if (hvacConfiguration == BusHVACSystemConfiguration.Unknown) {
 				return "0";
@@ -76,15 +93,12 @@ namespace TUGraz.VectoCommon.BusAuxiliaries {
 			return GetName(hvacConfiguration);
 		}
 
-		public static bool RequiresDriverAC(this BusHVACSystemConfiguration? hvacConfig)
+		public static bool RequiresDriverAC(this BusHVACSystemConfiguration hvacConfig)
 		{
-			if (hvacConfig == null) {
-				return false;
-			}
 			switch (hvacConfig) {
-				case BusHVACSystemConfiguration.Configuration2: 
-				case BusHVACSystemConfiguration.Configuration4: 
-				case BusHVACSystemConfiguration.Configuration7: 
+				case BusHVACSystemConfiguration.Configuration2:
+				case BusHVACSystemConfiguration.Configuration4:
+				case BusHVACSystemConfiguration.Configuration7:
 				case BusHVACSystemConfiguration.Configuration9:
 					return true;
 			}
@@ -92,11 +106,13 @@ namespace TUGraz.VectoCommon.BusAuxiliaries {
 			return false;
 		}
 
-		public static bool RequiresPassengerAC(this BusHVACSystemConfiguration? hvacConfig)
+		public static bool RequiresDriverAC(this BusHVACSystemConfiguration? hvacConfig)
+		{
+			return hvacConfig != null && hvacConfig.Value.RequiresDriverAC();
+		}
+
+		public static bool RequiresPassengerAC(this BusHVACSystemConfiguration hvacConfig)
 		{
-			if (hvacConfig == null) {
-				return false;
-			}
 			switch (hvacConfig) {
 				case BusHVACSystemConfiguration.Configuration1:
 				case BusHVACSystemConfiguration.Configuration2:
@@ -107,5 +123,22 @@ namespace TUGraz.VectoCommon.BusAuxiliaries {
 
 			return true;
 		}
+
+		public static bool RequiresPassengerAC(this BusHVACSystemConfiguration? hvacConfig)
+		{
+			return hvacConfig != null && hvacConfig.Value.RequiresPassengerAC();
+
+		}
+
+		public static bool HasThermalComfortSystem(this BusHVACSystemConfiguration hvacConfig)
+		{
+			switch (hvacConfig) {
+				case BusHVACSystemConfiguration.Configuration1:
+				case BusHVACSystemConfiguration.Configuration2:
+					return false;
+			}
+
+			return true;
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs
index 56f9e1e111..2945f0a32a 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs
@@ -25,7 +25,7 @@ namespace TUGraz.VectoCommon.BusAuxiliaries {
 		IPneumaticUserInputsConfig PneumaticUserInputsConfig { get;  }
 		IPneumaticsConsumersDemand PneumaticAuxillariesConfig { get;  }
 
-		ISSMInputs SSMInputs { get; }
+		ISSMInputs SSMInputsCooling { get; }
 
 		IActuations Actuations { get; }
 
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IEnvironmentalConditionsMapEntry.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IEnvironmentalConditionsMapEntry.cs
index a3e817a860..7f2c864db8 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/IEnvironmentalConditionsMapEntry.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/IEnvironmentalConditionsMapEntry.cs
@@ -1,4 +1,5 @@
-using TUGraz.VectoCommon.Utils;
+using System.Collections.Generic;
+using TUGraz.VectoCommon.Utils;
 
 namespace TUGraz.VectoCommon.BusAuxiliaries
 {
@@ -12,5 +13,9 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 
 
 		//double GetNormalisedWeighting(IList<IEnvironmentalConditionsMapEntry> map);
+
+		IReadOnlyDictionary<HeaterType, double> HeaterEfficiency { get; }
+
+		IReadOnlyDictionary<HeatPumpType, double> HeatPumpCoP { get; }
 	}
 }
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMDeclarationInputs.cs b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMDeclarationInputs.cs
index 3756f0ff30..6d83f958cd 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMDeclarationInputs.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMDeclarationInputs.cs
@@ -27,6 +27,17 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 		IAuxHeater AuxHeater { get; }
 
 		string HVACTechnology { get; }
+
+		//HeatPumpType HeatPumpTypeHeatingDriverCompartment { get; }
+		
+		HeatPumpType HeatPumpTypeDriverCompartment { get; }
+		
+		//HeatPumpType HeatPumpTypeHeatingPassengerCompartment { get; }
+		
+		HeatPumpType HeatPumpTypePassengerCompartment { get; }
+
+		BusHVACSystemConfiguration HVACSystemConfiguration { get; }
+
 		string Source { get; }
 	}
 
@@ -91,7 +102,11 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 
 		Watt HVACMaxCoolingPower { get; }
 
-		double COP { get; }
+		Watt HVACMaxCoolingPowerDriver { get; }
+
+		Watt HVACMaxCoolingPowerPassenger { get; }
+
+		//double COP { get; }
 	}
 
 	public interface IVentilation
@@ -225,7 +240,7 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 		private const string NON_R_744_4_STAGE = "non R-744 4-stage";
 		private const string NON_R_744_CONTINUOUS = "non R-744 continuous";
 		
-		public static HeatPumpType Parse(string parse)
+		public static HeatPumpType? TryParse(string parse)
 		{
 			switch (parse)
 			{
@@ -240,10 +255,21 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 				case "2-stage": return HeatPumpType.non_R_744_2_stage;
 				case "3-stage": return HeatPumpType.non_R_744_3_stage;
 				case "4-stage": return HeatPumpType.non_R_744_4_stage;
-				default: throw new InvalidEnumArgumentException("HeatPumpType");
+				default: return null; //throw new InvalidEnumArgumentException("HeatPumpType");
+			}
+		}
+
+		public static HeatPumpType Parse(string parse)
+		{
+			var retVal = TryParse(parse);
+			if (retVal == null) {
+				throw new InvalidEnumArgumentException("HeatPumpType");
 			}
+
+			return retVal.Value;
 		}
 
+
 		public static string GetLabel(this HeatPumpType? type)
 		{
 			if (type == null) {
@@ -281,31 +307,60 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 			return !type.IsElectrical();
 		}
 
-		public static double COP(this HeatPumpType type, FloorType floortype)
-		{
-			var cop = 3.5;
+		//public static double COP(this HeatPumpType type, FloorType floortype)
+		//{
+		//	var cop = 3.5;
+
+		//	switch (type) {
+		//		case HeatPumpType.none:
+		//		//case HeatPumpType.Unknown:
+		//			return 0;
+		//		case HeatPumpType.non_R_744_2_stage:
+		//			return cop;
+		//		case HeatPumpType.non_R_744_3_stage:
+		//		case HeatPumpType.non_R_744_4_stage:
+		//			return cop * 1.02;
+		//		case HeatPumpType.non_R_744_continuous:
+		//		case HeatPumpType.R_744:
+		//			return floortype == FloorType.LowFloor
+		//				? cop * 1.04
+		//				: cop * 1.06;
+		//		default:
+		//			throw new ArgumentOutOfRangeException();
+		//	}
+		//}
+	}
 
-			switch (type) {
-				case HeatPumpType.none:
-				//case HeatPumpType.Unknown:
-					return 0;
-				case HeatPumpType.non_R_744_2_stage:
-					return cop;
-				case HeatPumpType.non_R_744_3_stage:
-				case HeatPumpType.non_R_744_4_stage:
-					return cop * 1.02;
-				case HeatPumpType.non_R_744_continuous:
-				case HeatPumpType.R_744:
-					return floortype == FloorType.LowFloor
-						? cop * 1.04
-						: cop * 1.06;
-				default:
-					throw new ArgumentOutOfRangeException();
+
+    [Flags]
+	public enum HeaterType
+	{
+		None = 0,
+		WaterElectricHeater = 1<<1,
+		AirElectricHeater = 1<<2,
+		OtherElectricHeating = 1<<3,
+		FuelHeater = 1<<4,
+	}
+
+	public static class HeaterTypeHelper
+	{
+		private const string WATER_ELECTRIC_HEATER = "water electric heater";
+		private const string AIR_ELECTRIC_HEATER = "air electric heater";
+		private const string OTHER_ELECTRIC_HEATING = "other electric heating";
+		private const string FUEL_HEATER = "fuel heater";
+
+		public static HeaterType? TryParse(string parse)
+		{
+			switch (parse) {
+				case WATER_ELECTRIC_HEATER: return HeaterType.WaterElectricHeater;
+				case AIR_ELECTRIC_HEATER: return HeaterType.AirElectricHeater;
+				case OTHER_ELECTRIC_HEATING: return HeaterType.OtherElectricHeating;
+				case FUEL_HEATER: return HeaterType.FuelHeater;
+				default: return null;
 			}
 		}
 	}
 
-
 	public interface ISSMEngineeringInputs : ISSMInputs
 	{
 		Watt ElectricPower { get; }
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs
index 19fb8d9ff3..6cfb5309d5 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs
@@ -57,7 +57,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 				ElectricalUserInputsConfig = ec,
 				PneumaticAuxillariesConfig  = pac,
 				PneumaticUserInputsConfig  = puc,
-				SSMInputs = ssm,
+				SSMInputsCooling = ssm,
 				Actuations = actuations,
 				VehicleData = vehicleData
 			};
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/SSMInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/SSMInputData.cs
index d3664bbff3..e1bab9b6db 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/SSMInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/SSMInputData.cs
@@ -1,4 +1,5 @@
-using System.IO;
+using System.Collections.Generic;
+using System.IO;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
 using TUGraz.VectoCommon.BusAuxiliaries;
@@ -36,7 +37,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			var genInput = ((JObject)body["SSMInputs"]);
 
 			var retVal = new SSMInputs(fileName);
-			
+
+			var heatPumpCoP = new Dictionary<HeatPumpType, double>();
+			var heaterEff = new Dictionary<HeaterType, double>();
+
 			retVal.GFactor = genInput.GetEx<double>("BC_GFactor");
 			//retVal.PassengerBoundaryTemperature = genInput.GetEx<double>("BC_PassengerBoundaryTemperature").DegCelsiusToKelvin();
 			retVal.HeatingBoundaryTemperature = genInput.GetEx<double>("BC_HeatingBoundaryTemperature").DegCelsiusToKelvin();
@@ -47,7 +51,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			retVal.SpecificVentilationPower = genInput.GetEx<double>("BC_SpecificVentilationPower").SI(Unit.SI.Watt.Hour.Per.Cubic.Meter).Cast<JoulePerCubicMeter>();
 			retVal.AuxHeaterEfficiency = genInput.GetEx<double>("BC_AuxHeaterEfficiency");
 			retVal.UValue = genInput.GetEx<double>("BC_UValue").SI<WattPerKelvinSquareMeter>();
-			retVal.COP = genInput.GetEx<double>("AC_COP");
+			//retVal.COP = genInput.GetEx<double>("AC_COP");
+			foreach (var entry in EnumHelper.GetValues<HeatPumpType>()) {
+				heatPumpCoP.Add(entry, genInput.GetEx<double>("AC_COP"));
+			}
 			//retVal.GCVDieselOrHeatingOil = genInput.GetEx<double>("BC_GCVDieselOrHeatingOil").SI(Unit.SI.Kilo.Watt.Hour.Per.Kilo.Gramm).Cast<JoulePerKilogramm>();
 																										//retVal.MaxTemperatureDeltaForLowFloorBusses = genInput.GetEx<double>("BC_MaxTemperatureDeltaForLowFloorBusses").SI<Kelvin>();
 			retVal.MaxPossibleBenefitFromTechnologyList = genInput.GetEx<double>("BC_MaxPossibleBenefitFromTechnologyList");
@@ -62,11 +69,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			//retVal.Solar = genInput.GetEx<double>("EC_Solar").SI<WattPerSquareMeter>();
 			retVal.DefaultConditions = new EnvironmentalConditionMapEntry(
 				genInput.GetEx<double>("EC_EnviromentalTemperature").DegCelsiusToKelvin(),
-				genInput.GetEx<double>("EC_Solar").SI<WattPerSquareMeter>(), 1.0);
+				genInput.GetEx<double>("EC_Solar").SI<WattPerSquareMeter>(), 1.0, heatPumpCoP, heaterEff);
 			//retVal.EnviromentalConditions_BatchFile = genInput.GetEx<string>("EC_EnviromentalConditions_BatchFile");
 			//retVal.BatchMode = genInput.GetEx<bool>("EC_EnviromentalConditions_BatchEnabled");
 			retVal.HVACCompressorType = HeatPumpTypeHelper.Parse(genInput.GetEx<string>("AC_CompressorType"));
-			retVal.HVACMaxCoolingPower = genInput.GetEx<double>("AC_CompressorCapacitykW").SI(Unit.SI.Kilo.Watt).Cast<Watt>();
+			retVal.HVACMaxCoolingPowerPassenger = genInput.GetEx<double>("AC_CompressorCapacitykW").SI(Unit.SI.Kilo.Watt).Cast<Watt>();
 			retVal.VentilationOnDuringHeating = genInput.GetEx<bool>("VEN_VentilationOnDuringHeating");
 			retVal.VentilationWhenBothHeatingAndACInactive = genInput.GetEx<bool>("VEN_VentilationWhenBothHeatingAndACInactive");
 			retVal.VentilationDuringAC = genInput.GetEx<bool>("VEN_VentilationDuringAC");
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
index 95db59ab68..9eb37a499d 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
@@ -484,7 +484,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		public override BusHVACSystemConfiguration? SystemConfiguration =>
 			ElementExists(XMLNames.Bus_SystemConfiguration) 
-				? BusHVACSystemConfigurationHelper.Parse(GetString(XMLNames.Bus_SystemConfiguration)) : null;
+				? BusHVACSystemConfigurationHelper.Parse(GetString(XMLNames.Bus_SystemConfiguration)) : (BusHVACSystemConfiguration?)null;
 
 		public override HeatPumpType? HeatPumpTypeCoolingDriverCompartment =>
 			ElementExists(XMLNames.Bus_HeatPumpTypeDriver)
diff --git a/VectoCore/VectoCore/InputData/Reader/ComponentData/EnvironmentalContidionsMapReader.cs b/VectoCore/VectoCore/InputData/Reader/ComponentData/EnvironmentalContidionsMapReader.cs
index ee81cf6cdd..c058f95693 100644
--- a/VectoCore/VectoCore/InputData/Reader/ComponentData/EnvironmentalContidionsMapReader.cs
+++ b/VectoCore/VectoCore/InputData/Reader/ComponentData/EnvironmentalContidionsMapReader.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
 using System.Data;
 using System.IO;
 using System.Linq;
@@ -44,12 +45,43 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
 					data.Columns.Cast<DataColumn>().Select(x => x.ColumnName).Join());
 			}
 
+			var heatpumps = new List<Tuple<string, HeatPumpType>>();
+			var heater = new List<Tuple<string, HeaterType>>();
+			foreach (DataColumn column in data.Columns) {
+				var heatPump = HeatPumpTypeHelper.TryParse(column.ColumnName);
+				if (heatPump != null) {
+					heatpumps.Add(Tuple.Create(column.ColumnName, heatPump.Value));
+				}
+
+				var heaterCol = HeaterTypeHelper.TryParse(column.ColumnName);
+				if (heaterCol != null) {
+					heater.Add(Tuple.Create(column.ColumnName, heaterCol.Value));
+				}
+			}
+
 			foreach (DataRow row in data.Rows) {
+				var cooling = row.Field<string>(Fields.HeatingCooling)
+					.Equals("c", StringComparison.InvariantCultureIgnoreCase);
+				var heatPumpCoP = new Dictionary<HeatPumpType, double>();
+				foreach (var entry in heatpumps) {
+					var val = row.ParseDoubleOrGetDefault(entry.Item1, double.NaN);
+					if (double.IsNaN(val)) { continue; }
+					heatPumpCoP.Add(entry.Item2, val);
+				}
+
+				var heaterEfficiency = new Dictionary<HeaterType, double>();
+				foreach (var entry in heater) {
+					var val = row.ParseDoubleOrGetDefault(entry.Item1, double.NaN);
+					if (double.IsNaN(val)) { continue; }
+					heaterEfficiency.Add(entry.Item2, val);
+				}
 				entries.Add(
 					new EnvironmentalConditionMapEntry(
 						row.ParseDouble(Fields.EnvTemp).DegCelsiusToKelvin(),
 						row.ParseDouble(Fields.Solar).SI<WattPerSquareMeter>(),
-						row.ParseDouble(Fields.WeightingFactor)));
+						row.ParseDouble(Fields.WeightingFactor),
+						heatPumpCoP,
+						heaterEfficiency));
 			}
 
 			var sum = entries.Sum(e => e.Weighting);
@@ -72,6 +104,8 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
 			public const string EnvTemp = "EnvTemp";
 			public const string Solar = "Solar";
 			public const string WeightingFactor = "WeightingFactor";
+
+			public const string HeatingCooling = "heating/cooling";
 		}
 	}
 }
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
index e506ec9a26..251db4d677 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
@@ -625,7 +625,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 					ParkBrakeAndDoors = 0,
 					CycleTime = 1.SI<Second>()
 				},
-				SSMInputs = new SSMEngineeringInputs() {
+				SSMInputsCooling = new SSMEngineeringInputs() {
 					MechanicalPower = busAux.HVACData.MechanicalPowerDemand,
 					ElectricPower = busAux.HVACData.ElectricalPowerDemand,
 					AuxHeaterPower = busAux.HVACData.AuxHeaterPower,
@@ -695,7 +695,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 					ParkBrakeAndDoors = 0,
 					CycleTime = 1.SI<Second>()
 				},
-				SSMInputs = new SSMEngineeringInputs() {
+				SSMInputsCooling = new SSMEngineeringInputs() {
 					MechanicalPower = 0.SI<Watt>(),
 					ElectricPower = 0.SI<Watt>(),
 					AuxHeaterPower = 0.SI<Watt>(),
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs
index 09cfb91903..29bbf551ab 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs
@@ -34,12 +34,18 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 	public interface IPrimaryBusAuxiliaryDataAdapter : IAuxiliaryDataAdapter
 	{
 		AuxiliaryConfig CreateBusAuxiliariesData(Mission mission, IVehicleDeclarationInputData primaryVehicle, VectoRunData runData);
-		IDictionary<string, AuxiliaryDataAdapter.ElectricConsumerEntry> GetElectricConsumers(Mission mission, IVehicleDeclarationInputData completedVehicle, IActuations actuations, VehicleClass vehicleClass);
-		ElectricsUserInputsConfig GetDefaultElectricalUserConfig();
-		double CalculateAlternatorEfficiency(IList<IAlternatorDeclarationInputData> alternators);
-		IPneumaticsConsumersDemand CreatePneumaticAuxConfig(RetarderType retarderType);
-		SSMInputs GetDefaulSSMInputs(IFuelProperties heatingFuel);
-		TechnologyBenefits SelectBenefitForFloorType(FloorType floorType, List<SSMTechnology> onVehicle);
+		
+		//IDictionary<string, AuxiliaryDataAdapter.ElectricConsumerEntry> GetElectricConsumers(Mission mission, IVehicleDeclarationInputData completedVehicle, IActuations actuations, VehicleClass vehicleClass);
+		
+		//ElectricsUserInputsConfig GetDefaultElectricalUserConfig();
+		
+		//double CalculateAlternatorEfficiency(IList<IAlternatorDeclarationInputData> alternators);
+		
+		//IPneumaticsConsumersDemand CreatePneumaticAuxConfig(RetarderType retarderType);
+		
+		//SSMInputs GetDefaulSSMInputs(IFuelProperties heatingFuel);
+		
+		//TechnologyBenefits SelectBenefitForFloorType(FloorType floorType, List<SSMTechnology> onVehicle);
 	}
 
 
@@ -377,23 +383,30 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 				StopBrakeActuation = Constants.BusAuxiliaries.PneumaticConsumersDemands.StopBrakeActuation,
 			};
 		}
-		public virtual ISSMDeclarationInputs CreateSSMModelParameters(IBusAuxiliariesDeclarationData busAuxInputData, Mission mission, IFuelProperties heatingFuel, LoadingType loadingType)
+
+
+
+		public virtual ISSMDeclarationInputs CreateSSMModelParameters(IBusAuxiliariesDeclarationData busAuxInputData,
+			Mission mission,
+			LoadingType loadingType, BusHVACSystemConfiguration applicableHVACConfiguration,
+			HeatPumpType driverHeatpumpType, HeatPumpType passengerHeatpumpType, Watt auxHeaterPower,
+			IFuelProperties heatingFuel)
 		{
 			var busParams = mission.BusParameter;
-
+			
 			var isDoubleDecker = busParams.VehicleCode.IsDoubleDeckerBus();
-			var internalLength = busParams.HVACConfiguration == BusHVACSystemConfiguration.Configuration2
+			var internalLength = applicableHVACConfiguration == BusHVACSystemConfiguration.Configuration2
 				? 2 * Constants.BusParameters.DriverCompartmentLength // OK
 				: DeclarationData.BusAuxiliaries.CalculateInternalLength(busParams.VehicleLength,
 				busParams.VehicleCode, 10); // missing: correction length for low floor buses
 			var internalHeight = DeclarationData.BusAuxiliaries.CalculateInternalHeight(mission.BusParameter.VehicleCode, RegistrationClass.II, busParams.BodyHeight);
-			var coolingPower = CalculateMaxCoolingPower(null, null, mission);
+			var coolingPower = CalculateMaxCoolingPower(mission, applicableHVACConfiguration);
 
 			var retVal = GetDefaulSSMInputs(heatingFuel);
 			retVal.BusFloorType = busParams.VehicleCode.GetFloorType();
 			retVal.Technologies = GetSSMTechnologyBenefits(busAuxInputData, mission.BusParameter.VehicleCode.GetFloorType());
 
-			retVal.FuelFiredHeaterPower = busParams.HVACAuxHeaterPower;
+			retVal.FuelFiredHeaterPower = auxHeaterPower;
 			retVal.BusWindowSurface = DeclarationData.BusAuxiliaries.WindowHeight(busParams.DoubleDecker) * internalLength +
 									DeclarationData.BusAuxiliaries.FrontAndRearWindowArea(busParams.DoubleDecker);
 			retVal.BusSurfaceArea = 2 * (internalLength * busParams.VehicleWidth + internalLength * internalHeight +
@@ -405,22 +418,41 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 				DeclarationData.BusAuxiliaries.CalculateBusFloorSurfaceArea(internalLength, busParams.VehicleWidth) *
 				(loadingType == LoadingType.LowLoading ? mission.BusParameter.PassengerDensityLow : mission.BusParameter.PassengerDensityRef) *
 				(loadingType == LoadingType.LowLoading ? mission.MissionType.GetLowLoadFactorBus() : 1.0) + 1; // add driver for 'heat input'
-			retVal.VentilationRate = DeclarationData.BusAuxiliaries.VentilationRate(busParams.HVACConfiguration, false);
-			retVal.VentilationRateHeating = DeclarationData.BusAuxiliaries.VentilationRate(busParams.HVACConfiguration, true);
+			retVal.VentilationRate = DeclarationData.BusAuxiliaries.VentilationRate(applicableHVACConfiguration, false);
+			retVal.VentilationRateHeating = DeclarationData.BusAuxiliaries.VentilationRate(applicableHVACConfiguration, true);
 
-			retVal.HVACMaxCoolingPower = coolingPower.Item1 + coolingPower.Item2;
-			retVal.HVACCompressorType = busParams.HVACCompressorType; // use passenger compartment
-			retVal.COP = DeclarationData.BusAuxiliaries.CalculateCOP(
+			//retVal.HVACMaxCoolingPower = coolingPower.Item1 + coolingPower.Item2;
+			retVal.HVACMaxCoolingPowerDriver = coolingPower.Item1;
+			retVal.HVACMaxCoolingPowerPassenger = coolingPower.Item2;
 
-				coolingPower.Item1, HeatPumpType.none, coolingPower.Item2, busParams.HVACCompressorType,
-				busParams.VehicleCode.GetFloorType());
-			retVal.HVACTechnology = $"{busParams.HVACConfiguration.GetName()} " +
-									$"({string.Join(", ", busParams.HVACCompressorType.GetName(), HeatPumpType.none.GetName())})";
+			retVal.HeatPumpTypeDriverCompartment = driverHeatpumpType;
+			retVal.HeatPumpTypePassengerCompartment = passengerHeatpumpType;
 
-			//SetHVACParameters(retVal, vehicleData, mission);
+			retVal.HVACSystemConfiguration = applicableHVACConfiguration;
 
+			retVal.HVACCompressorType = passengerHeatpumpType; // use passenger compartment
+			
 			return retVal;
 		}
+
+		private HVACParameters GetHVACParams(VectoSimulationJobType vehicleType, BusParameters busParams)
+		{
+			switch (vehicleType) {
+				case VectoSimulationJobType.ConventionalVehicle:
+					return busParams.HVACConventional;
+				case VectoSimulationJobType.ParallelHybridVehicle:
+				case VectoSimulationJobType.SerialHybridVehicle:
+				case VectoSimulationJobType.IEPC_S:
+				case VectoSimulationJobType.IHPC:
+					return busParams.HVACHEV;
+				case VectoSimulationJobType.BatteryElectricVehicle:
+				case VectoSimulationJobType.IEPC_E:
+					return busParams.HVACPEV;
+				default:
+					throw new ArgumentOutOfRangeException(nameof(vehicleType), vehicleType, null);
+			}
+		}
+
 		protected virtual TechnologyBenefits GetSSMTechnologyBenefits(IBusAuxiliariesDeclarationData inputData, FloorType floorType)
 		{
 			var onVehicle = new List<SSMTechnology>();
@@ -502,7 +534,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 			};
 		}
 
-		protected virtual Tuple<Watt, Watt> CalculateMaxCoolingPower(IVehicleDeclarationInputData vehicleData, IVehicleDeclarationInputData primaryVehicle, Mission mission)
+		protected virtual Tuple<Watt, Watt> CalculateMaxCoolingPower(Mission mission, BusHVACSystemConfiguration hvacConfiguration)
 		{
 			var busParams = mission.BusParameter;
 
@@ -513,9 +545,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 			var volume = length * height * busParams.VehicleWidth;
 
 			var driver = DeclarationData.BusAuxiliaries.HVACMaxCoolingPower.DriverMaxCoolingPower(
-				busParams.HVACConfiguration, mission.MissionType);
+				hvacConfiguration, mission.MissionType);
 			var passenger = DeclarationData.BusAuxiliaries.HVACMaxCoolingPower.PassengerMaxCoolingPower(
-				busParams.HVACConfiguration, mission.MissionType, volume);
+				hvacConfiguration, mission.MissionType, volume);
 
 			return Tuple.Create(driver, passenger);
 		}
@@ -526,6 +558,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 		{
 			var actuations = DeclarationData.BusAuxiliaries.ActuationsMap.Lookup(runData.Mission.MissionType);
 
+			var hvacParams = GetHVACParams(primaryVehicle.VehicleType, mission.BusParameter);
+			
+			var applicableHVACConfigCooling = DeclarationData.BusAuxiliaries.GetHVACConfig(hvacParams.HVACConfiguration,
+				HeatPumpType.none, hvacParams.HeatPumpTypePassengerCompartmentCooling);
+			var applicableHVACConfigHeating = DeclarationData.BusAuxiliaries.GetHVACConfig(hvacParams.HVACConfiguration,
+				HeatPumpType.none, hvacParams.HeatPumpTypePassengerCompartmentHeating);
+
 			var retVal = new AuxiliaryConfig
 			{
 				InputData = primaryVehicle.Components.BusAuxiliaries,
@@ -533,8 +572,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 				PneumaticUserInputsConfig = GetPneumaticUserConfig(primaryVehicle, mission),
 				PneumaticAuxillariesConfig = CreatePneumaticAuxConfig(runData.Retarder.Type),
 				Actuations = actuations,
-				SSMInputs = CreateSSMModelParameters(
-					primaryVehicle.Components.BusAuxiliaries, mission, FuelData.Diesel, runData.Loading),
+				SSMInputsCooling = CreateSSMModelParameters(primaryVehicle.Components.BusAuxiliaries, mission, 
+					runData.Loading, applicableHVACConfigCooling, HeatPumpType.none, hvacParams.HeatPumpTypePassengerCompartmentCooling, hvacParams.HVACAuxHeaterPower, FuelData.Diesel),
+				SSMInputsHeating = CreateSSMModelParameters(primaryVehicle.Components.BusAuxiliaries, mission,
+					runData.Loading, applicableHVACConfigCooling, HeatPumpType.none, hvacParams.HeatPumpTypePassengerCompartmentHeating, hvacParams.HVACAuxHeaterPower, FuelData.Diesel),
 				VehicleData = runData.VehicleData,
 			};
 
@@ -596,11 +637,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 
 	public class SpecificCompletedBusAuxiliaryDataAdapter : PrimaryBusAuxiliaryDataAdapter, ICompletedBusAuxiliaryDataAdapter
 	{
-		private readonly IPrimaryBusAuxiliaryDataAdapter _primaryBusDataAdapter;
+		private readonly PrimaryBusAuxiliaryDataAdapter _primaryBusDataAdapter;
 
 		public SpecificCompletedBusAuxiliaryDataAdapter(IPrimaryBusAuxiliaryDataAdapter primaryBusDataAdapter)
 		{
-			_primaryBusDataAdapter = primaryBusDataAdapter;
+			_primaryBusDataAdapter = primaryBusDataAdapter as PrimaryBusAuxiliaryDataAdapter;
 		}
 		private double GetNumberOfPassengers(Mission mission, Meter length, Meter width, double registeredPassengerSeats,
 			double registeredPassengersStanding, LoadingType loading)
@@ -653,11 +694,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 
 		#endregion
 
-		private Tuple<Watt, Watt> CalculateMaxCoolingPower(IVehicleDeclarationInputData completedVehicle, IVehicleDeclarationInputData primaryVehicle,
-			Mission mission)
+		private Tuple<Watt, Watt> CalculateMaxCoolingPower(IVehicleDeclarationInputData completedVehicle,
+			IVehicleDeclarationInputData primaryVehicle,
+			Mission mission, BusHVACSystemConfiguration hvacConfiguration)
 		{
-			var hvacConfiguration = completedVehicle.Components.BusAuxiliaries.HVACAux.SystemConfiguration;
-			if (!hvacConfiguration.HasValue || hvacConfiguration.IsOneOf(BusHVACSystemConfiguration.Configuration0, BusHVACSystemConfiguration.Unknown))
+			//var hvacConfiguration = completedVehicle.Components.BusAuxiliaries.HVACAux.SystemConfiguration;
+			if (hvacConfiguration.IsOneOf(BusHVACSystemConfiguration.Configuration0, BusHVACSystemConfiguration.Unknown))
 			{
 				throw new VectoException(
 					$"HVAC Configuration {hvacConfiguration.ToXmlFormat()} is invalid for final step");
@@ -705,70 +747,92 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 			};
 		}
 
-		private SSMInputs GetCompletedSSMInput(Mission mission, IVehicleDeclarationInputData completedVehicle,
+		private (SSMInputs, SSMInputs) GetCompletedSSMInput(Mission mission,
+			IVehicleDeclarationInputData completedVehicle,
 			IVehicleDeclarationInputData primaryVehicle, LoadingType loadingType)
 		{
-			var isDoubleDecker = completedVehicle.VehicleCode.IsDoubleDeckerBus();
+			
 			var hvacConfiguration = completedVehicle.Components.BusAuxiliaries.HVACAux.SystemConfiguration;
 			var busAux = completedVehicle.Components.BusAuxiliaries.HVACAux;
 
+			if (hvacConfiguration == null || hvacConfiguration.Value == BusHVACSystemConfiguration.Configuration0) {
+				throw new VectoException("HVAC Configuration has to be set for completed stage!");
+			}
 
-			if (mission.BusParameter.SeparateAirDistributionDuctsHVACCfg.Contains(hvacConfiguration) &&
-				(busAux.SeparateAirDistributionDucts == null || !busAux.SeparateAirDistributionDucts.Value))
-			{
-				throw new VectoException("Input parameter 'separate air distribution ducts' has to be set to 'true' for vehicle group '{0}' and HVAC configuration '{1}'",
+			if (mission.BusParameter.SeparateAirDistributionDuctsHVACCfg.Contains(hvacConfiguration.Value) &&
+				(busAux.SeparateAirDistributionDucts == null || !busAux.SeparateAirDistributionDucts.Value)) {
+				throw new VectoException(
+					"Input parameter 'separate air distribution ducts' has to be set to 'true' for vehicle group '{0}' and HVAC configuration '{1}'",
 					mission.BusParameter.BusGroup.GetClassNumber(), hvacConfiguration.GetName());
 			}
 
-			if (completedVehicle.NumberPassengerSeatsLowerDeck == null)
-			{
+			if (completedVehicle.NumberPassengerSeatsLowerDeck == null) {
 				throw new VectoException("NumberOfPassengerSeatsLowerDeck input parameter is required");
 			}
-			if (completedVehicle.NumberPassengerSeatsUpperDeck == null)
-			{
+
+			if (completedVehicle.NumberPassengerSeatsUpperDeck == null) {
 				throw new VectoException("NumberOfPassengerSeatsUpperDeck input parameter is required");
 			}
-			if (completedVehicle.NumberPassengersStandingLowerDeck == null)
-			{
+
+			if (completedVehicle.NumberPassengersStandingLowerDeck == null) {
 				throw new VectoException("NumberOfPassengersStandingLowerDeck input parameter is required");
 			}
-			if (completedVehicle.NumberPassengersStandingUpperDeck == null)
-			{
+
+			if (completedVehicle.NumberPassengersStandingUpperDeck == null) {
 				throw new VectoException("NumberOfPassengersStandingUpperDeck input parameter is required");
 			}
-			if (busAux.HeatPumpTypeCoolingDriverCompartment == null)
-			{
+
+			if (busAux.HeatPumpTypeCoolingDriverCompartment == null) {
 				throw new VectoException("HeatPumpTypeDriverCompartment Cooling input parameter is required");
 			}
-			if (busAux.HeatPumpTypeHeatingDriverCompartment == null)
-			{
+
+			if (busAux.HeatPumpTypeHeatingDriverCompartment == null) {
 				throw new VectoException("HeatPumpTypeDriverCompartment Heating input parameter is required");
 			}
-			if (busAux.HeatPumpTypeCoolingPassengerCompartment == null)
-			{
+
+			if (busAux.HeatPumpTypeCoolingPassengerCompartment == null) {
 				throw new VectoException("HeatPumpTypePassengerCompartment Cooling input parameter is required");
 			}
-			if (busAux.HeatPumpTypeHeatingPassengerCompartment == null)
-			{
+
+			if (busAux.HeatPumpTypeHeatingPassengerCompartment == null) {
 				throw new VectoException("HeatPumpTypePassengerCompartment Heating input parameter is required");
 			}
 
-
-			if (hvacConfiguration.RequiresDriverAC() && busAux.HeatPumpTypeCoolingDriverCompartment == HeatPumpType.none && busAux.HeatPumpTypeHeatingDriverCompartment == HeatPumpType.none)
-			{
-				throw new VectoException("HVAC System Configuration {0} requires DriverAC Technology", hvacConfiguration);
+			if (hvacConfiguration.RequiresDriverAC() &&
+				(busAux.HeatPumpTypeCoolingDriverCompartment == HeatPumpType.none ||
+				busAux.HeatPumpTypeHeatingDriverCompartment == HeatPumpType.none)) {
+				throw new VectoException("HVAC System Configuration {0} requires a Driver Heatpump Technology",
+					hvacConfiguration);
 			}
 
-			if (hvacConfiguration.RequiresPassengerAC() && busAux.HeatPumpTypeCoolingPassengerCompartment == HeatPumpType.none && busAux.HeatPumpTypeHeatingPassengerCompartment == HeatPumpType.none)
-			{
-				throw new VectoException("HVAC System Configuration {0} requires PassengerAC Technology", hvacConfiguration);
+			if (hvacConfiguration.RequiresPassengerAC() &&
+				(busAux.HeatPumpTypeCoolingPassengerCompartment == HeatPumpType.none ||
+				busAux.HeatPumpTypeHeatingPassengerCompartment == HeatPumpType.none)) {
+				throw new VectoException("HVAC System Configuration {0} requires a Passenger Heatpump Technology",
+					hvacConfiguration);
 			}
 
+			var applicableSystemConfigCooling = DeclarationData.BusAuxiliaries.GetHVACConfig(hvacConfiguration.Value,
+				busAux.HeatPumpTypeCoolingDriverCompartment.Value, busAux.HeatPumpTypeCoolingPassengerCompartment.Value);
+			var applicableSystemConfigHeating = DeclarationData.BusAuxiliaries.GetHVACConfig(hvacConfiguration.Value,
+				busAux.HeatPumpTypeHeatingDriverCompartment.Value, busAux.HeatPumpTypeHeatingPassengerCompartment.Value);
 
+			var ssmCooling = DoGetSsmInputs(mission, completedVehicle, primaryVehicle, loadingType,
+				applicableSystemConfigCooling, busAux.HeatPumpTypeCoolingDriverCompartment.Value,
+				busAux.HeatPumpTypeCoolingPassengerCompartment.Value);
+			var ssmHeating = DoGetSsmInputs(mission, completedVehicle, primaryVehicle, loadingType,
+				applicableSystemConfigHeating, busAux.HeatPumpTypeHeatingDriverCompartment.Value,
+				busAux.HeatPumpTypeHeatingPassengerCompartment.Value);
 
-			var heatPumpTypeDriverCompartment = busAux.HeatPumpTypeCoolingPassengerCompartment.Value;
+			return (ssmCooling, ssmHeating);
+		}
 
-			var heatPumpTypePassengerCompartment = busAux.HeatPumpTypeCoolingPassengerCompartment.Value;
+		private SSMInputs DoGetSsmInputs(Mission mission, IVehicleDeclarationInputData completedVehicle,
+			IVehicleDeclarationInputData primaryVehicle, LoadingType loadingType,
+			BusHVACSystemConfiguration hvacConfiguration, HeatPumpType heatPumpTypeDriverCompartment,
+			HeatPumpType heatPumpTypePassengerCompartment)
+		{
+			var isDoubleDecker = completedVehicle.VehicleCode.IsDoubleDeckerBus();
 
 			var internalLength = hvacConfiguration == BusHVACSystemConfiguration.Configuration2
 				? 2 * Constants.BusParameters.DriverCompartmentLength // OK
@@ -782,16 +846,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 			var internalHeight = DeclarationData.BusAuxiliaries.CalculateInternalHeight(completedVehicle.VehicleCode, completedVehicle.RegisteredClass, completedVehicle.Height);
 			var correctedBusWidth = DeclarationData.BusAuxiliaries.CorrectedBusWidth(completedVehicle.Width);
 
-			var coolingPower = CalculateMaxCoolingPower(completedVehicle, primaryVehicle, mission);
-
-
-			var floorType = completedVehicle.VehicleCode.GetFloorType();
+			var coolingPower = CalculateMaxCoolingPower(completedVehicle, primaryVehicle, mission, hvacConfiguration);
 
 			var ssmInputs = _primaryBusDataAdapter.GetDefaulSSMInputs(FuelData.Diesel);
 
 			ssmInputs.BusFloorType = completedVehicle.VehicleCode.GetFloorType();
 			ssmInputs.Technologies = CreateTechnologyBenefits(completedVehicle, primaryVehicle.Components.BusAuxiliaries);
-			ssmInputs.FuelFiredHeaterPower = busAux.AuxHeaterPower;
+			ssmInputs.FuelFiredHeaterPower = completedVehicle.Components.BusAuxiliaries.HVACAux.AuxHeaterPower;
 			ssmInputs.BusWindowSurface = DeclarationData.BusAuxiliaries.WindowHeight(isDoubleDecker) * internalLength +
 										DeclarationData.BusAuxiliaries.FrontAndRearWindowArea(isDoubleDecker);
 			ssmInputs.BusSurfaceArea = 2 * (completedVehicle.Length * correctedBusWidth + internalLength *
@@ -801,21 +862,24 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 			ssmInputs.UValue = DeclarationData.BusAuxiliaries.UValue(completedVehicle.VehicleCode.GetFloorType());
 			ssmInputs.NumberOfPassengers = GetNumberOfPassengers(
 				mission, internalLength, correctedBusWidth,
-				completedVehicle.NumberPassengerSeatsLowerDeck.Value + completedVehicle.NumberPassengerSeatsUpperDeck.Value,
-				completedVehicle.NumberPassengersStandingLowerDeck.Value + completedVehicle.NumberPassengersStandingUpperDeck.Value,
-				loadingType) + 1; // add driver for 'heat input'
+				(completedVehicle.NumberPassengerSeatsLowerDeck ?? 0) + (completedVehicle.NumberPassengerSeatsUpperDeck ?? 0),
+				(completedVehicle.NumberPassengersStandingLowerDeck ?? 0) + (completedVehicle.NumberPassengersStandingUpperDeck ?? 0),
+				loadingType) + 1; // add driver for 'heat input' // passenger count can't be null as this is checked in the calling method already. use ?? to avoid compiler warning
 			ssmInputs.VentilationRate = DeclarationData.BusAuxiliaries.VentilationRate(hvacConfiguration, false);
 			ssmInputs.VentilationRateHeating = DeclarationData.BusAuxiliaries.VentilationRate(hvacConfiguration, true);
 
-			ssmInputs.HVACMaxCoolingPower = coolingPower.Item1 + coolingPower.Item2;
+			//ssmInputs.HVACMaxCoolingPower = coolingPower.Item1 + coolingPower.Item2;
+			ssmInputs.HVACMaxCoolingPowerDriver = coolingPower.Item1;
+			ssmInputs.HVACMaxCoolingPowerPassenger = coolingPower.Item2;
 
-			//ToDo FK COP calculation
+			//ssmInputs.HeatPumpTypeHeatingDriverCompartment = busAux.HeatPumpTypeHeatingDriverCompartment.Value;
+			ssmInputs.HeatPumpTypeDriverCompartment = heatPumpTypeDriverCompartment;
+			//ssmInputs.HeatPumpTypeHeatingPassengerCompartment = busAux.HeatPumpTypeHeatingPassengerCompartment.Value;
+			ssmInputs.HeatPumpTypePassengerCompartment = heatPumpTypePassengerCompartment;
+
+			ssmInputs.HVACSystemConfiguration = hvacConfiguration;
+			
 			ssmInputs.HVACCompressorType = heatPumpTypePassengerCompartment; // use passenger compartment
-			ssmInputs.HVACTechnology = $"{busAux.SystemConfiguration.GetName()} " +
-									   $"({string.Join(", ", heatPumpTypePassengerCompartment.GetName(), heatPumpTypeDriverCompartment.GetName())})";
-			ssmInputs.COP = DeclarationData.BusAuxiliaries.CalculateCOP(
-				coolingPower.Item1, heatPumpTypeDriverCompartment, coolingPower.Item2, heatPumpTypePassengerCompartment /* average */,
-				floorType);
 
 			return ssmInputs;
 		}
@@ -933,6 +997,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 			var actuations = DeclarationData.BusAuxiliaries.ActuationsMap.Lookup(runData.Mission.MissionType);
 			var primaryBusAuxiliaries = primaryVehicle.Components.BusAuxiliaries;
 
+			var (ssmCooling, ssmHeating) =
+				GetCompletedSSMInput(mission, completedVehicle, primaryVehicle, runData.Loading);
+
 			return new AuxiliaryConfig
 			{
 				InputData = completedVehicle.Components.BusAuxiliaries,
@@ -942,7 +1009,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 					primaryBusAuxiliaries, completedVehicle),
 				PneumaticAuxillariesConfig = _primaryBusDataAdapter.CreatePneumaticAuxConfig(runData.Retarder.Type),
 				Actuations = actuations,
-				SSMInputs = GetCompletedSSMInput(mission, completedVehicle, primaryVehicle, runData.Loading),
+				SSMInputsCooling = ssmCooling,
+				SSMInputsHeating = ssmHeating,
 				VehicleData = runData.VehicleData
 			};
 		}
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/AuxiliaryConfig.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/AuxiliaryConfig.cs
index 6b22d95990..80170b6a7b 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/AuxiliaryConfig.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/AuxiliaryConfig.cs
@@ -31,7 +31,9 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries
 
 		public IPneumaticsConsumersDemand PneumaticAuxillariesConfig { get; internal set; }
 
-		public ISSMInputs SSMInputs { get; internal set; }
+		public ISSMInputs SSMInputsCooling { get; internal set; }
+
+		public ISSMInputs SSMInputsHeating { get; internal set; }
 
 		//public IActuationsMap ActuationsMap { get; internal set; }
 		public IActuations Actuations { get; internal set; }
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/BusAuxiliaries.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/BusAuxiliaries.cs
index 03bf3cc354..ab5e99422d 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/BusAuxiliaries.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/BusAuxiliaries.cs
@@ -47,9 +47,9 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries
 			// SSM HVAC
 			//var ssmPath = FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.HvacUserInputsConfig.SSMFilePath);
 			//var BusDatabase = FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.HvacUserInputsConfig.BusDatabasePath);
-			ssmTool = auxConfig.SSMInputs is ISSMEngineeringInputs ?
-				new SimpleSSMTool(auxConfig.SSMInputs)
-				: (ISSMPowerDemand)new SSMTOOL(auxConfig.SSMInputs);
+			ssmTool = auxConfig.SSMInputsCooling is ISSMEngineeringInputs ?
+				new SimpleSSMTool(auxConfig.SSMInputsCooling)
+				: (ISSMPowerDemand)new SSMTOOL(auxConfig.SSMInputsCooling);
 
 
 			var electricUserInputConfigNoAlternator = new ElectricsUserInputsConfig() {
@@ -166,12 +166,12 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries
 				throw new VectoException("Auxiliary configuration missing!");
 			}
 
-			if (auxConfig.SSMInputs is ISSMEngineeringInputs ssmEngineeringInputs) {
+			if (auxConfig.SSMInputsCooling is ISSMEngineeringInputs ssmEngineeringInputs) {
 				var M14eng = new M14bImpl(ssmEngineeringInputs);
 				return M14eng.AuxHeaterDemand(cycleTime, engineWasteHeatTotal);
 			}
 
-			var M14 = new M14aImpl(new SSMTOOL(auxConfig.SSMInputs));
+			var M14 = new M14aImpl(new SSMTOOL(auxConfig.SSMInputsCooling));
 			return M14.AuxHeaterDemand(cycleTime, engineWasteHeatTotal);
 		}
 
@@ -185,9 +185,9 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries
 			// SSM HVAC
 			//var ssmPath = FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.HvacUserInputsConfig.SSMFilePath);
 			//var BusDatabase = FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.HvacUserInputsConfig.BusDatabasePath);
-			var ssmTool = auxConfig.SSMInputs is ISSMEngineeringInputs ?
-				new SimpleSSMTool(auxConfig.SSMInputs)
-				: (ISSMPowerDemand)new SSMTOOL(auxConfig.SSMInputs);
+			var ssmTool = auxConfig.SSMInputsCooling is ISSMEngineeringInputs ?
+				new SimpleSSMTool(auxConfig.SSMInputsCooling)
+				: (ISSMPowerDemand)new SSMTOOL(auxConfig.SSMInputsCooling);
 
 
 			M0 = new M00Impl(auxConfig.ElectricalUserInputsConfig, Signals, ssmTool.ElectricalWAdjusted);
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/EnvironmentalConditionMapEntry.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/EnvironmentalConditionMapEntry.cs
index 647a794c95..12884e42c7 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/EnvironmentalConditionMapEntry.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/EnvironmentalConditionMapEntry.cs
@@ -1,18 +1,30 @@
-using TUGraz.VectoCommon.BusAuxiliaries;
+using System.Collections.Generic;
+using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.Utils;
 
 namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 {
 	public class EnvironmentalConditionMapEntry : IEnvironmentalConditionsMapEntry
 	{
-		
-		public EnvironmentalConditionMapEntry(Kelvin temperature, WattPerSquareMeter solar, double weight)
+        public EnvironmentalConditionMapEntry(Kelvin temperature, WattPerSquareMeter solar, double weight) : this(
+            temperature, solar, weight, new Dictionary<HeatPumpType, double>(),
+            new Dictionary<HeaterType, double>())
+        { }
+
+        public EnvironmentalConditionMapEntry(Kelvin temperature, WattPerSquareMeter solar, double weight,
+			Dictionary<HeatPumpType, double> heatPumpCoP, Dictionary<HeaterType, double> heaterEfficiency)
 		{
 			Temperature = temperature;
 			Solar = solar;
 			Weighting = weight;
+			HeatPumpCoP = heatPumpCoP;
+			HeaterEfficiency = heaterEfficiency;
 		}
 
+		public IReadOnlyDictionary<HeaterType, double> HeaterEfficiency { get; }
+
+		public IReadOnlyDictionary<HeatPumpType, double> HeatPumpCoP { get; }
+
 		public Kelvin Temperature { get; }
 
 		public WattPerSquareMeter Solar { get; }
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs
index f1d2626a4c..353f544600 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs
@@ -3,6 +3,7 @@ using System.Text;
 using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.HVAC;
+using TUGraz.VectoCore.Models.Declaration;
 
 namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 {
@@ -455,33 +456,71 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 			// Dim I94 = BaseCoolingW_ElectricalVentilation
 			// Dim I95 = BaseVentilationW_ElectricalVentilation
 
-			
+			var cop = GetCoP(genInputs, env);
+			var electricCoolingPower = double.IsNaN(cop)
+				? 0.SI<Watt>()
+				: VectoMath.Min(BaseCoolingW_ElectricalCoolingHeating(env.Temperature, env.Solar),
+					genInputs.ACSystem.HVACMaxCoolingPower) /
+				cop;
 
 			var electricalWBaseCurrentResult =
-				VectoMath.Min(
-					BaseCoolingW_ElectricalCoolingHeating(env.Temperature, env.Solar), genInputs.ACSystem.HVACMaxCoolingPower) /
-				genInputs.ACSystem.COP + BaseHeatingW_ElectricalVentilation(env.Temperature, env.Solar) +
+				electricCoolingPower + BaseHeatingW_ElectricalVentilation(env.Temperature, env.Solar) +
 				BaseCoolingW_ElectricalVentilation(env.Temperature, env.Solar) +
 				BaseVentilationW_ElectricalVentilation(env.Temperature, env.Solar);
 
 			return electricalWBaseCurrentResult * env.Weighting;
 		}
 
-		private Watt CalculateMechanicalWBase(ISSMDeclarationInputs genInputs, IEnvironmentalConditionsMapEntry env)
+		private double GetCoP(ISSMDeclarationInputs genInputs, IEnvironmentalConditionsMapEntry env)
 		{
-			// =MIN(F94,C54*1000)/C59
+			var hvacConfig = genInputs.HVACSystemConfiguration;
+			if (hvacConfig.RequiresDriverAC() && hvacConfig.RequiresPassengerAC()) {
+				var coolingTechDriver = genInputs.HeatPumpTypeDriverCompartment;
+				var coolingTechPassenger = genInputs.HeatPumpTypePassengerCompartment;
+
+				var copDriver = env.HeatPumpCoP.ContainsKey(coolingTechDriver) ? env.HeatPumpCoP[coolingTechDriver] : double.NaN;
+				var copPassenger = env.HeatPumpCoP.ContainsKey(coolingTechPassenger) ? env.HeatPumpCoP[coolingTechPassenger] : double.NaN;
+
+				if (double.IsNaN(copDriver) || double.IsNaN(copPassenger)) {
+					return double.NaN;
+				}
+
+				return (genInputs.ACSystem.HVACMaxCoolingPowerDriver * copDriver + genInputs.ACSystem.HVACMaxCoolingPowerPassenger * copPassenger) /
+						(genInputs.ACSystem.HVACMaxCoolingPowerDriver + genInputs.ACSystem.HVACMaxCoolingPowerPassenger);
+			}
+
+			if (hvacConfig.RequiresPassengerAC()) {
+				var coolingTechPassenger = genInputs.HeatPumpTypePassengerCompartment;
+				var copPassenger = env.HeatPumpCoP.ContainsKey(coolingTechPassenger) ? env.HeatPumpCoP[coolingTechPassenger] : double.NaN;
+				return copPassenger;
+			}
 
+			if (hvacConfig.RequiresDriverAC()) {
+				var coolingTechDriver = genInputs.HeatPumpTypeDriverCompartment;
+				var copDriver = env.HeatPumpCoP.ContainsKey(coolingTechDriver) ? env.HeatPumpCoP[coolingTechDriver] : double.NaN;
+				return copDriver;
+			}
+
+			return double.NaN;
+		}
 
+		private Watt CalculateMechanicalWBase(ISSMDeclarationInputs genInputs, IEnvironmentalConditionsMapEntry env)
+		{
+			// =MIN(F94,C54*1000)/C59
 
 			// Dim F94 = BaseCoolingW_Mechanical
 			// Dim C54 = genInputs.AC_CompressorCapacitykW
 			// Dim C59 = genInputs.AC_COP 
 
-			var MechanicalWBaseCurrentResult = VectoMath.Min(
-													BaseCoolingW_Mechanical(env.Temperature, env.Solar), genInputs.ACSystem.HVACMaxCoolingPower) /
-												genInputs.ACSystem.COP;
+			var cop = GetCoP(genInputs, env);
 
-			return MechanicalWBaseCurrentResult * env.Weighting;
+			var mechanicalWBaseCurrentResult = double.IsNaN(cop)
+				? 0.SI<Watt>()
+				: VectoMath.Min(
+					BaseCoolingW_Mechanical(env.Temperature, env.Solar), genInputs.ACSystem.HVACMaxCoolingPower) /
+				cop;
+
+			return mechanicalWBaseCurrentResult * env.Weighting;
 		}
 
 		//private KilogramPerSecond CalculateFuelLPerHBase(ISSMInputs genInputs, IEnvironmentalConditionsMapEntry env)
@@ -511,7 +550,10 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 			var H94 = BaseCoolingW_ElectricalCoolingHeating(env.Temperature, env.Solar);
 			var H100 = TechListAdjustedCoolingW_ElectricalCoolingHeating;
 			var C54 = genInputs.ACSystem.HVACMaxCoolingPower;
-			var C59 = genInputs.ACSystem.COP;
+			var C59 = GetCoP(genInputs, env);
+			if (double.IsNaN(C59) && H94.IsEqual(0)) {
+				return 0.SI<Watt>();
+			}
 
 			var I93 = BaseHeatingW_ElectricalVentilation(env.Temperature, env.Solar);
 			var I94 = BaseCoolingW_ElectricalVentilation(env.Temperature, env.Solar);
@@ -533,8 +575,10 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 			var F94 = BaseCoolingW_Mechanical(env.Temperature, env.Solar);
 			var F100 = TechListAdjustedCoolingW_Mechanical;
 			var C54 = genInputs.ACSystem.HVACMaxCoolingPower;
-			var C59 = genInputs.ACSystem.COP;
-
+			var C59 = GetCoP(genInputs, env);
+			if (double.IsNaN(C59) && F94.IsEqual(0)) {
+				return 0.SI<Watt>();
+			}
 			var MechanicalWBaseAdjusted = (VectoMath.Min((F94 * (1 - F100)), C54) / C59);
 
 			return MechanicalWBaseAdjusted * env.Weighting;
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs
index ec98baf60b..8eb8d491f9 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs
@@ -112,14 +112,18 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 
 
 		// C54 -  ( KW )
-		public Watt HVACMaxCoolingPower { get; set; }
+		public Watt HVACMaxCoolingPower => (HVACMaxCoolingPowerDriver ?? 0.SI<Watt>()) + (HVACMaxCoolingPowerPassenger ?? 0.SI<Watt>());
 
-		// C59
-		public double COP { get; set; }
+		public Watt HVACMaxCoolingPowerDriver { get; set; }
 
+		public Watt HVACMaxCoolingPowerPassenger { get; set; }
 
-		// C62 - Boolean Yes/No
-		public bool VentilationOnDuringHeating { get; set; }
+        // C59
+        //public double COP { get; set; }
+
+
+        // C62 - Boolean Yes/No
+        public bool VentilationOnDuringHeating { get; set; }
 
 		// C63 - Boolean Yes/No
 		public bool VentilationWhenBothHeatingAndACInactive { get; set; }
@@ -156,7 +160,14 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 		public IAuxHeater AuxHeater => this;
 
 		public ISSMTechnologyBenefits Technologies { get; set; }
-		public string HVACTechnology { get; set; }
+		public string HVACTechnology => $"{HVACSystemConfiguration.GetName()} " +
+										$"({string.Join(", ", HeatPumpTypePassengerCompartment.GetName(), HeatPumpTypeDriverCompartment.GetName())})";
+
+		//public HeatPumpType HeatPumpTypeHeatingDriverCompartment { get; set; }
+		public HeatPumpType HeatPumpTypeDriverCompartment { get; set; }
+		//public HeatPumpType HeatPumpTypeHeatingPassengerCompartment { get; set; }
+		public HeatPumpType HeatPumpTypePassengerCompartment { get; set; }
+		public BusHVACSystemConfiguration HVACSystemConfiguration { get; set; }
 
 		#endregion
 	}
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs
index 0a4d11e144..edf382359f 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs
@@ -67,7 +67,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 		public IHVACConstants HVACConstants { get; set; }
 
 		// Repeat Warning Flags
-		private bool CompressorCapacityInsufficientWarned;
+		//private bool CompressorCapacityInsufficientWarned;
 
 		// Base Values
 		public Watt ElectricalWBase => Calculate.ElectricalWBase; // .SI(Of Watt)()
@@ -89,10 +89,10 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 			get {
 				var mechAdjusted = Calculate.MechanicalWBaseAdjusted;
 
-				if (CompressorCapacityInsufficientWarned == false && (mechAdjusted) / (1000 * SSMInputs.ACSystem.COP) > SSMInputs.ACSystem.HVACMaxCoolingPower) {
-					LoggingObject.Logger<SSMTOOL>().Warn("HVAC SSM :AC-Compressor Capacity unable to service cooling, run continues as if capacity was sufficient.");
-					CompressorCapacityInsufficientWarned = true;
-				}
+				//if (CompressorCapacityInsufficientWarned == false && (mechAdjusted) / (1000 * SSMInputs.ACSystem.COP) > SSMInputs.ACSystem.HVACMaxCoolingPower) {
+				//	LoggingObject.Logger<SSMTOOL>().Warn("HVAC SSM :AC-Compressor Capacity unable to service cooling, run continues as if capacity was sufficient.");
+				//	CompressorCapacityInsufficientWarned = true;
+				//}
 
 
 				return mechAdjusted; // .SI(Of Watt)()
diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
index f4a18a474d..b3ed546a3f 100644
--- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
+++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
@@ -35,6 +35,7 @@ using System.IO;
 using System.Linq;
 using Newtonsoft.Json.Linq;
 using System.Collections.Concurrent;
+using Castle.DynamicProxy.Generators.Emitters.SimpleAST;
 using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
@@ -49,11 +50,11 @@ using TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricMotor;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
 using TUGraz.VectoCore.Utils;
-
+using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC;
 
 namespace TUGraz.VectoCore.Models.Declaration
 {
-	public static class DeclarationData
+    public static class DeclarationData
 	{
 		/// <summary>
 		/// The standard acceleration for gravity on earth.
@@ -383,19 +384,19 @@ namespace TUGraz.VectoCore.Models.Declaration
 				}
 			}
 
-			public static double CalculateCOP(Watt coolingPwrDriver, HeatPumpType comprTypeDriver, Watt coolingPwrPass, HeatPumpType comprTypePass, FloorType floorType)
-			{
-				if (coolingPwrDriver.IsGreater(0) && comprTypeDriver == HeatPumpType.none) {
-					comprTypeDriver = comprTypePass;
-				}
-				if (coolingPwrDriver.IsEqual(0) && coolingPwrPass.IsEqual(0)) {
-					return 1.0;
-				}
-				return (coolingPwrDriver * comprTypeDriver.COP(floorType) + coolingPwrPass * comprTypePass.COP(floorType)) /
-						(coolingPwrDriver + coolingPwrPass);
-			}
-
-			public static Meter CorrectionLengthDrivetrainVolume(VehicleCode? vehicleCode, bool? lowEntry, int numAxles, bool articulated)
+            public static double CalculateCOP(Watt coolingPwrDriver, double copDriver, Watt coolingPwrPass, double copPass)
+            {
+                if (coolingPwrDriver.IsGreater(0) && copDriver.IsEqual(0)) {
+                    copDriver = copPass;
+                }
+                if (coolingPwrDriver.IsEqual(0) && coolingPwrPass.IsEqual(0)) {
+                    return 1.0;
+                }
+                return (coolingPwrDriver * copDriver + coolingPwrPass * copPass) /
+                        (coolingPwrDriver + coolingPwrPass);
+            }
+
+            public static Meter CorrectionLengthDrivetrainVolume(VehicleCode? vehicleCode, bool? lowEntry, int numAxles, bool articulated)
 			{
 				if ((vehicleCode == VehicleCode.CE || vehicleCode == VehicleCode.CG) && (bool)lowEntry) {
 					switch (numAxles) {
@@ -407,6 +408,73 @@ namespace TUGraz.VectoCore.Models.Declaration
 				}
 				return 0.SI<Meter>();
 			}
+
+			public static BusHVACSystemConfiguration GetHVACConfig(BusHVACSystemConfiguration hvacConfigurationInput, HeatPumpType heatPumpDriver, HeatPumpType heatPumpPassenger)
+			{
+				var hasDriverHP = heatPumpDriver != HeatPumpType.none;
+				var hasPassengerHP = heatPumpPassenger != HeatPumpType.none;
+
+				switch (hvacConfigurationInput) {
+					case BusHVACSystemConfiguration.Unknown:
+					case BusHVACSystemConfiguration.Configuration0:
+						throw new VectoException($"Invalid HVAC Configuration {hvacConfigurationInput}");
+					case BusHVACSystemConfiguration.Configuration1 when !hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration1;
+
+					case BusHVACSystemConfiguration.Configuration2 when !hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration1;
+					case BusHVACSystemConfiguration.Configuration2 when hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration2;
+
+					case BusHVACSystemConfiguration.Configuration3 when !hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration3;
+					case BusHVACSystemConfiguration.Configuration4 when !hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration3;
+
+					case BusHVACSystemConfiguration.Configuration4 when hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration4;
+
+					case BusHVACSystemConfiguration.Configuration5 when !hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration3;
+					case BusHVACSystemConfiguration.Configuration5 when !hasDriverHP && hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration5;
+
+					case BusHVACSystemConfiguration.Configuration6 when !hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration3;
+					case BusHVACSystemConfiguration.Configuration6 when !hasDriverHP && hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration6;
+
+					case BusHVACSystemConfiguration.Configuration7 when !hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration3;
+					case BusHVACSystemConfiguration.Configuration7 when hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration4;
+					case BusHVACSystemConfiguration.Configuration7 when !hasDriverHP && hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration5;
+					case BusHVACSystemConfiguration.Configuration7 when hasDriverHP && hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration7;
+
+					case BusHVACSystemConfiguration.Configuration8 when !hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration3;
+					case BusHVACSystemConfiguration.Configuration8 when !hasDriverHP && hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration5;
+
+					case BusHVACSystemConfiguration.Configuration9 when !hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration3;
+					case BusHVACSystemConfiguration.Configuration9 when hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration4;
+					case BusHVACSystemConfiguration.Configuration9 when !hasDriverHP && hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration5;
+					case BusHVACSystemConfiguration.Configuration9 when hasDriverHP && hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration7;
+
+					case BusHVACSystemConfiguration.Configuration10 when !hasDriverHP && !hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration3;
+					case BusHVACSystemConfiguration.Configuration10 when !hasDriverHP && hasPassengerHP:
+						return BusHVACSystemConfiguration.Configuration6;
+				}
+				throw new VectoException($"Invalid HVAC combination! System Configuration: {hvacConfigurationInput.GetName()}, Driver HeatPump: {heatPumpDriver.GetLabel()}, Passenger HeatPump: {heatPumpPassenger.GetLabel()}");
+			}
+
 		}
 
 		public static class Driver
diff --git a/VectoCore/VectoCore/Models/Declaration/HVACCoolingPower.cs b/VectoCore/VectoCore/Models/Declaration/HVACCoolingPower.cs
index 5be5e15555..8aabc4c513 100644
--- a/VectoCore/VectoCore/Models/Declaration/HVACCoolingPower.cs
+++ b/VectoCore/VectoCore/Models/Declaration/HVACCoolingPower.cs
@@ -12,18 +12,18 @@ namespace TUGraz.VectoCore.Models.Declaration {
 		private static HVACLookup DriverCoolingPower = new HVACLookup(".Buses.HVACCoolingPowerDriver.csv");
 		private static HVACLookup PassengerCoolingPower = new HVACLookup(".Buses.HVACCoolingPowerPassenger.csv");
 
-		public Watt DriverMaxCoolingPower(BusHVACSystemConfiguration? configuration, MissionType mission)
+		public Watt DriverMaxCoolingPower(BusHVACSystemConfiguration configuration, MissionType mission)
 		{
 			return DriverCoolingPower.Lookup(configuration, mission).SI<Watt>();
 		}
 
-		public Watt PassengerMaxCoolingPower(BusHVACSystemConfiguration? configuration, MissionType mission, CubicMeter volume)
+		public Watt PassengerMaxCoolingPower(BusHVACSystemConfiguration configuration, MissionType mission, CubicMeter volume)
 		{
 			return PassengerCoolingPower.Lookup(configuration, mission).SI<WattPerCubicMeter>() * volume;
 		}
 
 
-		private class HVACLookup : LookupData<BusHVACSystemConfiguration?, MissionType, double>{
+		private class HVACLookup : LookupData<BusHVACSystemConfiguration, MissionType, double>{
 			public HVACLookup(string resource)
 			{
 				ResourceId = DeclarationData.DeclarationDataResourcePrefix + resource;
diff --git a/VectoCore/VectoCore/Models/Declaration/Mission.cs b/VectoCore/VectoCore/Models/Declaration/Mission.cs
index 7712016256..369d9555fa 100644
--- a/VectoCore/VectoCore/Models/Declaration/Mission.cs
+++ b/VectoCore/VectoCore/Models/Declaration/Mission.cs
@@ -137,21 +137,11 @@ namespace TUGraz.VectoCore.Models.Declaration
 
 		public bool? LowEntry { get; internal set; }
 
-		// #### HVAC Model Parameters
+		public HVACParameters HVACConventional { get; internal set; }
 
-		public BusHVACSystemConfiguration? HVACConfiguration { get; internal set; }
+		public HVACParameters HVACHEV { get; internal set; }
 
-		public Watt HVACAuxHeaterPower { get; internal set; }
-
-		public HeatPumpType HVACCompressorType { get; internal set; }
-
-		public bool HVACDoubleGlasing { get; internal set; }
-
-		public bool HVACHeatpump { get; internal set; }
-		public bool HVACAdjustableAuxHeater { get; internal set; }
-
-		// used for primary bus only
-		public bool HVACSeparateAirDistributionDucts { get; internal set; }
+		public HVACParameters HVACPEV { get; internal set; }
 
 		public PerSquareMeter PassengerDensityLow { get;  internal set; }
 		public PerSquareMeter PassengerDensityRef { get; internal set; }
@@ -177,7 +167,28 @@ namespace TUGraz.VectoCore.Models.Declaration
 		public Meter EntranceHeight { get; set; }
 		public VehicleCode? VehicleCode { get; set; }
 		public FloorType FloorType { get; set; }
-		public IList<BusHVACSystemConfiguration?> SeparateAirDistributionDuctsHVACCfg { get; set; }
+		public IList<BusHVACSystemConfiguration> SeparateAirDistributionDuctsHVACCfg { get; set; }
+	}
+
+	public class HVACParameters
+	{
+        // #### HVAC Model Parameters
+
+        public BusHVACSystemConfiguration HVACConfiguration { get; internal set; }
+
+        public Watt HVACAuxHeaterPower { get; internal set; }
+
+		public HeatPumpType HeatPumpTypePassengerCompartmentCooling { get; internal set; }
+
+		public HeatPumpType HeatPumpTypePassengerCompartmentHeating { get; internal set; }
+
+		public bool HVACDoubleGlasing { get; internal set; }
+
+		public bool WaterElectricHeater { get; internal set; }
+		public bool HVACAdjustableAuxHeater { get; internal set; }
+
+		// used for primary bus only
+		public bool HVACSeparateAirDistributionDucts { get; internal set; }
 	}
 
 	
diff --git a/VectoCore/VectoCore/Models/Declaration/PrimaryBusSegments.cs b/VectoCore/VectoCore/Models/Declaration/PrimaryBusSegments.cs
index 4fd58baff0..7f54eb239d 100644
--- a/VectoCore/VectoCore/Models/Declaration/PrimaryBusSegments.cs
+++ b/VectoCore/VectoCore/Models/Declaration/PrimaryBusSegments.cs
@@ -141,13 +141,36 @@ namespace TUGraz.VectoCore.Models.Declaration
 							FloorType = row.Field<string>("floortype").ParseEnum<FloorType>(),
 							EntranceHeight =  row.ParseDouble("entranceheight").SI(Unit.SI.Milli.Meter).Cast<Meter>(),
 							VehicleCode = row.Field<string>("vehiclecode").ParseEnum<VehicleCode>(),
-							HVACConfiguration = BusHVACSystemConfigurationHelper.Parse(row.Field<string>("hvacsystemconfiguration")),
-							HVACAuxHeaterPower = row.ParseDouble("hvacauxheater").SI(Unit.SI.Kilo.Watt).Cast<Watt>(),
-							HVACCompressorType = HeatPumpTypeHelper.Parse(row.Field<string>("hvaccompressortype")),
-							HVACDoubleGlasing = row.ParseBoolean("hvacdoubleglasing"),
-							HVACHeatpump = row.ParseBoolean("hvacheatpump"),
-							HVACAdjustableAuxHeater = row.ParseBoolean("hvacadjustableauxiliaryheater"),
-							HVACSeparateAirDistributionDucts = row.ParseBoolean("hvacseparateairdistributionducts"),
+							HVACConventional = new HVACParameters() {
+								HVACConfiguration = BusHVACSystemConfigurationHelper.Parse(row.Field<string>("hvacsystemconfiguration")),
+								HVACAuxHeaterPower = row.ParseDouble("hvacauxheaterconventional").SI(Unit.SI.Kilo.Watt).Cast<Watt>(),
+								HeatPumpTypePassengerCompartmentCooling = HeatPumpTypeHelper.Parse(row.Field<string>("heatpumpcoolingpassengerconventional")),
+								HeatPumpTypePassengerCompartmentHeating = HeatPumpTypeHelper.Parse(row.Field<string>("heatpumpcoolingpassengerconventional")),
+								HVACDoubleGlasing = row.ParseBoolean("hvacdoubleglasing"),
+								WaterElectricHeater = row.ParseBoolean("waterelectricheaterconventional"),
+								HVACAdjustableAuxHeater = row.ParseBoolean("hvacadjustableauxiliaryheater"),
+								HVACSeparateAirDistributionDucts = row.ParseBoolean("hvacseparateairdistributionducts"),
+							},
+							HVACHEV = new HVACParameters() {
+								HVACConfiguration = BusHVACSystemConfigurationHelper.Parse(row.Field<string>("hvacsystemconfiguration")),
+								HVACAuxHeaterPower = row.ParseDouble("hvacauxheaterhev").SI(Unit.SI.Kilo.Watt).Cast<Watt>(),
+								HeatPumpTypePassengerCompartmentCooling = HeatPumpTypeHelper.Parse(row.Field<string>("heatpumpcoolingpassengerhev")),
+								HeatPumpTypePassengerCompartmentHeating = HeatPumpTypeHelper.Parse(row.Field<string>("heatpumpheatingpassengerhev")),
+								HVACDoubleGlasing = row.ParseBoolean("hvacdoubleglasing"),
+								WaterElectricHeater = row.ParseBoolean("waterelectricheaterhev"),
+								HVACAdjustableAuxHeater = row.ParseBoolean("hvacadjustableauxiliaryheater"),
+								HVACSeparateAirDistributionDucts = row.ParseBoolean("hvacseparateairdistributionducts"),
+							},
+							HVACPEV = new HVACParameters() {
+								HVACConfiguration = BusHVACSystemConfigurationHelper.Parse(row.Field<string>("hvacsystemconfiguration")),
+								HVACAuxHeaterPower = row.ParseDouble("hvacauxheaterpev").SI(Unit.SI.Kilo.Watt).Cast<Watt>(),
+								HeatPumpTypePassengerCompartmentCooling = HeatPumpTypeHelper.Parse(row.Field<string>("heatpumpcoolingpassengerpev")),
+								HeatPumpTypePassengerCompartmentHeating = HeatPumpTypeHelper.Parse(row.Field<string>("heatpumpheatingpassengerpev")),
+								HVACDoubleGlasing = row.ParseBoolean("hvacdoubleglasing"),
+								WaterElectricHeater = row.ParseBoolean("waterelectricheaterpev"),
+								HVACAdjustableAuxHeater = row.ParseBoolean("hvacadjustableauxiliaryheater"),
+								HVACSeparateAirDistributionDucts = row.ParseBoolean("hvacseparateairdistributionducts"),
+							},
 							ElectricalConsumers = GetVehicleEquipment(row)
 						}
 					};
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs
index dcee463d4e..d13c92dbb6 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs
@@ -35,18 +35,14 @@ using System.IO;
 using System.Linq;
 using System.Reflection;
 using System.Threading;
-using System.Xml;
 using Newtonsoft.Json;
 using Ninject;
-using NLog.LayoutRenderers;
 using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData;
-using TUGraz.VectoCore.InputData.FileIO.XML;
-using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
 using TUGraz.VectoCore.InputData.Reader.Impl;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
@@ -54,7 +50,6 @@ using TUGraz.VectoCore.Models.SimulationComponent.Data;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.FileIO;
 using TUGraz.VectoCore.OutputData.ModFilter;
-using TUGraz.VectoCore.OutputData.XML;
 using Formatting = Newtonsoft.Json.Formatting;
 
 namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs
index 57130ddcfa..4b4a9d1250 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs
@@ -1,14 +1,8 @@
-using System;
-using TUGraz.VectoCommon.Exceptions;
-using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCore.InputData;
 using TUGraz.VectoCore.InputData.FileIO.XML;
-using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
-using TUGraz.VectoCore.InputData.Reader;
-using TUGraz.VectoCore.InputData.Reader.Impl;
 using TUGraz.VectoCore.OutputData;
-using TUGraz.VectoCore.OutputData.FileIO;
 using TUGraz.VectoCore.OutputData.XML;
 
 namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
diff --git a/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs
index 0e3fbe7f3d..ae43871f44 100644
--- a/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs
+++ b/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs
@@ -24,7 +24,7 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 				body["PneumaticUserInputsConfig"] = SavePneumaticUserConfig(auxCfg.PneumaticUserInputsConfig, basePath);
 				//body["HvacUserInputsConfig"] = SaveHVACUserConfig();
 
-				if (auxCfg.SSMInputs is ISSMDeclarationInputs ssmInputs) {
+				if (auxCfg.SSMInputsCooling is ISSMDeclarationInputs ssmInputs) {
 					body["SSMFilePath"] = string.IsNullOrWhiteSpace(ssmInputs.Source)
 						? ""
 						: JSONFileWriter.GetRelativePath(ssmInputs.Source, basePath);
@@ -207,7 +207,7 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 			retVal["EC_Solar"] = ssmInputs.EnvironmentalConditions.DefaultConditions.Solar.Value();
 			retVal["AC_CompressorType"] = ssmInputs.ACSystem.HVACCompressorType.ToString();
 			retVal["AC_CompressorCapacitykW"] = ssmInputs.ACSystem.HVACMaxCoolingPower.ConvertToKiloWatt().Value;
-			retVal["AC_COP"] = ssmInputs.ACSystem.COP;
+			//retVal["AC_COP"] = ssmInputs.ACSystem.COP;
 			retVal["VEN_VentilationOnDuringHeating"] = ssmInputs.Ventilation.VentilationOnDuringHeating;
 			retVal["VEN_VentilationWhenBothHeatingAndACInactive"] = ssmInputs.Ventilation.VentilationWhenBothHeatingAndACInactive;
 			retVal["VEN_VentilationDuringAC"] = ssmInputs.Ventilation.VentilationDuringAC;
diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
index 7d73e77a65..d746bdcaa8 100644
--- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
@@ -1050,7 +1050,7 @@ namespace TUGraz.VectoCore.OutputData
 			}
 
 			row[string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.HeatingVentilationAirCondition)] =
-				busAux.SSMInputs is ISSMDeclarationInputs inputs ? inputs.HVACTechnology : "engineering mode";
+				busAux.SSMInputsCooling is ISSMDeclarationInputs inputs ? inputs.HVACTechnology : "engineering mode";
 			row[string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.ElectricSystem)] =
 				busAux.ElectricalUserInputsConfig.AlternatorType.GetLabel();
 			row[string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.PneumaticSystem)] = runData.JobType == VectoSimulationJobType.BatteryElectricVehicle ? "-" :
diff --git a/VectoCore/VectoCore/Resources/Declaration/Buses/DefaultClimatic.aenv b/VectoCore/VectoCore/Resources/Declaration/Buses/DefaultClimatic.aenv
index 1af8cbb328..06f5011640 100644
--- a/VectoCore/VectoCore/Resources/Declaration/Buses/DefaultClimatic.aenv
+++ b/VectoCore/VectoCore/Resources/Declaration/Buses/DefaultClimatic.aenv
@@ -1,12 +1,12 @@
-ID , EnvTemp , Solar , WeightingFactor
-1  , -20     , 10    , 0.0053
-2  , -5      , 30    , 0.0826
-3  , 2       , 30    , 0.0826
-4  , 8       , 20    , 0.1661
-5  , 8       , 155   , 0.0826
-6  , 14      , 30    , 0.0826
-7  , 14      , 175   , 0.1243
-8  , 20.5    , 30    , 0.1243
-9  , 20.5    , 200   , 0.1243
-10 , 26      , 150   , 0.0826
-11 , 33      , 150   , 0.0427
+ID , EnvTemp , Solar , WeightingFactor , heating/cooling , R-744 , non R-744 2-stage , non R-744 3-stage , non R-744 4-stage , non R-744 continuous , water electric heater , air electric heater , other electric heater , fuel heater
+1  , -20     , 10    , 0.0053          , h               , 1.80  , -                 , -                 , -                 , -                    , 0.93                  , 0.93                , 0.93                  , 0.80
+2  , -5      , 30    , 0.0826          , h               , 2.04  , 1.54              , 1.64              , 1.68              , 1.78                 , 0.93                  , 0.93                , 0.93                  , 0.80
+3  , 2       , 30    , 0.0826          , h               , 2.50  , 2.00              , 2.10              , 2.10              , 2.22                 , 0.93                  , 0.93                , 0.93                  , 0.80
+4  , 8       , 20    , 0.1661          , h               , 2.98  , 2.70              , 2.80              , 2.82              , 2.94                 , 0.93                  , 0.93                , 0.93                  , 0.80
+5  , 8       , 155   , 0.0826          , h               , 2.98  , 2.70              , 2.80              , 2.82              , 2.94                 , 0.93                  , 0.93                , 0.93                  , 0.80
+6  , 14      , 30    , 0.0826          , h               , 3.38  , 3.24              , 3.34              , 3.36              , 3.50                 , 0.93                  , 0.93                , 0.93                  , 0.80
+7  , 14      , 175   , 0.1243          , h               , 3.38  , 3.24              , 3.34              , 3.36              , 3.50                 , 0.93                  , 0.93                , 0.93                  , 0.80
+8  , 20.5    , 30    , 0.1243          , c               , 3.80  , 3.62              , 3.74              , 3.74              , 3.88                 , -                     , -                   ,                       , -
+9  , 20.5    , 200   , 0.1243          , c               , 3.80  , 3.62              , 3.74              , 3.74              , 3.88                 , -                     , -                   ,                       , -
+10 , 26      , 150   , 0.0826          , c               , 2.82  , 3.12              , 3.22              , 3.24              , 3.36                 , -                     , -                   ,                       , -
+11 , 33      , 150   , 0.0427          , c               , 2.14  , 2.50              , 2.60              , 2.62              , 2.74                 , -                     , -                   ,                       , -
diff --git a/VectoCore/VectoCore/Resources/Declaration/PrimaryBusSegmentationTable.csv b/VectoCore/VectoCore/Resources/Declaration/PrimaryBusSegmentationTable.csv
index d5d16c7894..8cfc10f5b1 100644
--- a/VectoCore/VectoCore/Resources/Declaration/PrimaryBusSegmentationTable.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/PrimaryBusSegmentationTable.csv
@@ -1,26 +1,26 @@
-HDV group , Production Stage , Vehicle Category , HDV SuperGroup , Articulated , Num Axles , TPMLM_Min , TPMLM_Max , doubledecker , vehicle code , low entry , floor type , DesignSpeed , Body  , .vacc file , Cross Wind Correction , CdxA Standard , AxlesWeights        , Width , Length , Body Height , entrance height , CurbMass , PassengersLowerDeck , PassengersUpperDeck , Heavy Urban , Urban , Suburban , Interurban , Coach , ES_External displays , ES_Internal displays , ES_Fridge , ES_Kitchen Standard , HVAC System Configuration , HVAC Compressor type , HVAC Aux Heater , HVAC Double Glasing , HVAC Heatpump , HVAC Adjustable AuxiliaryHeater , HVAC SeparateAirDistributionDucts
+HDV group , Production Stage , Vehicle Category , HDV SuperGroup , Articulated , Num Axles , TPMLM_Min , TPMLM_Max , doubledecker , vehicle code , low entry , floor type , DesignSpeed , Body  , .vacc file , Cross Wind Correction , CdxA Standard , AxlesWeights         , Width , Length , Body Height , entrance height , CurbMass , PassengersLowerDeck , PassengersUpperDeck , Heavy Urban , Urban , Suburban , Interurban , Coach , ES_External displays , ES_Internal displays , ES_Fridge , ES_Kitchen Standard , HVAC System Configuration , HeatPump Cooling Passenger conventional , HeatPump Cooling Passenger HEV , HeatPump Cooling Passenger PEV , HeatPump Heating Passenger conventional , HeatPump Heating Passenger HEV , HeatPump Heating Passenger PEV , HVAC Aux Heater conventional , HVAC Aux Heater HEV , HVAC Aux Heater PEV , WaterElectricHeater conventional , WaterElectricHeater HEV , WaterElectricHeater PEV , HVAC Double Glasing , HVAC Adjustable AuxiliaryHeater , HVAC SeparateAirDistributionDucts
 ## Heavy Bus Primary Vehicles
-P31SD     , 1                , HeavyBus         , P31_32         , -           , 2         , 7.4       , 999       , 0            , CE           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 4.9           , 37.5/62.5           , 2.55  , 12     , 2.8         , 340             , 11975    , 80                  , 0                   , 3           , 3     , 3        , 2.2/1.8    ,       , 3                    , 2                    , 0         , 0                   , 6                         , non R-744 2-stage    , 15              , 0                   , 0             , 0                               , 0
-P31DD     , 1                , HeavyBus         , P31_32         , -           , 2         , 7.4       , 999       , 1            , CF           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 6.2           , 37.5/62.5           , 2.55  , 10.5   , 3.8         , 340             , 12350    , 60                  , 40                  , 3.7         , 3.7   , 3.7      ,            ,       , 3                    , 3                    , 0         , 0                   , 6                         , non R-744 2-stage    , 15              , 0                   , 0             , 0                               , 0
-P32SD     , 1                , HeavyBus         , P31_32         , -           , 2         , 7.4       , 999       , 0            , CA           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.45          , 37.5/62.5           , 2.55  , 12     , 3.15        , 340             , 13150    , 45                  , 0                   ,             ,       ,          , 2.2/1.8    , 1.4   , 2                    , 2                    , 0.5       , 0.5                 , 6                         , non R-744 2-stage    , 30              , 1                   , 0             , 0                               , 1
-P32DD     , 1                , HeavyBus         , P31_32         , -           , 2         , 7.4       , 999       , 1            , CB           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.9           , 37.5/62.5           , 2.55  , 10.5   , 3.7         , 340             , 13400    , 25                  , 35                  ,             ,       ,          , 3/2.5      , 2     , 1                    , 2                    , 1         , 1                   , 6                         , non R-744 2-stage    , 30              , 1                   , 0             , 0                               , 1
+P31SD     , 1                , HeavyBus         , P31_32         , -           , 2         , 7.4       , 999       , 0            , CE           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 4.9           , 37.5/62.5            , 2.55  , 12     , 2.8         , 340             , 11975    , 80                  , 0                   , 3           , 3     , 3        , 2.2/1.8    ,       , 3                    , 2                    , 0         , 0                   , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 15                           , 15                  , 0                   , 0                                , 0                       , 1                       , 0                   , 0                               , 0
+P31DD     , 1                , HeavyBus         , P31_32         , -           , 2         , 7.4       , 999       , 1            , CF           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 6.2           , 37.5/62.5            , 2.55  , 10.5   , 3.8         , 340             , 12350    , 60                  , 40                  , 3.7         , 3.7   , 3.7      ,            ,       , 3                    , 3                    , 0         , 0                   , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 15                           , 15                  , 0                   , 0                                , 0                       , 1                       , 0                   , 0                               , 0
+P32SD     , 1                , HeavyBus         , P31_32         , -           , 2         , 7.4       , 999       , 0            , CA           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.45          , 37.5/62.5            , 2.55  , 12     , 3.15        , 340             , 13150    , 45                  , 0                   ,             ,       ,          , 2.2/1.8    , 1.4   , 2                    , 2                    , 0.5       , 0.5                 , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 30                           , 30                  , 0                   , 0                                , 0                       , 1                       , 1                   , 0                               , 1
+P32DD     , 1                , HeavyBus         , P31_32         , -           , 2         , 7.4       , 999       , 1            , CB           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.9           , 37.5/62.5            , 2.55  , 10.5   , 3.7         , 340             , 13400    , 25                  , 35                  ,             ,       ,          , 3/2.5      , 2     , 1                    , 2                    , 1         , 1                   , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 30                           , 30                  , 0                   , 0                                , 0                       , 1                       , 1                   , 0                               , 1
 ##        , -----            , -----            , -----          , -----       , -----     , -----     , -----     , -----        , -----        , -----     , -----      , -----       , ----- , -----      , -----                 , -----         , -----
-P33SD     , 1                , HeavyBus         , P33_34         , 0           , 3         , 7.4       , 999       , 0            , CE           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 5.0           , 27.3/45.4/27.3      , 2.55  , 14.2   , 2.8         , 340             , 14175    , 104                 , 0                   , 3           , 3     , 3        , 2.2/1.8    ,       , 3                    , 2                    , 0         , 0                   , 6                         , non R-744 2-stage    , 15              , 0                   , 0             , 0                               , 0
-P33DD     , 1                , HeavyBus         , P33_34         , 0           , 3         , 7.4       , 999       , 1            , CF           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 6.3           , 27.3/45.4/27.3      , 2.55  , 13.5   , 3.8         , 340             , 14725    , 78                  , 52                  , 3.7         , 3.7   , 3.7      ,            ,       , 3                    , 3                    , 0         , 0                   , 6                         , non R-744 2-stage    , 15              , 0                   , 0             , 0                               , 0
-P34SD     , 1                , HeavyBus         , P33_34         , 0           , 3         , 7.4       , 999       , 0            , CA           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.53          , 27.3/45.4/27.3      , 2.55  , 13.8   , 3.15        , 340             , 15213    , 59                  , 0                   ,             ,       ,          , 2.2/1.8    , 1.4   , 2                    , 2                    , 0.5       , 0.5                 , 6                         , non R-744 2-stage    , 30              , 1                   , 0             , 0                               , 1
-P34DD     , 1                , HeavyBus         , P33_34         , 0           , 3         , 7.4       , 999       , 1            , CB           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.98          , 27.3/45.4/27.3      , 2.55  , 14     , 3.7         , 340             , 17850    , 33                  , 46                  ,             ,       ,          , 3/2.5      , 2     , 1                    , 4                    , 1         , 1.5                 , 6                         , non R-744 2-stage    , 30              , 1                   , 0             , 0                               , 1
+P33SD     , 1                , HeavyBus         , P33_34         , 0           , 3         , 7.4       , 999       , 0            , CE           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 5.0           , 27.3/45.4/27.3       , 2.55  , 14.2   , 2.8         , 340             , 14175    , 104                 , 0                   , 3           , 3     , 3        , 2.2/1.8    ,       , 3                    , 2                    , 0         , 0                   , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 15                           , 15                  , 0                   , 0                                , 0                       , 1                       , 0                   , 0                               , 0
+P33DD     , 1                , HeavyBus         , P33_34         , 0           , 3         , 7.4       , 999       , 1            , CF           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 6.3           , 27.3/45.4/27.3       , 2.55  , 13.5   , 3.8         , 340             , 14725    , 78                  , 52                  , 3.7         , 3.7   , 3.7      ,            ,       , 3                    , 3                    , 0         , 0                   , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 15                           , 15                  , 0                   , 0                                , 0                       , 1                       , 0                   , 0                               , 0
+P34SD     , 1                , HeavyBus         , P33_34         , 0           , 3         , 7.4       , 999       , 0            , CA           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.53          , 27.3/45.4/27.3       , 2.55  , 13.8   , 3.15        , 340             , 15213    , 59                  , 0                   ,             ,       ,          , 2.2/1.8    , 1.4   , 2                    , 2                    , 0.5       , 0.5                 , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 30                           , 30                  , 0                   , 0                                , 0                       , 1                       , 1                   , 0                               , 1
+P34DD     , 1                , HeavyBus         , P33_34         , 0           , 3         , 7.4       , 999       , 1            , CB           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.98          , 27.03/45.4/27.3      , 2.55  , 14     , 3.7         , 340             , 17850    , 33                  , 46                  ,             ,       ,          , 3/2.5      , 2     , 1                    , 4                    , 1         , 1.5                 , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 30                           , 30                  , 0                   , 0                                , 0                       , 1                       , 1                   , 0                               , 1
 ##        , -----            , -----            , -----          , -----       , -----     , -----     , -----     , -----        , -----        , -----     , -----      , -----       , ----- , -----      , -----                 , -----         , -----
-P35SD     , 1                , HeavyBus         , P35_36         , 1           , 3         , 7.4       , 999       , 0            , CG           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 5.1           , 24.3/35.2/40.5      , 2.55  , 18.2   , 2.8         , 340             , 17800    , 104                 , 0                   , 3           , 3     , 3        , 2.2/1.8    ,       , 3                    , 3                    , 0         , 0                   , 6                         , non R-744 2-stage    , 15              , 0                   , 0             , 0                               , 0
-P35DD     , 1                , HeavyBus         , P35_36         , 1           , 3         , 7.4       , 999       , 1            , CH           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 6.4           , 24.3/35.2/40.5      , 2.55  , 18.2   , 3.8         , 340             , 20250    , 78                  , 52                  , 3.7         , 3.7   , 3.7      ,            ,       ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage    , 15              , 0                   , 0             , 0                               , 0
-P36SD     , 1                , HeavyBus         , P35_36         , 1           , 3         , 7.4       , 999       , 0            , CC           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.60          , 24.3/35.2/40.5      , 2.55  , 18.2   , 3.15        , 340             , 19267    , 59                  , 0                   ,             ,       ,          , 2.2/1.8    , 1.4   ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage    , 30              , 1                   , 0             , 0                               , 1
-P36DD     , 1                , HeavyBus         , P35_36         , 1           , 3         , 7.4       , 999       , 1            , CD           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 4.05          , 24.3/35.2/40.5      , 2.55  , 18.2   , 3.7         , 340             , 21375    , 33                  , 46                  ,             ,       ,          , 3/2.5      , 2     ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage    , 30              , 1                   , 0             , 0                               , 1
+P35SD     , 1                , HeavyBus         , P35_36         , 1           , 3         , 7.4       , 999       , 0            , CG           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 5.1           , 24.3/35.2/40.5       , 2.55  , 18.2   , 2.8         , 340             , 17800    , 104                 , 0                   , 3           , 3     , 3        , 2.2/1.8    ,       , 3                    , 3                    , 0         , 0                   , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 15                           , 15                  , 0                   , 0                                , 0                       , 1                       , 0                   , 0                               , 0
+P35DD     , 1                , HeavyBus         , P35_36         , 1           , 3         , 7.4       , 999       , 1            , CH           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 6.4           , 24.3/35.2/40.5       , 2.55  , 18.2   , 3.8         , 340             , 20250    , 78                  , 52                  , 3.7         , 3.7   , 3.7      ,            ,       ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 15                           , 15                  , 0                   , 0                                , 0                       , 1                       , 0                   , 0                               , 0
+P36SD     , 1                , HeavyBus         , P35_36         , 1           , 3         , 7.4       , 999       , 0            , CC           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.60          , 24.3/35.2/40.5       , 2.55  , 18.2   , 3.15        , 340             , 19267    , 59                  , 0                   ,             ,       ,          , 2.2/1.8    , 1.4   ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 30                           , 30                  , 0                   , 0                                , 0                       , 1                       , 1                   , 0                               , 1
+P36DD     , 1                , HeavyBus         , P35_36         , 1           , 3         , 7.4       , 999       , 1            , CD           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 4.05          , 24.30/35.2/40.5      , 2.55  , 18.2   , 3.7         , 340             , 21375    , 33                  , 46                  ,             ,       ,          , 3/2.5      , 2     ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 30                           , 30                  , 0                   , 0                                , 0                       , 1                       , 1                   , 0                               , 1
+##        , -----            , -----            , -----          , -----       , -----     , -----     , -----     , -----        , -----        , -----     , -----      , -----       , ----- , -----      , -----                 , -----         , -----                ,
+P37SD     , 1                , HeavyBus         , P37_38         , 0           , 4         , 7.4       , 999       , 0            , CE           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 5.1           , 21.4/21.4/35.8/21.4  , 2.55  , 15     , 2.8         , 340             , 15000    , 125                 , 0                   , 3           , 3     , 3        , 2.2/1.8    ,       ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 15                           , 15                  , 0                   , 0                                , 0                       , 1                       , 0                   , 0                               , 0
+P37DD     , 1                , HeavyBus         , P37_38         , 0           , 4         , 7.4       , 999       , 1            , CF           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 6.4           , 21.4/21.4/35.8/21.4  , 2.55  , 15     , 3.8         , 340             , 18700    , 94                  , 62                  , 3.7         , 3.7   , 3.7      ,            ,       ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 15                           , 15                  , 0                   , 0                                , 0                       , 1                       , 0                   , 0                               , 0
+P38SD     , 1                , HeavyBus         , P37_38         , 0           , 4         , 7.4       , 999       , 0            , CA           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.60          , 21.4/21.4/35.8/21.4  , 2.55  , 15     , 3.15        , 340             , 17500    , 70                  , 0                   ,             ,       ,          , 2.2/1.8    , 1.4   ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 30                           , 30                  , 0                   , 0                                , 0                       , 1                       , 1                   , 0                               , 1
+P38DD     , 1                , HeavyBus         , P37_38         , 0           , 4         , 7.4       , 999       , 1            , CB           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 4.05          , 21.4/021.4/35.8/21.4 , 2.55  , 15     , 3.7         , 340             , 21200    , 39                  , 55                  ,             ,       ,          , 3/2.5      , 2     ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 30                           , 30                  , 0                   , 0                                , 0                       , 1                       , 1                   , 0                               , 1
 ##        , -----            , -----            , -----          , -----       , -----     , -----     , -----     , -----        , -----        , -----     , -----      , -----       , ----- , -----      , -----                 , -----         , -----
-P37SD     , 1                , HeavyBus         , P37_38         , 0           , 4         , 7.4       , 999       , 0            , CE           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 5.1           , 21.4/21.4/35.8/21.4 , 2.55  , 15     , 2.8         , 340             , 15000    , 125                 , 0                   , 3           , 3     , 3        , 2.2/1.8    ,       ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage    , 15              , 0                   , 0             , 0                               , 0
-P37DD     , 1                , HeavyBus         , P37_38         , 0           , 4         , 7.4       , 999       , 1            , CF           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 6.4           , 21.4/21.4/35.8/21.4 , 2.55  , 15     , 3.8         , 340             , 18700    , 94                  , 62                  , 3.7         , 3.7   , 3.7      ,            ,       ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage    , 15              , 0                   , 0             , 0                               , 0
-P38SD     , 1                , HeavyBus         , P37_38         , 0           , 4         , 7.4       , 999       , 0            , CA           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.60          , 21.4/21.4/35.8/21.4 , 2.55  , 15     , 3.15        , 340             , 17500    , 70                  , 0                   ,             ,       ,          , 2.2/1.8    , 1.4   ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage    , 30              , 1                   , 0             , 0                               , 1
-P38DD     , 1                , HeavyBus         , P37_38         , 0           , 4         , 7.4       , 999       , 1            , CB           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 4.05          , 21.4/21.4/35.8/21.4 , 2.55  , 15     , 3.7         , 340             , 21200    , 39                  , 55                  ,             ,       ,          , 3/2.5      , 2     ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage    , 30              , 1                   , 0             , 0                               , 1
-##        , -----            , -----            , -----          , -----       , -----     , -----     , -----     , -----        , -----        , -----     , -----      , -----       , ----- , -----      , -----                 , -----         , -----
-P39SD     , 1                , HeavyBus         , P39_40         , 1           , 4         , 7.4       , 999       , 0            , CG           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 5.2           , 20.0/28.2/32.4/19.4 , 2.55  , 21     , 2.6         , 340             , 19600    , 125                 , 0                   , 3           , 3     , 3        , 2.2/1.8    ,       , 3                    , 3                    , 0         , 0                   , 6                         , non R-744 2-stage    , 15              , 0                   , 0             , 0                               , 0
-P39DD     , 1                , HeavyBus         , P39_40         , 1           , 4         , 7.4       , 999       , 1            , CH           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 6.5           , 20.0/28.2/32.4/19.4 , 2.55  , 21     , 3.8         , 340             , 24800    , 94                  , 62                  , 3.7         , 3.7   , 3.7      ,            ,       ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage    , 15              , 0                   , 0             , 0                               , 0
-P40SD     , 1                , HeavyBus         , P39_40         , 1           , 4         , 7.4       , 999       , 0            , CC           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.68          , 20.0/28.2/32.4/19.4 , 2.55  , 21     , 3.15        , 340             , 20950    , 70                  , 0                   ,             ,       ,          , 2.2/1.8    , 1.4   ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage    , 30              , 1                   , 0             , 0                               , 1
-P40DD     , 1                , HeavyBus         , P39_40         , 1           , 4         , 7.4       , 999       , 1            , CD           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 4.13          , 20.0/28.2/32.4/19.4 , 2.55  , 21     , 3.7         , 340             , 24600    , 39                  , 55                  ,             ,       ,          , 3/2.5      , 2     ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage    , 30              , 1                   , 0             , 0                               , 1
+P39SD     , 1                , HeavyBus         , P39_40         , 1           , 4         , 7.4       , 999       , 0            , CG           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 5.2           , 20.0/28.2/32.4/19.4  , 2.55  , 21     , 2.6         , 340             , 19600    , 125                 , 0                   , 3           , 3     , 3        , 2.2/1.8    ,       , 3                    , 3                    , 0         , 0                   , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 15                           , 15                  , 0                   , 0                                , 0                       , 1                       , 0                   , 0                               , 0
+P39DD     , 1                , HeavyBus         , P39_40         , 1           , 4         , 7.4       , 999       , 1            , CH           , 0         , low floor  , 100         ,       , Bus.vacc   , CoachBus              , 6.5           , 20.0/28.2/32.4/19.4  , 2.55  , 21     , 3.8         , 340             , 24800    , 94                  , 62                  , 3.7         , 3.7   , 3.7      ,            ,       ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 15                           , 15                  , 0                   , 0                                , 0                       , 1                       , 0                   , 0                               , 0
+P40SD     , 1                , HeavyBus         , P39_40         , 1           , 4         , 7.4       , 999       , 0            , CC           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 3.68          , 20.0/28.2/32.4/19.4  , 2.55  , 21     , 3.15        , 340             , 20950    , 70                  , 0                   ,             ,       ,          , 2.2/1.8    , 1.4   ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 30                           , 30                  , 0                   , 0                                , 0                       , 1                       , 1                   , 0                               , 1
+P40DD     , 1                , HeavyBus         , P39_40         , 1           , 4         , 7.4       , 999       , 1            , CD           , -         , high floor , 100         ,       , Bus.vacc   , CoachBus              , 4.13          , 20.0/208.2/32.4/19.4 , 2.55  , 21     , 3.7         , 340             , 24600    , 39                  , 55                  ,             ,       ,          , 3/2.5      , 2     ,                      ,                      ,           ,                     , 6                         , non R-744 2-stage                       , non R-744 2-stage              , non R-744 continuous           , none                                    , none                           , non R-744 continuous           , 30                           , 30                  , 0                   , 0                                , 0                       , 1                       , 1                   , 0                               , 1
diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj
index e2e18071af..0c90a52c29 100644
--- a/VectoCore/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore/VectoCore.csproj
@@ -53,6 +53,8 @@
 
 	<ItemGroup>
     <None Remove="Resources\Declaration\Buses\DefaultActuationsMap.apac" />
+    <None Remove="Resources\Declaration\Buses\HeatingDistribution.csv" />
+    <None Remove="Resources\Declaration\Buses\HeatingDistributionCases.csv" />
     <None Remove="Resources\Declaration\VAUXBus\DEFAULT_1-Cylinder_1-Stage_393ccm.acmp" />
     <None Remove="Resources\Declaration\VAUXBus\DEFAULT_2-Cylinder_1-Stage_650ccm.acmp" />
     <None Remove="Resources\Declaration\VAUXBus\DEFAULT_2-Cylinder_2-Stage_398ccm.acmp" />
diff --git a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs
index bdeffa321d..4acc6047b4 100644
--- a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs
@@ -657,8 +657,8 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus
 
 		private void AssertSSMBusParameters(RelatedRun relatedRun, int currentIndex)
 		{
-			var genericBusParam = (relatedRun.VectoRunDataGenericBody.BusAuxiliaries.SSMInputs as ISSMDeclarationInputs).BusParameters;
-			var specificBusParam = (relatedRun.VectoRunDataSpezificBody.BusAuxiliaries.SSMInputs as ISSMDeclarationInputs).BusParameters;
+			var genericBusParam = (relatedRun.VectoRunDataGenericBody.BusAuxiliaries.SSMInputsCooling as ISSMDeclarationInputs).BusParameters;
+			var specificBusParam = (relatedRun.VectoRunDataSpezificBody.BusAuxiliaries.SSMInputsCooling as ISSMDeclarationInputs).BusParameters;
 			
 			AssertPassengerCount(genericBusParam.NumberOfPassengers, 
 				specificBusParam.NumberOfPassengers, currentIndex);
@@ -706,8 +706,8 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus
 
 		private void AssertTechnologyBenefits(RelatedRun relatedRun)
 		{
-			var genericTechnolgyBenefit = (relatedRun.VectoRunDataGenericBody.BusAuxiliaries.SSMInputs as ISSMDeclarationInputs).Technologies;
-			var specificTechnolgyBenefit = (relatedRun.VectoRunDataSpezificBody.BusAuxiliaries.SSMInputs as ISSMDeclarationInputs).Technologies;
+			var genericTechnolgyBenefit = (relatedRun.VectoRunDataGenericBody.BusAuxiliaries.SSMInputsCooling as ISSMDeclarationInputs).Technologies;
+			var specificTechnolgyBenefit = (relatedRun.VectoRunDataSpezificBody.BusAuxiliaries.SSMInputsCooling as ISSMDeclarationInputs).Technologies;
 
 			Assert.AreEqual(0.0, genericTechnolgyBenefit.CValueVariation);
 			Assert.AreEqual(0.02, genericTechnolgyBenefit.HValueVariation);
@@ -728,8 +728,8 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus
 
 		private void AssertBoundaryConditions(RelatedRun relatedRun)
 		{
-			var genericBound = (relatedRun.VectoRunDataGenericBody.BusAuxiliaries.SSMInputs as ISSMDeclarationInputs).BoundaryConditions;
-			var specificBound = (relatedRun.VectoRunDataGenericBody.BusAuxiliaries.SSMInputs as ISSMDeclarationInputs).BoundaryConditions;
+			var genericBound = (relatedRun.VectoRunDataGenericBody.BusAuxiliaries.SSMInputsCooling as ISSMDeclarationInputs).BoundaryConditions;
+			var specificBound = (relatedRun.VectoRunDataGenericBody.BusAuxiliaries.SSMInputsCooling as ISSMDeclarationInputs).BoundaryConditions;
 		
 			Assert.AreEqual(Constants.BusAuxiliaries.SteadyStateModel.GFactor, genericBound.GFactor);
 			Assert.AreEqual(genericBound.GFactor, specificBound.GFactor);
@@ -762,8 +762,8 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus
 
 		private void AssertEnvironmentalConditions(RelatedRun relatedRun)
 		{
-			var genericEnv = (relatedRun.VectoRunDataGenericBody.BusAuxiliaries.SSMInputs as ISSMDeclarationInputs).EnvironmentalConditions;
-			var specificEnv = (relatedRun.VectoRunDataSpezificBody.BusAuxiliaries.SSMInputs as ISSMDeclarationInputs).EnvironmentalConditions;
+			var genericEnv = (relatedRun.VectoRunDataGenericBody.BusAuxiliaries.SSMInputsCooling as ISSMDeclarationInputs).EnvironmentalConditions;
+			var specificEnv = (relatedRun.VectoRunDataSpezificBody.BusAuxiliaries.SSMInputsCooling as ISSMDeclarationInputs).EnvironmentalConditions;
 
 			Assert.AreEqual(Constants.BusAuxiliaries.SteadyStateModel.DefaultSolar, genericEnv.DefaultConditions.Solar);
 			Assert.AreEqual(genericEnv.DefaultConditions.Solar, specificEnv.DefaultConditions.Solar);
@@ -781,8 +781,8 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus
 
 		private void AssertSSMInputs(RelatedRun relatedRun, int currentIndex)
 		{
-			var genericSSMInput = (SSMInputs) relatedRun.VectoRunDataGenericBody.BusAuxiliaries.SSMInputs;
-			var specificSSMInput = (SSMInputs)relatedRun.VectoRunDataSpezificBody.BusAuxiliaries.SSMInputs;
+			var genericSSMInput = (SSMInputs) relatedRun.VectoRunDataGenericBody.BusAuxiliaries.SSMInputsCooling;
+			var specificSSMInput = (SSMInputs)relatedRun.VectoRunDataSpezificBody.BusAuxiliaries.SSMInputsCooling;
 
 			AssertPassengerCount(genericSSMInput.NumberOfPassengers,
 				specificSSMInput.NumberOfPassengers, currentIndex);
@@ -790,7 +790,7 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus
 			AssertHVACMaxCoolingPower(genericSSMInput.HVACMaxCoolingPower.Value(),
 				specificSSMInput.HVACMaxCoolingPower.Value(), currentIndex);
 
-			AssertCOP(genericSSMInput.COP, specificSSMInput.COP, currentIndex);
+			//AssertCOP(genericSSMInput.COP, specificSSMInput.COP, currentIndex);
 
 			Assert.AreEqual(true, genericSSMInput.VentilationOnDuringHeating);
 			Assert.AreEqual(true, specificSSMInput.VentilationOnDuringHeating);
@@ -1210,7 +1210,7 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus
 			Assert.NotNull(run.VehicleData.PassengerCount);
 			Assert.AreEqual(expectedPassengers, run.VehicleData.PassengerCount.Value, 1e-3);
 
-			var ssmInputs = run.BusAuxiliaries.SSMInputs as ISSMDeclarationInputs;
+			var ssmInputs = run.BusAuxiliaries.SSMInputsCooling as ISSMDeclarationInputs;
 			Assert.NotNull(ssmInputs);
 			Assert.AreEqual(expectedPassengers + 1, ssmInputs.NumberOfPassengers, 1e-3); // adding driver for SSM
 		}
@@ -1247,7 +1247,7 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus
 			Assert.NotNull(run.VehicleData.PassengerCount);
 			Assert.AreEqual(expectedPassengers, run.VehicleData.PassengerCount.Value, 1e-3);
 
-			var ssmInputs = run.BusAuxiliaries.SSMInputs as ISSMDeclarationInputs;
+			var ssmInputs = run.BusAuxiliaries.SSMInputsCooling as ISSMDeclarationInputs;
 			Assert.NotNull(ssmInputs);
 			Assert.AreEqual(expectedPassengers + 1, ssmInputs.NumberOfPassengers, 1e-3); // adding driver for SSM
 		}
diff --git a/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs b/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs
index 5b6137b0ed..71f9c77df6 100644
--- a/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs
+++ b/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs
@@ -1036,7 +1036,7 @@ namespace TUGraz.VectoCore.Tests.Models.EngineeringMode
 					ParkBrakeAndDoors = 0,
 					CycleTime = 1.SI<Second>()
 				},
-				SSMInputs = new SSMEngineeringInputs() {
+				SSMInputsCooling = new SSMEngineeringInputs() {
 					MechanicalPower = MechanicalPowerDemand,
 					ElectricPower = ElectricPowerDemand,
 					AuxHeaterPower = AuxHeaterPower,
-- 
GitLab