From 928c2842d6a4d7db0d002c6027c40c44455743d3 Mon Sep 17 00:00:00 2001
From: "VKMTHD\\haraldmartini" <harald.martini@student.tugraz.at>
Date: Tue, 20 Sep 2022 14:08:39 +0200
Subject: [PATCH] added auxiliary data adapter test, renamed ElectricAuxiliary
 to HighVoltageElectricAuxiliary and mark as obsolote added
 ElectricAuxiliaries class implemented lookup class to check if the aux
 technology is applicable for a vehicle architecture

---
 ...clarationDataAdapterGenericCompletedBus.cs |   8 +-
 .../DeclarationDataAdapterHeavyLorry.cs       |  31 +++--
 .../IDeclarationDataAdapter.cs                |  10 +-
 .../DeclarationDataAdapterPrimaryBus.cs       |   8 +-
 .../AuxiliaryDataAdapter.cs                   |  67 ++++++++--
 .../DeclarationDataAdapterSingleBus.cs        |   4 +-
 ...clarationModeCompletedBusRunDataFactory.cs |   2 +-
 ...DeclarationModeHeavyLorryRunDataFactory.cs |   2 +-
 ...tionModeHeavyLorryRunDataFactory_Hybrid.cs |   8 +-
 ...DeclarationModePrimaryBusRunDataFactory.cs |   2 +-
 ...arationModeSingleBusVectoRunDataFactory.cs |   2 +-
 ...rationVTPModeVectoRunDataFactoryLorries.cs |   8 +-
 .../Ports/IElectricEnergyStoragePort.cs       |   2 +-
 VectoCore/VectoCore/Models/Declaration/Fan.cs | 125 +++++++++++++++++-
 .../VectoCore/Models/Declaration/HVAC.cs      |   3 +-
 .../Declaration/IDeclarationAuxiliaryTable.cs |   9 ++
 .../Models/Declaration/PneumaticSystem.cs     |  25 +++-
 .../Models/Declaration/SteeringPump.cs        |  33 ++++-
 .../Models/Simulation/Data/VectoRunData.cs    |   3 +
 .../Simulation/DataBus/IDCDCConverter.cs      |   2 +-
 .../Simulation/Impl/PowertrainBuilder.cs      |  23 ++--
 .../SimulationComponent/DCDCConverter.cs      |  21 ++-
 .../SimulationComponent/ElectricSystem.cs     |   2 +-
 .../Impl/ElectricAuxiliaries.cs               |  58 ++++++++
 ...ary.cs => HighVoltageElectricAuxiliary.cs} |   5 +-
 .../DeclarationDataAdapterTest.cs             | 116 ++++++++++++++++
 .../BatteryElectric/BatteryElectricTest.cs    |   2 +-
 .../Integration/Hybrid/ParallelHybridTest.cs  |   4 +-
 .../Integration/Hybrid/SerialHybridTest.cs    |   2 +-
 VectoCore/VectoCoreTest/Utils/MockBattery.cs  |   4 +-
 30 files changed, 515 insertions(+), 76 deletions(-)
 create mode 100644 VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricAuxiliaries.cs
 rename VectoCore/VectoCore/Models/SimulationComponent/Impl/{ElectricAuxiliary.cs => HighVoltageElectricAuxiliary.cs} (90%)

diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs
index f5d5fe7eae..a858f92554 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs
@@ -49,11 +49,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.CompletedBus.Gener
 				return _engineDataAdapter.CreateEngineData(primaryVehicle, modeIdx, mission);
 			}
 
-			public IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData,
-				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles)
+			public IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
+				IBusAuxiliariesDeclarationData busAuxData,
+				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles,
+				VectoSimulationJobType jobType)
 			{
 				return _auxDataAdapter.CreateAuxiliaryData(auxData, busAuxData, missionType, vehicleClass, vehicleLength,
-					numSteeredAxles);
+					numSteeredAxles, jobType);
 			}
 
 			public AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData)
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs
index 26a5fc3973..08b8fdce66 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs
@@ -158,7 +158,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 
 			public abstract IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
 				IBusAuxiliariesDeclarationData busAuxData,
-				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles);
+				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles,
+				VectoSimulationJobType jobType);
 
 			public AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData)
 			{
@@ -207,10 +208,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 			public override IList<VectoRunData.AuxData> CreateAuxiliaryData(
 				IAuxiliariesDeclarationInputData auxInputData,
 				IBusAuxiliariesDeclarationData busAuxData, MissionType mission, VehicleClass hvdClass,
-				Meter vehicleLength, int? numSteeredAxles)
+				Meter vehicleLength, int? numSteeredAxles, VectoSimulationJobType jobType)
 			{
 				return _auxAdapter.CreateAuxiliaryData(auxInputData, busAuxData, mission, hvdClass, vehicleLength,
-					numSteeredAxles);
+					numSteeredAxles, jobType);
 			}
 		}
 
@@ -257,8 +258,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 
 			protected override GearboxType[] SupportedGearboxTypes { get; }
 
-			public override IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData,
-				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles)
+			public override IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
+				IBusAuxiliariesDeclarationData busAuxData,
+				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles,
+				VectoSimulationJobType jobType)
 			{
 				throw new NotImplementedException();
 			}
@@ -282,8 +285,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 				return _gearboxDataAdapter.CreateGearshiftData(axleRatio, engineIdlingSpeed, type, gearsCount);
 			}
 
-			public override IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData,
-				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles)
+			public override IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
+				IBusAuxiliariesDeclarationData busAuxData,
+				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles,
+				VectoSimulationJobType jobType)
 			{
 				throw new NotImplementedException();
 			}
@@ -317,8 +322,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 				return _gearboxDataAdapter.CreateGearshiftData(axleRatio, null, gearboxType, gearsCount);
 			}
 
-			public override IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData,
-				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles)
+			public override IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
+				IBusAuxiliariesDeclarationData busAuxData,
+				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles,
+				VectoSimulationJobType jobType)
 			{
 				throw new NotImplementedException();
 			}
@@ -416,8 +423,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 				throw new NotImplementedException();
 			}
 
-			public override IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData,
-				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles)
+			public override IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
+				IBusAuxiliariesDeclarationData busAuxData,
+				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles,
+				VectoSimulationJobType jobType)
 			{
 				throw new NotImplementedException();
 			}
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
index ce7438b9d4..fc7dfd6c85 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
@@ -62,7 +62,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 		IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
 			IBusAuxiliariesDeclarationData busAuxData, MissionType missionType, VehicleClass vehicleClass,
-			Meter vehicleLength, int? numSteeredAxles);
+			Meter vehicleLength, int? numSteeredAxles, VectoSimulationJobType jobType);
 		
 		
 		IList<Tuple<PowertrainPosition, ElectricMotorData>> CreateElectricMachines(IElectricMachinesDeclarationInputData electricMachines, IDictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>> torqueLimits, Volt averageVoltage, GearList gears = null);
@@ -100,7 +100,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 		IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
 			IBusAuxiliariesDeclarationData busAuxData, MissionType missionType, VehicleClass vehicleClass,
-			Meter vehicleLength, int? numSteeredAxles);
+			Meter vehicleLength, int? numSteeredAxles, VectoSimulationJobType jobType);
 
 		AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragData, Mission mission, Segment segment);
 	}
@@ -117,7 +117,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 		IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
 			IBusAuxiliariesDeclarationData busAuxData, MissionType missionType, VehicleClass vehicleClass,
-			Meter vehicleLength, int? numSteeredAxles);
+			Meter vehicleLength, int? numSteeredAxles, VectoSimulationJobType jobType);
 
 		AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData);
 
@@ -172,7 +172,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 		RetarderData CreateRetarderData(IRetarderInputData retarderData);
 
 		ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed);
-		IEnumerable<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxInputData, IBusAuxiliariesDeclarationData busAuxInput, MissionType mission, VehicleClass segment, Meter vehicleLength, int? numSteeredAxles);
+		IEnumerable<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxInputData,
+			IBusAuxiliariesDeclarationData busAuxInput, MissionType mission, VehicleClass segment, Meter vehicleLength,
+			int? numSteeredAxles, VectoSimulationJobType jobType);
 		IAuxiliaryConfig CreateBusAuxiliariesData(Mission mission, IVehicleDeclarationInputData primaryVehicle, IVehicleDeclarationInputData completedVehicle, VectoRunData simulationRunData);
 
 		VehicleData CreateVehicleData(ISingleBusInputDataProvider vehicle, Segment segment, Mission mission,
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
index 1964006aba..6a0cd8f739 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
@@ -93,11 +93,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 				return _ptoDataAdapter.CreatePTOTransmissionData(ptoData);
 			}
 
-			public IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData,
-				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles)
+			public IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData,
+				IBusAuxiliariesDeclarationData busAuxData,
+				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles,
+				VectoSimulationJobType jobType)
 			{
 				return _auxDataAdapter.CreateAuxiliaryData(auxData, busAuxData, missionType, vehicleClass, vehicleLength,
-					numSteeredAxles);
+					numSteeredAxles, jobType);
 			}
 
 
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs
index 09cfb91903..7c102cf43e 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs
@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using Ninject.Infrastructure.Language;
 using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
@@ -22,7 +23,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 	{
 		IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxInputData,
 			IBusAuxiliariesDeclarationData busAuxData, MissionType mission, VehicleClass hvdClass, Meter vehicleLength,
-			int? numSteeredAxles);
+			int? numSteeredAxles, VectoSimulationJobType jobType);
 	}
 
 	public interface ICompletedBusAuxiliaryDataAdapter : IPrimaryBusAuxiliaryDataAdapter
@@ -65,10 +66,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 		}
 		public IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxInputData,
 			IBusAuxiliariesDeclarationData busAuxData, MissionType mission, VehicleClass hvdClass, Meter vehicleLength,
-			int? numSteeredAxles)
+			int? numSteeredAxles, VectoSimulationJobType jobType)
 		{
 			CheckDeclarationMode(auxInputData, "AuxiliariesData");
-			return DoCreateAuxiliaryData(auxInputData, busAuxData, mission, hvdClass, vehicleLength, numSteeredAxles);
+			return DoCreateAuxiliaryData(auxInputData, busAuxData, mission, hvdClass, vehicleLength, numSteeredAxles, jobType);
 		}
 
 		public abstract AuxiliaryConfig CreateBusAuxiliariesData(Mission mission, IVehicleDeclarationInputData primaryVehicle, VectoRunData runData);
@@ -76,13 +77,30 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 		protected abstract IList<VectoRunData.AuxData> DoCreateAuxiliaryData(
 			IAuxiliariesDeclarationInputData auxInputData,
 			IBusAuxiliariesDeclarationData busAuxData, MissionType mission, VehicleClass hdvClass, Meter vehicleLength,
-			int? numSteeredAxles);
+			int? numSteeredAxles, VectoSimulationJobType jobType);
 
 
 	}
 
+	public class HeavyLorryPEVAuxiliaryDataAdapter : HeavyLorryAuxiliaryDataAdapter
+	{
+		protected override HashSet<AuxiliaryType> AuxiliaryTypes { get; } = new HashSet<AuxiliaryType>() {
+			AuxiliaryType.ElectricSystem,
+			AuxiliaryType.HVAC,
+			AuxiliaryType.PneumaticSystem,
+			AuxiliaryType.SteeringPump
+		};
+	}
+
 	public class HeavyLorryAuxiliaryDataAdapter : AuxiliaryDataAdapter
 	{
+		protected virtual HashSet<AuxiliaryType> AuxiliaryTypes { get; } = new HashSet<AuxiliaryType>() {
+			AuxiliaryType.ElectricSystem,
+			AuxiliaryType.HVAC,
+			AuxiliaryType.PneumaticSystem,
+			AuxiliaryType.Fan,
+			AuxiliaryType.SteeringPump
+		};
 		#region Overrides of AuxiliaryDataAdapter
 
 		public override AuxiliaryConfig CreateBusAuxiliariesData(Mission mission, IVehicleDeclarationInputData primaryVehicle, VectoRunData runData)
@@ -90,20 +108,22 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 			throw new System.NotImplementedException();
 		}
 
-		protected override IList<VectoRunData.AuxData> DoCreateAuxiliaryData(IAuxiliariesDeclarationInputData auxInputData, IBusAuxiliariesDeclarationData busAuxData,
-			MissionType mission, VehicleClass hdvClass, Meter vehicleLength, int? numSteeredAxles)
+		protected override IList<VectoRunData.AuxData> DoCreateAuxiliaryData(
+			IAuxiliariesDeclarationInputData auxInputData, IBusAuxiliariesDeclarationData busAuxData,
+			MissionType mission, VehicleClass hdvClass, Meter vehicleLength, int? numSteeredAxles,
+			VectoSimulationJobType jobType)
 		{
 			var retVal = new List<VectoRunData.AuxData>();
 
-			if (auxInputData.Auxiliaries.Count != 5)
+			if (!new HashSet<AuxiliaryType>(auxInputData.Auxiliaries.Select(aux => aux.Type)).SetEquals(AuxiliaryTypes))
 			{
 				Log.Error(
-					"In Declaration Mode exactly 5 Auxiliaries must be defined: Fan, Steering pump, HVAC, Electric System, Pneumatic System.");
+					"In Declaration Mode exactly 4 Auxiliaries must be defined for battery electric vehicles: Steering pump, HVAC, Electric System, Pneumatic System.");
 				throw new VectoException(
-					"In Declaration Mode exactly 5 Auxiliaries must be defined: Fan, Steering pump, HVAC, Electric System, Pneumatic System.");
+					"In Declaration Mode exactly 4 Auxiliaries must be defined for battery electric vehicles: Steering pump, HVAC, Electric System, Pneumatic System.");
 			}
 
-			foreach (var auxType in EnumHelper.GetValues<AuxiliaryType>())
+			foreach (var auxType in AuxiliaryTypes)
 			{
 				var auxData = auxInputData.Auxiliaries.FirstOrDefault(a => a.Type == auxType);
 				if (auxData == null)
@@ -114,17 +134,27 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 				var aux = new VectoRunData.AuxData
 				{
 					DemandType = AuxiliaryDemandType.Constant,
-					Technology = auxData.Technology
+					Technology = auxData.Technology,
 				};
 
 				mission = mission.GetNonEMSMissionType();
 				switch (auxType)
 				{
 					case AuxiliaryType.Fan:
+						if (!DeclarationData.Fan.IsApplicable(hdvClass, jobType, auxData.Technology.FirstOrDefault())) {
+							throw new VectoException(
+								$"Fan technology '{auxData.Technology.FirstOrDefault()}' is not applicable for '{jobType}'");
+						}
 						aux.PowerDemand = DeclarationData.Fan.LookupPowerDemand(hdvClass, mission, auxData.Technology.FirstOrDefault());
 						aux.ID = Constants.Auxiliaries.IDs.Fan;
+						aux.IsFullyElectric = DeclarationData.Fan.IsFullyElectric(hdvClass, auxData.Technology.FirstOrDefault());
 						break;
 					case AuxiliaryType.SteeringPump:
+						if (!DeclarationData.SteeringPump.IsApplicable(auxData.Technology, jobType)) {
+							throw new VectoException(
+								$"At least one steering pump technology of '{string.Join(",", auxData.Technology)}' is not applicable for '{jobType}'");
+						}
+
 						if (numSteeredAxles.HasValue && auxData.Technology.Count != numSteeredAxles.Value)
 						{
 							throw new VectoException($"Number of steering pump technologies does not match number of steered axles ({numSteeredAxles.Value}, {auxData.Technology.Count})");
@@ -139,6 +169,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 						aux.ID = Constants.Auxiliaries.IDs.HeatingVentilationAirCondition;
 						break;
 					case AuxiliaryType.PneumaticSystem:
+						if (!DeclarationData.PneumaticSystem.IsApplicable(jobType,
+								auxData.Technology.FirstOrDefault()))
+						{
+							throw new VectoException(
+								$"Pneumatic system technology'{auxData.Technology.FirstOrDefault()}' is not applicable for '{jobType}'");
+						}
 						aux.PowerDemand = DeclarationData.PneumaticSystem.Lookup(mission, auxData.Technology.FirstOrDefault())
 														.PowerDemand;
 						aux.ID = Constants.Auxiliaries.IDs.PneumaticSystem;
@@ -156,9 +192,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 			return retVal;
 		}
 
+
 		#endregion
 	}
 
+
+
 	public class PrimaryBusAuxiliaryDataAdapter : AuxiliaryDataAdapter, IPrimaryBusAuxiliaryDataAdapter
 	{
 		public ElectricsUserInputsConfig GetDefaultElectricalUserConfig()
@@ -541,8 +580,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 			return retVal;
 		}
 
-		protected override IList<VectoRunData.AuxData> DoCreateAuxiliaryData(IAuxiliariesDeclarationInputData auxInputData, IBusAuxiliariesDeclarationData busAuxData,
-			MissionType mission, VehicleClass hdvClass, Meter vehicleLength, int? numSteeredAxles)
+		protected override IList<VectoRunData.AuxData> DoCreateAuxiliaryData(
+			IAuxiliariesDeclarationInputData auxInputData, IBusAuxiliariesDeclarationData busAuxData,
+			MissionType mission, VehicleClass hdvClass, Meter vehicleLength, int? numSteeredAxles,
+			VectoSimulationJobType jobType)
 		{
 			if (auxInputData != null)
 			{
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs
index f93c188e0b..11edef3935 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs
@@ -105,10 +105,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
 
 			public IEnumerable<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxInputData,
 				IBusAuxiliariesDeclarationData busAuxInput, MissionType mission,
-				VehicleClass segment, Meter vehicleLength, int? numSteeredAxles)
+				VehicleClass segment, Meter vehicleLength, int? numSteeredAxles, VectoSimulationJobType jobType)
 			{
 				return _busAuxiliaryDataAdapter.CreateAuxiliaryData(auxInputData, busAuxInput, mission, segment,
-					vehicleLength, numSteeredAxles);
+					vehicleLength, numSteeredAxles, jobType);
 			}
 
 			public IAuxiliaryConfig CreateBusAuxiliariesData(Mission mission,
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/CompletedBusRunDataFactory/DeclarationModeCompletedBusRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/CompletedBusRunDataFactory/DeclarationModeCompletedBusRunDataFactory.cs
index ac508b5e4e..86e48c4d08 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/CompletedBusRunDataFactory/DeclarationModeCompletedBusRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/CompletedBusRunDataFactory/DeclarationModeCompletedBusRunDataFactory.cs
@@ -126,7 +126,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
 					Aux = DataAdapterGeneric.CreateAuxiliaryData(PrimaryVehicle.Components.AuxiliaryInputData,
 						primaryBusAuxiliaries, mission.MissionType, primarySegment.VehicleClass,
 						mission.BusParameter.VehicleLength,
-						PrimaryVehicle.Components.AxleWheels.NumSteeredAxles),
+						PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType),
 					Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()),
 					Retarder = _retarderData,
 					DriverData = _driverData,
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs
index 5a1c49f687..ad657b379b 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs
@@ -286,7 +286,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
 					vehicle.Components.AuxiliaryInputData,
 					vehicle.Components.BusAuxiliaries, mission.MissionType,
 					_segment.VehicleClass, vehicle.Length,
-					vehicle.Components.AxleWheels.NumSteeredAxles);
+					vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType);
 
 				simulationRunData.Retarder = _retarderData;
 				simulationRunData.DriverData = _driverdata;
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs
index 81536fba2b..8cf5ac751f 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs
@@ -94,7 +94,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
 				runData.AirdragData = _airdragData;
 				runData.AngledriveData = _angledriveData;
 				runData.HybridStrategyParameters = DataAdapter.CreateHybridStrategy(runData.BatteryData, runData.SuperCapData);
-				runData.Aux = DataAdapter.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData, vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass, vehicle.Length, vehicle.Components.AxleWheels.NumSteeredAxles);
+				runData.Aux = DataAdapter.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData,
+					vehicle.Components.BusAuxiliaries,
+					mission.MissionType,
+					_segment.VehicleClass, 
+					vehicle.Length, 
+					vehicle.Components.AxleWheels.NumSteeredAxles, 
+					vehicle.VehicleType);
 
 				return runData;
 			}
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs
index bf2a2cddd6..25857d4d88 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs
@@ -166,7 +166,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
 						vehicle.Components.AuxiliaryInputData,
 						vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
 						vehicle.Length ?? mission.BusParameter.VehicleLength,
-						vehicle.Components.AxleWheels.NumSteeredAxles),
+						vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType),
 					Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()),
 					Retarder = _retarderData,
 					DriverData = _driverdata,
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs
index 4a230192f1..17ebb2ce1d 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs
@@ -171,7 +171,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
 					Aux = DataAdapter.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData,
 														vehicle.Components.BusAuxiliaries, mission.MissionType,
 														_segment.VehicleClass, vehicle.Length ?? mission.BusParameter.VehicleLength,
-														vehicle.Components.AxleWheels.NumSteeredAxles),
+														vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType),
 					Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()),
 					Retarder = _retarderData,
 					DriverData = _driverdata,
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryLorries.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryLorries.cs
index e8e1e70c79..b62a1448ff 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryLorries.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryLorries.cs
@@ -124,14 +124,14 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
                 JobInputData.Vehicle.Components.BusAuxiliaries,
                 missionType,
                 Segment.VehicleClass, JobInputData.Vehicle.Length,
-                JobInputData.Vehicle.Components.AxleWheels.NumSteeredAxles);
+                JobInputData.Vehicle.Components.AxleWheels.NumSteeredAxles, JobInputData.Vehicle.VehicleType);
         }
 
         protected virtual List<VectoRunData.AuxData> CreateVTPAuxData(IVehicleDeclarationInputData vehicle)
         {
             var numSteered = vehicle.Components.AxleWheels.NumSteeredAxles;
             var auxRD = DataAdapter.CreateAuxiliaryData(
-                                vehicle.Components.AuxiliaryInputData, vehicle.Components.BusAuxiliaries, MissionType.RegionalDelivery, Segment.VehicleClass, vehicle.Length, numSteered)
+                                vehicle.Components.AuxiliaryInputData, vehicle.Components.BusAuxiliaries, MissionType.RegionalDelivery, Segment.VehicleClass, vehicle.Length, numSteered, vehicle.VehicleType)
                             .ToList();
             foreach (var entry in auxRD)
             {
@@ -139,7 +139,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
             }
 
             var auxLH = DataAdapter.CreateAuxiliaryData(
-                                vehicle.Components.AuxiliaryInputData, vehicle.Components.BusAuxiliaries, MissionType.LongHaul, Segment.VehicleClass, vehicle.Length, numSteered)
+                                vehicle.Components.AuxiliaryInputData, vehicle.Components.BusAuxiliaries, MissionType.LongHaul, Segment.VehicleClass, vehicle.Length, numSteered, vehicle.VehicleType)
                             .ToList();
             foreach (var entry in auxLH)
             {
@@ -147,7 +147,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
             }
 
             var auxUD = DataAdapter.CreateAuxiliaryData(
-                                vehicle.Components.AuxiliaryInputData, vehicle.Components.BusAuxiliaries, MissionType.UrbanDelivery, Segment.VehicleClass, vehicle.Length, numSteered)
+                                vehicle.Components.AuxiliaryInputData, vehicle.Components.BusAuxiliaries, MissionType.UrbanDelivery, Segment.VehicleClass, vehicle.Length, numSteered, vehicle.VehicleType)
                             .ToList();
             foreach (var entry in auxUD)
             {
diff --git a/VectoCore/VectoCore/Models/Connector/Ports/IElectricEnergyStoragePort.cs b/VectoCore/VectoCore/Models/Connector/Ports/IElectricEnergyStoragePort.cs
index ebad9f4e94..2e4b966391 100644
--- a/VectoCore/VectoCore/Models/Connector/Ports/IElectricEnergyStoragePort.cs
+++ b/VectoCore/VectoCore/Models/Connector/Ports/IElectricEnergyStoragePort.cs
@@ -27,7 +27,7 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
 
 	}
 
-	public interface IElectricAuxConnecor
+	public interface IElectricAuxConnector
 	{
 		void Connect(IElectricAuxPort aux);
 	}
diff --git a/VectoCore/VectoCore/Models/Declaration/Fan.cs b/VectoCore/VectoCore/Models/Declaration/Fan.cs
index ac0cc63559..a0be5bddb9 100644
--- a/VectoCore/VectoCore/Models/Declaration/Fan.cs
+++ b/VectoCore/VectoCore/Models/Declaration/Fan.cs
@@ -30,9 +30,11 @@
 */
 
 using System;
+using System.Collections.Generic;
 using System.Data;
 using System.Linq;
 using TUGraz.VectoCommon.Exceptions;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Utils;
@@ -78,6 +80,21 @@ namespace TUGraz.VectoCore.Models.Declaration
 				: fanHeavyLorries.Lookup(mission, technology, true)).PowerDemand;
 		}
 
+		public bool IsApplicable(VehicleClass vehicleClass, VectoSimulationJobType jobType, string technology)
+		{
+			return vehicleClass.IsMediumLorry()
+				? fanMediumLorries.IsApplicable(jobType, technology)
+				: fanHeavyLorries.IsApplicable(jobType, technology);
+		}
+
+		public bool IsFullyElectric(VehicleClass vehicleClass, string technology)
+		{
+			var tech = vehicleClass.IsMediumLorry()
+				? fanMediumLorries.FullyElectricTechnologies()
+				: fanHeavyLorries.FullyElectricTechnologies();
+			return tech.Contains(technology);
+		}
+
 		public string[] FullyElectricTechnologies()
 		{
 			return fanHeavyLorries.FullyElectricTechnologies();
@@ -86,8 +103,10 @@ namespace TUGraz.VectoCore.Models.Declaration
 		public string[] GetTechnologies() => fanHeavyLorries.GetTechnologies();
 	}
 
-	public abstract class AbstractFan : LookupData<MissionType, string, bool, AuxDemandEntry>, IDeclarationAuxiliaryTable
+	public abstract class AbstractFan : LookupData<MissionType, string, bool, AuxDemandEntry>, IDeclarationAuxiliaryTable, IDeclarationAuxiliaryArchitectureTable
 	{
+
+
 		protected override string ErrorMessage => "Auxiliary Lookup Error: No value found for Fan. Mission: '{0}', Technology: '{1}'";
 
 		protected override void ParseData(DataTable table)
@@ -96,12 +115,13 @@ namespace TUGraz.VectoCore.Models.Declaration
 				var name = row.Field<string>("technology");
 				var electric = row.ParseBoolean("fullyelectric");
 
-				foreach (DataColumn col in table.Columns) {
-					if (col.Caption != "technology" && col.Caption != "fullyelectric") {
+				foreach (DataColumn col in table.Columns.Cast<DataColumn>().Skip(table.Columns.IndexOf("fullyelectric") + 1))
+				{
+					//if (col.Caption != "technology" && col.Caption != "fullyelectric") {
 						Data[Tuple.Create(col.Caption.ParseEnum<MissionType>(), name, electric)] = new AuxDemandEntry {
 							PowerDemand = row.ParseDouble(col).SI<Watt>(),
 						};
-					}
+					//}
 				}
 			}
 		}
@@ -111,20 +131,115 @@ namespace TUGraz.VectoCore.Models.Declaration
 			var lookup = Tuple.Create(mission, technology, electrical);
 			return Data.GetVECTOValueOrDefault(lookup, new AuxDemandEntry { PowerDemand = 0.SI<Watt>() });
 		}
-		
+
 		public string[] FullyElectricTechnologies() => Data.Keys.Where(x => x.Item3).Select(x => x.Item2).Distinct().ToArray();
 
 		public string[] GetTechnologies() => Data.Keys.Select(x => x.Item2).Distinct().ToArray();
+
+		protected abstract IDeclarationAuxiliaryArchitectureTable archMapping { get; }
+
+		public  bool IsApplicable(VectoSimulationJobType simType, string technology)
+		{
+			return archMapping.IsApplicable(simType, technology);
+		}
+
 	}
 
 
 	public sealed class FanMediumLorries : AbstractFan
 	{
 		protected override string ResourceId => DeclarationData.DeclarationDataResourcePrefix + ".VAUX.Fan-Tech-Medium.csv";
+
+		#region Overrides of AbstractFan
+
+		protected override IDeclarationAuxiliaryArchitectureTable archMapping => new
+			FanMediumLorriesVehicleArchitecture();
+
+		
+		#endregion
 	}
 
 	public sealed class FanHeavyLorries : AbstractFan
 	{
 		protected override string ResourceId => DeclarationData.DeclarationDataResourcePrefix + ".VAUX.Fan-Tech.csv";
+
+		protected override IDeclarationAuxiliaryArchitectureTable archMapping => new
+			FanHeavyLorriesVehicleArchitecture();
+
 	}
+
+
+	/// <summary>
+	/// Maps the first columns of an auxiliary csv to a dictionary Dictionary<string technology, string arch>
+	/// </summary>
+	public abstract class AbstractAuxiliaryVehicleArchitectureLookup : LookupData<string, string, bool>, IDeclarationAuxiliaryArchitectureTable
+	{
+		public static Dictionary<VectoSimulationJobType, string> ArchitectureNameMapping =
+			new Dictionary<VectoSimulationJobType, string>() {
+				{VectoSimulationJobType.BatteryElectricVehicle, "pev"},
+				{VectoSimulationJobType.SerialHybridVehicle, "s-hev"},
+				{VectoSimulationJobType.ParallelHybridVehicle, "p-hev"},
+				{VectoSimulationJobType.ConventionalVehicle, "conventional"},
+				{VectoSimulationJobType.IEPC_S, "s-hev"},
+				{VectoSimulationJobType.IEPC_E, "pev"},
+			};
+
+		protected override string ErrorMessage =>
+			"Auxiliary Lookup Error: No value found for Fan. Technology: '{0}', Architecture: '{1}'";
+		#region Overrides of LookupData
+
+		protected override void ParseData(DataTable table)
+		{
+			foreach (DataRow row in table.Rows) {
+				var name = row["technology"].ToString();
+				foreach (DataColumn col in table.Columns.Cast<DataColumn>().Skip(1).Take(4)) {
+					Data[Tuple.Create(name, col.Caption)] = row.ParseBoolean(col.Caption);
+				}
+			}
+		}
+
+		#endregion
+
+		#region Implementation of IDeclarationAuxiliaryTable
+
+		public string[] GetTechnologies() => Data.Keys.Select(x => x.Item1).Distinct().ToArray();
+
+
+		public bool IsApplicable(VectoSimulationJobType simType, string technology)
+		{
+			if (!GetTechnologies().Contains(technology)) {
+				throw new VectoException($"Auxiliary Lookup Error: Unknown technology: '{technology}'");
+			}
+
+			if (!ArchitectureNameMapping.ContainsKey(simType)) {
+				throw new VectoException($"No Architecture mapping for {simType.ToString()}");
+			}
+
+			var arch = ArchitectureNameMapping[simType];
+			return Lookup(technology, arch);
+		}
+
+		#endregion
+	}
+
+	public sealed class FanMediumLorriesVehicleArchitecture : AbstractAuxiliaryVehicleArchitectureLookup
+	{
+		#region Overrides of LookupData
+
+		protected override string ResourceId => DeclarationData.DeclarationDataResourcePrefix + ".VAUX.Fan-Tech-Medium.csv";
+
+
+		#endregion
+	}
+
+	public sealed class FanHeavyLorriesVehicleArchitecture : AbstractAuxiliaryVehicleArchitectureLookup
+	{
+		#region Overrides of LookupData
+
+		protected override string ResourceId => DeclarationData.DeclarationDataResourcePrefix + ".VAUX.Fan-Tech.csv";
+
+
+		#endregion
+	}
+
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Declaration/HVAC.cs b/VectoCore/VectoCore/Models/Declaration/HVAC.cs
index 7c20b0e87d..f6801fe922 100644
--- a/VectoCore/VectoCore/Models/Declaration/HVAC.cs
+++ b/VectoCore/VectoCore/Models/Declaration/HVAC.cs
@@ -33,6 +33,7 @@ using System;
 using System.Collections.Generic;
 using System.Data;
 using System.Linq;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Utils;
@@ -44,7 +45,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 	{
 		private List<string> Technologies;
 
-		protected override string ResourceId => DeclarationData.DeclarationDataResourcePrefix + ".VAUX.HVAC-Table.csv";
+	protected override string ResourceId => DeclarationData.DeclarationDataResourcePrefix + ".VAUX.HVAC-Table.csv";
 
 		protected override string ErrorMessage => "Auxiliary Lookup Error: No value found for HVAC. Mission: '{0}', Technology: '{1}' , HDVClass: '{2}'";
 
diff --git a/VectoCore/VectoCore/Models/Declaration/IDeclarationAuxiliaryTable.cs b/VectoCore/VectoCore/Models/Declaration/IDeclarationAuxiliaryTable.cs
index 2d552badb6..8711e8b758 100644
--- a/VectoCore/VectoCore/Models/Declaration/IDeclarationAuxiliaryTable.cs
+++ b/VectoCore/VectoCore/Models/Declaration/IDeclarationAuxiliaryTable.cs
@@ -29,10 +29,19 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
+using TUGraz.VectoCommon.InputData;
+
 namespace TUGraz.VectoCore.Models.Declaration
 {
 	public interface IDeclarationAuxiliaryTable
 	{
 		string[] GetTechnologies();
+
+
+	}
+
+	public interface IDeclarationAuxiliaryArchitectureTable
+	{
+		bool IsApplicable(VectoSimulationJobType simType, string technology);
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Declaration/PneumaticSystem.cs b/VectoCore/VectoCore/Models/Declaration/PneumaticSystem.cs
index 5222c8b037..768195a6a4 100644
--- a/VectoCore/VectoCore/Models/Declaration/PneumaticSystem.cs
+++ b/VectoCore/VectoCore/Models/Declaration/PneumaticSystem.cs
@@ -32,14 +32,16 @@
 using System;
 using System.Data;
 using System.Linq;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Models.Declaration
 {
-	public sealed class PneumaticSystem : LookupData<MissionType, string, AuxDemandEntry>, IDeclarationAuxiliaryTable
+	public sealed class PneumaticSystem : LookupData<MissionType, string, AuxDemandEntry>, IDeclarationAuxiliaryTable, IDeclarationAuxiliaryArchitectureTable
 	{
+		private IDeclarationAuxiliaryArchitectureTable _declarationAuxiliaryArchitectureTableImplementation = new PneumaticSystemArchitectureTable();
 		protected override string ResourceId => DeclarationData.DeclarationDataResourcePrefix + ".VAUX.PS-Table.csv";
 
 		protected override string ErrorMessage => "Auxiliary Lookup Error: No value found for Pneumatic System. Mission: '{0}', Technology: '{1}'";
@@ -48,7 +50,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 		{
 			foreach (DataRow row in table.Rows) {
 				var technology = row.Field<string>("technology");
-				foreach (DataColumn col in table.Columns) {
+				foreach (DataColumn col in table.Columns.Cast<DataColumn>().Skip(table.Columns.IndexOf("fullyelectric") + 1)) {
 					if (col.Caption != "technology") {
 						Data[Tuple.Create(col.Caption.ParseEnum<MissionType>(), technology)] = new AuxDemandEntry() {
 							PowerDemand = row.ParseDouble(col.Caption).SI<Watt>()
@@ -62,5 +64,24 @@ namespace TUGraz.VectoCore.Models.Declaration
 		{
 			return Data.Keys.Select(x => x.Item2).Distinct().ToArray();
 		}
+
+		#region Implementation of IDeclarationAuxiliaryArchitectureTable
+
+		public bool IsApplicable(VectoSimulationJobType simType, string technology)
+		{
+			return _declarationAuxiliaryArchitectureTableImplementation.IsApplicable(simType, technology);
+		}
+
+		#endregion
+
+		private class PneumaticSystemArchitectureTable : AbstractAuxiliaryVehicleArchitectureLookup
+		{
+			#region Overrides of LookupData
+
+			protected override string ResourceId => DeclarationData.DeclarationDataResourcePrefix + ".VAUX.PS-Table.csv";
+
+			#endregion
+		}
+
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Declaration/SteeringPump.cs b/VectoCore/VectoCore/Models/Declaration/SteeringPump.cs
index ac909384d7..5a1623d7bf 100644
--- a/VectoCore/VectoCore/Models/Declaration/SteeringPump.cs
+++ b/VectoCore/VectoCore/Models/Declaration/SteeringPump.cs
@@ -34,6 +34,7 @@ using System.Collections.Generic;
 using System.Data;
 using System.Diagnostics;
 using System.Linq;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Utils;
@@ -72,6 +73,16 @@ namespace TUGraz.VectoCore.Models.Declaration
 			return power.UnloadedFriction + power.Banking + power.Steering;
 		}
 
+		public bool IsApplicable(IEnumerable<string> technologies, VectoSimulationJobType jobType)
+		{
+			foreach (var technology in technologies) {
+				if (!_techLookup.IsApplicable(jobType, technology)) {
+					return false;
+				}
+			}
+			return true;
+		}
+
 		private sealed class SteeringPumpBaseLine : LookupData<MissionType, VehicleClass, SteeringPumpValues<Watt>>
 		{
 			protected override string ResourceId => DeclarationData.DeclarationDataResourcePrefix + ".VAUX.SP-Table.csv";
@@ -95,8 +106,9 @@ namespace TUGraz.VectoCore.Models.Declaration
 			}
 		}
 
-		private sealed class SteeringPumpTechnologies : LookupData<string, SteeringPumpValues<double>>
+		private sealed class SteeringPumpTechnologies : LookupData<string, SteeringPumpValues<double>>, IDeclarationAuxiliaryArchitectureTable
 		{
+			private readonly IDeclarationAuxiliaryArchitectureTable _declarationAuxiliaryArchitectureTableImplementation = new SteeringPumpArchitectureTable();
 			protected override string ResourceId => DeclarationData.DeclarationDataResourcePrefix + ".VAUX.SP-Tech.csv";
 
 			protected override string ErrorMessage => "Auxiliary Lookup Error: No value found for SteeringPump Technology. Key: '{0}'";
@@ -129,6 +141,25 @@ namespace TUGraz.VectoCore.Models.Declaration
 			{
 				return Data.Keys.Distinct().ToArray();
 			}
+
+			#region Implementation of IDeclarationAuxiliaryArchitectureTable
+
+			public bool IsApplicable(VectoSimulationJobType simType, string technology)
+			{
+				return _declarationAuxiliaryArchitectureTableImplementation.IsApplicable(simType, technology);
+			}
+
+			private class SteeringPumpArchitectureTable : AbstractAuxiliaryVehicleArchitectureLookup
+			{
+				#region Overrides of LookupData
+
+				protected override string ResourceId => DeclarationData.DeclarationDataResourcePrefix + ".VAUX.SP-Tech.csv";
+
+				#endregion
+			}
+
+
+			#endregion
 		}
 
 		private sealed class SteeringPumpAxles : LookupData<MissionType, int, SteeringPumpValues<double>>
diff --git a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
index b730d453fe..57a83f6e68 100644
--- a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
@@ -190,6 +190,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 
 			[Required] public AuxiliaryDemandType DemandType;
 
+			[Required] public bool ConnectToDcDc;
+
+			[Required] public bool IsFullyElectric;
 
 			public MissionType? MissionType;
 		}
diff --git a/VectoCore/VectoCore/Models/Simulation/DataBus/IDCDCConverter.cs b/VectoCore/VectoCore/Models/Simulation/DataBus/IDCDCConverter.cs
index 5c3861dfb5..8e74bb047f 100644
--- a/VectoCore/VectoCore/Models/Simulation/DataBus/IDCDCConverter.cs
+++ b/VectoCore/VectoCore/Models/Simulation/DataBus/IDCDCConverter.cs
@@ -3,7 +3,7 @@ using TUGraz.VectoCore.Models.Connector.Ports.Impl;
 
 namespace TUGraz.VectoCore.Models.Simulation.DataBus
 {
-	public interface IDCDCConverter : IElectricAuxPort
+	public interface IDCDCConverter : IElectricAuxPort, IElectricAuxConnector
 	{
 		void ConsumerEnergy(WattSecond electricConsumerPower, bool dryRun);
 	}
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index c40aeeaf07..e14f178d12 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -430,7 +430,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 
 			var container = new VehicleContainer(data.ExecutionMode, modData, _sumWriter) { RunData = data };
 			var es = ConnectREESS(data, container);
-			var aux = new ElectricAuxiliary(container);
+			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
 			es.Connect(aux);
 
@@ -557,7 +557,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				? (IHybridControlStrategy)new SerialHybridStrategyAT(data, container)
 				: new SerialHybridStrategy(data, container);
 
-			var aux = new ElectricAuxiliary(container);
+			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
 			es.Connect(aux);
 
@@ -692,10 +692,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 
 			var ctl = new BatteryElectricMotorController(container, es);
 
-			var aux = new ElectricAuxiliary(container);
+			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
 			es.Connect(aux);
 
+
 			var cycle = new DistanceBasedDrivingCycle(container, data.Cycle);
 			var powertrain = cycle
 				.AddComponent(new Driver(container, data.DriverData, new DefaultDriverStrategy(container)))
@@ -763,6 +764,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				busAux.DCDCConverter = dcdc;
 				es.Connect(dcdc);
 				em.BusAux = busAux;
+			} else {
+				var dcdc = new DCDCConverter(container, 1);
+				es.Connect(dcdc);
+				dcdc.Connect(new ElectricAuxiliaries(container));
 			}
 
 			return container;
@@ -884,7 +889,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 
 			var ctl = new BatteryElectricMotorController(container, es);
 
-			var aux = new ElectricAuxiliary(container);
+			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
 			es.Connect(aux);
 
@@ -977,7 +982,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			var idleController = engine.IdleController;
 			ctl.Engine = engine;
 
-			var aux = new ElectricAuxiliary(container);
+			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
 			es.Connect(aux);
 
@@ -1102,7 +1107,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		public static void BuildSimpleSerialHybridPowertrain(VectoRunData data, VehicleContainer container)
 		{
 			var es = ConnectREESS(data, container);
-			var aux = new ElectricAuxiliary(container);
+			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
 			es.Connect(aux);
 			es.Connect(new GensetChargerAdapter(null));
@@ -1187,7 +1192,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		public static void BuildSimpleIEPCHybridPowertrain(VectoRunData data, VehicleContainer container)
 		{
 			var es = ConnectREESS(data, container);
-			var aux = new ElectricAuxiliary(container);
+			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
 			es.Connect(aux);
 			es.Connect(new GensetChargerAdapter(null));
@@ -1257,7 +1262,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		public static void BuildSimpleHybridPowertrain(VectoRunData data, VehicleContainer container)
 		{
 			var es = ConnectREESS(data, container);
-			var aux = new ElectricAuxiliary(container);
+			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
 			es.Connect(aux);
 
@@ -1348,7 +1353,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		public static void BuildSimplePowertrainElectric(VectoRunData data, VehicleContainer container)
 		{
 			var es = ConnectREESS(data, container);
-			var aux = new ElectricAuxiliary(container);
+			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
 			es.Connect(aux);
 			es.Connect(new SimpleCharger());
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/DCDCConverter.cs b/VectoCore/VectoCore/Models/SimulationComponent/DCDCConverter.cs
index 34559dde4a..e5887e33cf 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/DCDCConverter.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/DCDCConverter.cs
@@ -1,4 +1,6 @@
-using TUGraz.VectoCommon.Utils;
+using System.Collections.Generic;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.Models.Connector.Ports.Impl;
 using TUGraz.VectoCore.Models.Simulation;
 using TUGraz.VectoCore.Models.Simulation.Data;
@@ -25,7 +27,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
 		{
 			PreviousState.ConsumedEnergy = 0.SI<WattSecond>();
 			CurrentState.ConsumedEnergy = 0.SI<WattSecond>();
-
+			_electricConsumers.ForEach(aux => aux.Initialize());
 			return 0.SI<Watt>();
 		}
 
@@ -34,6 +36,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
 			var dischargeEnergy = (-DataBus.BatteryInfo.MaxDischargePower(dt) * dt);
 			var chargeEnergy = (-DataBus.BatteryInfo.MaxChargePower(dt) * dt);
 			var efficiency = PreviousState.ConsumedEnergy > 0 ? 1 / Efficiency : Efficiency;
+
+			PreviousState.ConsumedEnergy += _electricConsumers.Sum(aux => aux.PowerDemand(absTime, dt, dryRun)) * dt;
+			
+
 			if ((PreviousState.ConsumedEnergy * efficiency).IsBetween(chargeEnergy, dischargeEnergy)) {
 				return PreviousState.ConsumedEnergy / dt * efficiency;
 			}
@@ -103,5 +109,16 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
 			return false;
 		}
 		#endregion
+
+		#region Implementation of IElectricAuxConnector
+
+		private List<IElectricAuxPort> _electricConsumers = new List<IElectricAuxPort>();
+
+		public void Connect(IElectricAuxPort aux)
+		{
+			_electricConsumers.Add(aux);
+		}
+
+		#endregion
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/ElectricSystem.cs b/VectoCore/VectoCore/Models/SimulationComponent/ElectricSystem.cs
index 66338c293e..0553b087f9 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/ElectricSystem.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/ElectricSystem.cs
@@ -11,7 +11,7 @@ using TUGraz.VectoCore.OutputData;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent
 {
-	public class ElectricSystem : StatefulVectoSimulationComponent<ElectricSystem.State>, IElectricSystem, IElectricAuxConnecor, 
+	public class ElectricSystem : StatefulVectoSimulationComponent<ElectricSystem.State>, IElectricSystem, IElectricAuxConnector, 
 		IElectricChargerConnector, IBatteryConnector, IUpdateable
 	{
 
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricAuxiliaries.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricAuxiliaries.cs
new file mode 100644
index 0000000000..7ebed76432
--- /dev/null
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricAuxiliaries.cs
@@ -0,0 +1,58 @@
+using System.Collections.Generic;
+using System.Linq;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus;
+using TUGraz.VectoCore.Models.Connector.Ports.Impl;
+using TUGraz.VectoCore.Models.Simulation;
+using TUGraz.VectoCore.Models.Simulation.Data;
+
+namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
+{
+
+
+	public class ElectricAuxiliaries : IElectricAuxPort
+	{
+		private IEnumerable<VectoRunData.AuxData> _auxData;
+
+		#region Implementation of IElectricAuxPort
+
+
+		public ElectricAuxiliaries(IVehicleContainer container)
+		{
+			
+			DataBus = container;
+
+		}
+
+		private IVehicleContainer DataBus { get; set; }
+
+		public Watt Initialize()
+		{
+			_auxData = DataBus.RunData.Aux.Where(aux => aux.MissionType == DataBus.RunData.Mission.MissionType);
+			foreach (var auxData in _auxData) {
+				//auxData.
+			}
+
+			return 0.SI<Watt>();
+		}
+
+		public Watt PowerDemand(Second absTime, Second dt, bool dryRun)
+		{
+			var left = DataBus.DrivingCycleInfo.CycleData.LeftSample;
+			var sum = 0.SI<Watt>();
+			foreach (var auxData in _auxData) {
+				if (auxData.DemandType == AuxiliaryDemandType.Constant) {
+					sum += auxData.PowerDemand;
+				} else {
+					sum += auxData.PowerDemandFunc(left);
+				}
+			}
+
+			return sum;
+		}
+
+		#endregion
+	}
+}
+
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricAuxiliary.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/HighVoltageElectricAuxiliary.cs
similarity index 90%
rename from VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricAuxiliary.cs
rename to VectoCore/VectoCore/Models/SimulationComponent/Impl/HighVoltageElectricAuxiliary.cs
index 0502961dfa..0e77bcc262 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricAuxiliary.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/HighVoltageElectricAuxiliary.cs
@@ -8,13 +8,14 @@ using TUGraz.VectoCore.Models.Simulation.Impl;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 {
-	internal class ElectricAuxiliary : IElectricAuxPort
+	[Obsolete]
+	internal class HighVoltageElectricAuxiliary : IElectricAuxPort
 	{
 		protected readonly Dictionary<string, Func<Watt>> Auxiliaries = new Dictionary<string, Func<Watt>>();
 
 		private IDataBus DataBus;
 
-		public ElectricAuxiliary(VehicleContainer container)
+		public HighVoltageElectricAuxiliary(VehicleContainer container)
 		{
 			DataBus = container;
 		}
diff --git a/VectoCore/VectoCoreTest/InputData/DeclarationDataAdapterTest/DeclarationDataAdapterTest.cs b/VectoCore/VectoCoreTest/InputData/DeclarationDataAdapterTest/DeclarationDataAdapterTest.cs
index f3a3a28eee..8128c7cfcf 100644
--- a/VectoCore/VectoCoreTest/InputData/DeclarationDataAdapterTest/DeclarationDataAdapterTest.cs
+++ b/VectoCore/VectoCoreTest/InputData/DeclarationDataAdapterTest/DeclarationDataAdapterTest.cs
@@ -1,10 +1,16 @@
 using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using Moq;
 using Ninject;
 using NUnit.Framework;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry;
+using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents;
 using TUGraz.VectoCore.Utils.Ninject;
 
 namespace TUGraz.VectoCore.Tests.InputData.DeclarationDataAdapterTest
@@ -52,8 +58,118 @@ namespace TUGraz.VectoCore.Tests.InputData.DeclarationDataAdapterTest
 
 		#endregion
 
+		[TestCase(VectoSimulationJobType.BatteryElectricVehicle,
+			new []{ "Full electric steering gear" },
+			"Vacuum pump + elec. driven",
+			true,
+			2,
+			TestName="PEVAuxFailSteeredAxle")]
+		[TestCase(VectoSimulationJobType.BatteryElectricVehicle,
+			new[] { "Full electric steering gear" },
+			"Vacuum pump + elec. driven",
+			false,
+			TestName = "PEVAuxPass")]
+		[TestCase(VectoSimulationJobType.BatteryElectricVehicle,
+			new[] { "Full electric steering gear" },
+			"Medium Supply 1-stage + mech. clutch + AMS",
+			true,
+			TestName = "PEVAuxFailPS")]
+		[TestCase(VectoSimulationJobType.SerialHybridVehicle,
+			new[] { "Full electric steering gear" },
+			"Vacuum pump + elec. driven",
+			false,
+			TestName = "S-HEV Aux Pass")]
+		[TestCase(VectoSimulationJobType.ParallelHybridVehicle,
+			new[] { "Full electric steering gear" },
+			"Vacuum pump + elec. driven",
+			false,
+			TestName = "PEVAuxPass")]
+		public void HeavyLorryPEVAuxiliaryDataAdapterFailTest(VectoSimulationJobType jobType, string[] spTechnologies, string psTechnology, bool fail, int? steeredAxles = null)
+		{
+			var dataAdapter = new HeavyLorryPEVAuxiliaryDataAdapter();
+			
+			var auxData = new Mock<IAuxiliariesDeclarationInputData>();
+
+			Mock<IAuxiliaryDeclarationInputData> steeringSystem = new Mock<IAuxiliaryDeclarationInputData>();
+			foreach(var spTechnoly in spTechnologies)
+			{
+				steeringSystem.SetType(AuxiliaryType.SteeringPump)
+					.AddTechnology(spTechnoly);
+			}
+			
+			var hvac = new Mock<IAuxiliaryDeclarationInputData>()
+				.SetType(AuxiliaryType.HVAC)
+				.AddTechnology("Default");
+			var pneumatic = new Mock<IAuxiliaryDeclarationInputData>()
+				.SetType(AuxiliaryType.PneumaticSystem)
+				.AddTechnology(psTechnology);
+			var elSystem = new Mock<IAuxiliaryDeclarationInputData>()
+				.SetType(AuxiliaryType.ElectricSystem)
+				.AddTechnology("Standard technology");
+
+			
+
+
+			auxData.AddAuxiliaries(steeringSystem.Object, hvac.Object, pneumatic.Object, elSystem.Object);
+			try {
+				dataAdapter.CreateAuxiliaryData(auxData.Object, null, MissionType.LongHaul, VehicleClass.Class12,
+					4.SI<Meter>(), steeredAxles ?? 1, VectoSimulationJobType.BatteryElectricVehicle);
+			} catch (Exception ex) {
+				if (fail) {
+					Assert.Pass($"Expected Exception {ex.Message}");
+				} else {
+					throw new Exception("Exception occured", ex);
+				}
+			}
+
+
+
 
 
 
+
+		}
+		
+
 	}
+
+	public static class AuxiliariesInputMockHelper
+	{
+		public static Mock<IAuxiliariesDeclarationInputData> AddAuxiliary(this Mock<IAuxiliariesDeclarationInputData> mock, IAuxiliaryDeclarationInputData aux)
+		{
+			var list = mock.Object?.Auxiliaries ?? new List<IAuxiliaryDeclarationInputData>();
+			list.Add(aux);
+			mock.Setup(aux => aux.Auxiliaries)
+				.Returns(list);
+
+			return mock;
+		}
+
+		public static Mock<IAuxiliariesDeclarationInputData> AddAuxiliaries(
+			this Mock<IAuxiliariesDeclarationInputData> mock, params IAuxiliaryDeclarationInputData[] aux)
+		{
+			
+			foreach (var auxiliary in aux) {
+				mock = mock.AddAuxiliary(auxiliary);
+			}
+
+
+			return mock;
+		}
+
+		public static Mock<IAuxiliaryDeclarationInputData> SetType(this Mock<IAuxiliaryDeclarationInputData> mock, AuxiliaryType type)
+		{
+			mock.Setup(aux => aux.Type).Returns(type);
+			return mock;
+		}
+
+		public static Mock<IAuxiliaryDeclarationInputData> AddTechnology(this Mock<IAuxiliaryDeclarationInputData> mock, string technology)
+		{
+			var list = mock.Object.Technology ?? new List<string>();
+			list.Add(technology);
+			mock.Setup(aux => aux.Technology).Returns(list);
+			return mock;
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs b/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs
index 7472d8f276..b0e7069dcb 100644
--- a/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs
@@ -938,7 +938,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 
 			var cycle = new DistanceBasedDrivingCycle(container, cycleData);
 
-			var aux = new ElectricAuxiliary(container);
+			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", pAuxEl.SI<Watt>());
 			es.Connect(aux);
 
diff --git a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
index d23239f37f..05ac899430 100644
--- a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
@@ -1668,7 +1668,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 
 			var cycle = new DistanceBasedDrivingCycle(container, cycleData);
 
-			var aux = new ElectricAuxiliary(container);
+			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", pAuxEl.SI<Watt>());
 			es.Connect(aux);
 
@@ -1779,7 +1779,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 			var engine = new StopStartCombustionEngine(container, runData.EngineData);
 			var cycle = new DistanceBasedDrivingCycle(container, cycleData);
 
-			var aux = new ElectricAuxiliary(container);
+			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", pAuxEl.SI<Watt>());
 			cycle
 				.AddComponent(new Driver(container, runData.DriverData, new DefaultDriverStrategy(container)))
diff --git a/VectoCore/VectoCoreTest/Integration/Hybrid/SerialHybridTest.cs b/VectoCore/VectoCoreTest/Integration/Hybrid/SerialHybridTest.cs
index f471b49c75..e90659ada8 100644
--- a/VectoCore/VectoCoreTest/Integration/Hybrid/SerialHybridTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/Hybrid/SerialHybridTest.cs
@@ -710,7 +710,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 
 			var cycle = new DistanceBasedDrivingCycle(container, cycleData);
 
-			var aux = new ElectricAuxiliary(container);
+			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", pAuxEl.SI<Watt>());
 			es.Connect(aux);
 
diff --git a/VectoCore/VectoCoreTest/Utils/MockBattery.cs b/VectoCore/VectoCoreTest/Utils/MockBattery.cs
index baa6938522..360f5ab6ef 100644
--- a/VectoCore/VectoCoreTest/Utils/MockBattery.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockBattery.cs
@@ -4,7 +4,7 @@ using TUGraz.VectoCore.Models.Connector.Ports.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent;
 
 namespace TUGraz.VectoCore.Tests.Utils {
-	public class MockBattery : IElectricEnergyStorage, IElectricEnergyStoragePort, IElectricAuxConnecor
+	public class MockBattery : IElectricEnergyStorage, IElectricEnergyStoragePort, IElectricAuxConnector
 	{
 		public Volt InternalVoltage => 640.SI<Volt>();
 
@@ -46,7 +46,7 @@ namespace TUGraz.VectoCore.Tests.Utils {
 
 		public IElectricEnergyStoragePort MainBatteryPort => this;
 
-		public IElectricAuxConnecor AuxBatteryPort()
+		public IElectricAuxConnector AuxBatteryPort()
 		{
 			return this;
 		}
-- 
GitLab