From a87577567faa99655f0c0ce80a94422e1b505f6a Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Fri, 20 Nov 2020 15:41:56 +0100
Subject: [PATCH] refactor electric motor: move transmission effiency and
 transmission ratio from power map transformation to explicit calculation step
 rename B2 ... positions to E2... add more colums to .vmod and .vsum for
 electric motor component

---
 .../3-simulation-models/Electric_Motor.md     |  23 +
 .../User Manual/OriginalPictures/EM_Model.png | Bin 0 -> 57506 bytes
 .../User Manual/pics/EM_Model_scaled.png      | Bin 0 -> 69752 bytes
 VECTO/GUI/ElectricMotorForm.vb                |   6 +-
 .../VectoCommon/Models/PowertrainPosition.cs  |  13 +-
 .../ElectricFullLoadCurveReader.cs            |  14 +-
 .../ComponentData/ElectricMotorMapReader.cs   |  14 +-
 .../EngineeringDataAdapter.cs                 |   8 +-
 .../EngineeringModeVectoRunDataFactory.cs     |   2 +-
 .../Simulation/Data/ModalResultField.cs       |  54 +-
 .../Simulation/DataBus/IAxlegearInfo.cs       |   7 +
 .../Models/Simulation/DataBus/IDataBus.cs     |   1 +
 .../Models/Simulation/DataBus/IWheelsInfo.cs  |   1 +
 .../Simulation/Impl/PowertrainBuilder.cs      |  14 +-
 .../Simulation/Impl/VehicleContainer.cs       |   4 +
 .../Data/ElectricMotor/ElectricMotorData.cs   |   3 +
 .../Models/SimulationComponent/IAxlegear.cs   |   2 +
 .../SimulationComponent/Impl/Angledrive.cs    |   7 +-
 .../SimulationComponent/Impl/AxleGear.cs      |   5 +
 .../SimulationComponent/Impl/ElectricMotor.cs | 524 ++++++++----------
 .../SimulationComponent/Impl/Gearbox.cs       |   2 +-
 .../Impl/PEVAMTShiftStrategy.cs               |   8 +-
 .../SimulationComponent/Impl/Vehicle.cs       |  77 +--
 .../VelocitySpeedGearshiftPreprocessor.cs     |   4 +-
 .../Models/SimulationComponent/Impl/Wheels.cs |  15 +-
 .../Strategies/HybridStrategy.cs              |   4 +-
 .../OutputData/IModalDataContainer.cs         |   5 +
 .../OutputData/ModalDataContainer.cs          | 154 ++++-
 .../OutputData/SummaryDataContainer.cs        |  39 +-
 .../FileIO/JsonReadHybridTest.cs              |  20 +-
 .../BatteryElectric/BatteryElectricTest.cs    |  38 +-
 .../ElectricMotorEfficienyMapTest.cs          |   8 +-
 .../Utils/MockModalDataContainer.cs           |  25 +
 .../Utils/MockVehicleContainer.cs             |   3 +
 34 files changed, 649 insertions(+), 455 deletions(-)
 create mode 100644 Documentation/User Manual/OriginalPictures/EM_Model.png
 create mode 100644 Documentation/User Manual/pics/EM_Model_scaled.png

diff --git a/Documentation/User Manual/3-simulation-models/Electric_Motor.md b/Documentation/User Manual/3-simulation-models/Electric_Motor.md
index b193137cd5..92ccfc93c2 100644
--- a/Documentation/User Manual/3-simulation-models/Electric_Motor.md	
+++ b/Documentation/User Manual/3-simulation-models/Electric_Motor.md	
@@ -14,9 +14,32 @@ The first two curves are read from a single .vemp file (see [Electric Motor Max
 
 The convention for all input files is that positive torque values drive the vehicle while negative torque values apply additional drag and generate electric power.
 
+The follwing picture shows the signals used in VECTO and provided in the .vmod file. The VECTO convention is that positive torque adds additional drag to the drivetrain. Thus, if the electric motor propells the vehicle it applies negative torque.
 
 ![](pics/electric_motor_map.png)
 
+###Electric Motor Model
+
+The VECTO component for the electric motor contains the electric motor itself which is connected via a transmission stage to the drivetrain. The ratio and efficiency of the transmission stage can be defined in the vehicle model.
+
+![](pics/EM_Model_scaled.png)
+
+The naming convention for the signals is that 'X' denotes the position of the EM in the powertrain. P_X_... denotes signals related to the drivetrain speed while P_X-em_... denotes signals to the electric motor shaft.
+
+P_X_in = P_X_out + P_X_mech
+
+P_X_mech = P_X-em_mech + P_X_transm_loss
+
+P_X-em_mech = P_X-em_mech_elmap + P_X-em_inertia
+
+P_X-em_mech_elmap = P_X-em_el + P_X-em_loss
+
+P_X-em_mech_elmap = n_X-em * T_X-em_map
+
+P_X-em_el = PowerMap(n_X-em, T_X-em_map)
+
+P_X_loss = P_X_mech - P_X-em_el
+
 
 ###Thermal De-Rating
 
diff --git a/Documentation/User Manual/OriginalPictures/EM_Model.png b/Documentation/User Manual/OriginalPictures/EM_Model.png
new file mode 100644
index 0000000000000000000000000000000000000000..6cc51b583bcd8f71fbe070a28f8523bc62cfdced
GIT binary patch
literal 57506
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
aP#0x(bT<9o!QVy%E}LAtSasn>-2VWc!Xe23

literal 0
HcmV?d00001

diff --git a/Documentation/User Manual/pics/EM_Model_scaled.png b/Documentation/User Manual/pics/EM_Model_scaled.png
new file mode 100644
index 0000000000000000000000000000000000000000..bece268af3058d7659c76a46592cf8080c4f8162
GIT binary patch
literal 69752
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

literal 0
HcmV?d00001

diff --git a/VECTO/GUI/ElectricMotorForm.vb b/VECTO/GUI/ElectricMotorForm.vb
index 8b4ae44268..4708d71435 100644
--- a/VECTO/GUI/ElectricMotorForm.vb
+++ b/VECTO/GUI/ElectricMotorForm.vb
@@ -360,21 +360,21 @@ Public Class ElectricMotorForm
             Dim fldFile As String =
                     If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbMaxTorque.Text), tbDragTorque.Text)
             If File.Exists(fldFile) Then _
-                fullLoadCurve = ElectricFullLoadCurveReader.Create(VectoCSVFile.Read(fldFile), 1.0, 1, 1.0)
+                fullLoadCurve = ElectricFullLoadCurveReader.Create(VectoCSVFile.Read(fldFile), 1)
         Catch ex As Exception
         End Try
 
         Try
             Dim fcFile As String =
                     If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbMap.Text), tbMap.Text)
-            If File.Exists(fcFile) Then fcMap = ElectricMotorMapReader.Create(VectoCSVFile.Read(fcFile), 1.0, 1, 1.0)
+            If File.Exists(fcFile) Then fcMap = ElectricMotorMapReader.Create(VectoCSVFile.Read(fcFile), 1)
         Catch ex As Exception
         End Try
 
         Try
             Dim dragFile As String =
                     If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbDragTorque.Text), tbMap.Text)
-            If File.Exists(dragFile) Then dragCurve = ElectricMotorDragCurveReader.Create(VectoCSVFile.Read(dragFile), 1.0, 1, 1.0)
+            If File.Exists(dragFile) Then dragCurve = ElectricMotorDragCurveReader.Create(VectoCSVFile.Read(dragFile), 1)
         Catch ex As Exception
         End Try
 
diff --git a/VectoCommon/VectoCommon/Models/PowertrainPosition.cs b/VectoCommon/VectoCommon/Models/PowertrainPosition.cs
index e16fbf0189..203705d3cb 100644
--- a/VectoCommon/VectoCommon/Models/PowertrainPosition.cs
+++ b/VectoCommon/VectoCommon/Models/PowertrainPosition.cs
@@ -12,9 +12,9 @@ namespace TUGraz.VectoCommon.InputData {
 		HybridP3,
 		HybridP4,
 
-		BatteryElectricB4,
-		BatteryElectricB3,
-		BatteryElectricB2,
+		BatteryElectricE4,
+		BatteryElectricE3,
+		BatteryElectricE2,
 	}
 
 	public static class PowertrainPositionHelper
@@ -29,6 +29,9 @@ namespace TUGraz.VectoCommon.InputData {
 			}
 
 			if (pos.StartsWith("B", StringComparison.InvariantCultureIgnoreCase)) {
+				return (BatteryElectriPrefix + pos.Replace("B", "E")).ParseEnum<PowertrainPosition>();
+			}
+			if (pos.StartsWith("E", StringComparison.InvariantCultureIgnoreCase)) {
 				return (BatteryElectriPrefix + pos).ParseEnum<PowertrainPosition>();
 			}
 			throw new VectoException("invalid powertrain position {0}", pos);
@@ -54,8 +57,8 @@ namespace TUGraz.VectoCommon.InputData {
 
 		public static bool IsBatteryElectric(this PowertrainPosition pos)
 		{
-			return pos == PowertrainPosition.BatteryElectricB2 || pos == PowertrainPosition.BatteryElectricB3 ||
-					pos == PowertrainPosition.BatteryElectricB4;
+			return pos == PowertrainPosition.BatteryElectricE2 || pos == PowertrainPosition.BatteryElectricE3 ||
+					pos == PowertrainPosition.BatteryElectricE4;
 		}
 
 		public static bool IsParallelHybrid(this PowertrainPosition pos)
diff --git a/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricFullLoadCurveReader.cs b/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricFullLoadCurveReader.cs
index 06990cb404..d242372c60 100644
--- a/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricFullLoadCurveReader.cs
+++ b/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricFullLoadCurveReader.cs
@@ -9,7 +9,7 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
 {
 	public static class ElectricFullLoadCurveReader
 	{
-		public static ElectricMotorFullLoadCurve Create(DataTable data, double ratio, int count, double efficiency)
+		public static ElectricMotorFullLoadCurve Create(DataTable data, int count)
 		{
 			if (data.Columns.Count < 3) {
 				throw new VectoException("Motor FullLoadCurve Data must contain at least 3 columns");
@@ -27,9 +27,9 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
 			return new ElectricMotorFullLoadCurve(
 				(from DataRow row in data.Rows
 				select new ElectricMotorFullLoadCurve.FullLoadEntry {
-					MotorSpeed = row.ParseDouble(Fields.MotorSpeed).RPMtoRad() / ratio,
-					FullDriveTorque = -row.ParseDouble(Fields.DrivingTorque).SI<NewtonMeter>() * count * ratio * efficiency,
-					FullGenerationTorque = -row.ParseDouble(Fields.GenerationTorque).SI<NewtonMeter>() * count * ratio / efficiency
+					MotorSpeed = row.ParseDouble(Fields.MotorSpeed).RPMtoRad(), // / ratio,
+					FullDriveTorque = -row.ParseDouble(Fields.DrivingTorque).SI<NewtonMeter>() * count, // * ratio * efficiency,
+					FullGenerationTorque = -row.ParseDouble(Fields.GenerationTorque).SI<NewtonMeter>() * count, //* ratio / efficiency
 				}).ToList());
 		}
 
@@ -51,7 +51,7 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
 
 	public static class ElectricMotorDragCurveReader
 	{
-		public static DragCurve Create(DataTable data, double ratio, int count, double efficiency)
+		public static DragCurve Create(DataTable data, int count)
 		{
 			if (data.Columns.Count < 2) {
 				throw new VectoException("Drag Curve must contain at least 2 columns");
@@ -66,8 +66,8 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
 				data.Columns[1].ColumnName = Fields.DragTorque;
 			}
 			return new DragCurve(data.AsEnumerable().Cast<DataRow>().Select(x => new DragCurve.DragLoadEntry() {
-				MotorSpeed = x.ParseDouble(Fields.MotorSpeed).RPMtoRad() / ratio,
-				DragTorque = -x.ParseDouble(Fields.DragTorque).SI<NewtonMeter>() * ratio * count / efficiency
+				MotorSpeed = x.ParseDouble(Fields.MotorSpeed).RPMtoRad(), // / ratio,
+				DragTorque = -x.ParseDouble(Fields.DragTorque).SI<NewtonMeter>() * count, // * ratio / efficiency
 			}).ToList());
 		}
 
diff --git a/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricMotorMapReader.cs b/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricMotorMapReader.cs
index 27bb374a26..73cf6ca8ad 100644
--- a/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricMotorMapReader.cs
+++ b/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricMotorMapReader.cs
@@ -12,12 +12,12 @@ using TUGraz.VectoCore.Utils;
 namespace TUGraz.VectoCore.InputData.Reader.ComponentData {
 	public static class ElectricMotorMapReader
 	{
-		public static EfficiencyMap Create(Stream data, double ratio, int count, double efficiency)
+		public static EfficiencyMap Create(Stream data, int count)
 		{
-			return Create(VectoCSVFile.ReadStream(data), ratio, count, efficiency);
+			return Create(VectoCSVFile.ReadStream(data), count);
 		}
 
-		public static EfficiencyMap Create(DataTable data, double ratio, int count, double efficiency)
+		public static EfficiencyMap Create(DataTable data, int count)
 		{
 			var headerValid = HeaderIsValid(data.Columns);
 			if (!headerValid)
@@ -37,12 +37,12 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData {
 				{
 					var entry = CreateEntry(row);
 					if (entry.Torque.IsGreaterOrEqual(0)) {
-						delaunayMap.AddPoint(-entry.Torque.Value() * count * ratio * efficiency,
-							entry.MotorSpeed.Value() / ratio,
+						delaunayMap.AddPoint(-entry.Torque.Value() * count, // * ratio * efficiency,
+							entry.MotorSpeed.Value(), // / ratio,
 							-entry.PowerElectrical.Value() * count);
 					} else {
-						delaunayMap.AddPoint(-entry.Torque.Value() * count * ratio / efficiency, 
-							entry.MotorSpeed.Value() / ratio,
+						delaunayMap.AddPoint(-entry.Torque.Value() * count, // * ratio / efficiency, 
+							entry.MotorSpeed.Value(), // / ratio,
 							-entry.PowerElectrical.Value() * count);
 					}
 				}
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
index 488da9e14c..f41a99b775 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
@@ -680,14 +680,16 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			double ratio, double efficiency)
 		{
 			return new ElectricMotorData() {
-				FullLoadCurve = ElectricFullLoadCurveReader.Create(motorData.FullLoadCurve, ratio, count, efficiency),
-				DragCurve = ElectricMotorDragCurveReader.Create(motorData.DragCurve, ratio, count, efficiency),
-				EfficiencyMap = ElectricMotorMapReader.Create(motorData.EfficiencyMap, ratio, count, efficiency),
+				FullLoadCurve = ElectricFullLoadCurveReader.Create(motorData.FullLoadCurve, count),
+				DragCurve = ElectricMotorDragCurveReader.Create(motorData.DragCurve, count),
+				EfficiencyMap = ElectricMotorMapReader.Create(motorData.EfficiencyMap, count),
 				Inertia = motorData.Inertia,
 				ContinuousPower = motorData.ContinuousPower * count,
 				ContinuousPowerSpeed = motorData.ContinuousPowerSpeed,
 				OverloadTime = motorData.OverloadTime,
 				OverloadRegenerationFactor = motorData.OverloadRecoveryFactor,
+				Ratio = ratio,
+				TransmissionEfficiency = efficiency
 			};
 		}
 
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
index bc03c0e2b5..5d1b932354 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
@@ -93,7 +93,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 				GearboxData gearboxData = null;
 				ShiftStrategyParameters gearshiftParams = null;
 				AngledriveData angledriveData = null;
-				if (electricMachinesData.Any(x => x.Item1 == PowertrainPosition.BatteryElectricB2)) {
+				if (electricMachinesData.Any(x => x.Item1 == PowertrainPosition.BatteryElectricE2)) {
 					// gearbox required!
 					var tmpRunData = new VectoRunData() {
 						JobType = VectoSimulationJobType.BatteryElectricVehicle,
diff --git a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs
index 2bc2cc74bd..4f07a71129 100644
--- a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs
@@ -378,37 +378,49 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 		[ModalResultField(typeof(SI), "P_WHR_mech [kW]", outputFactor: 1e-3)] P_WHR_mech_map,
 		[ModalResultField(typeof(SI), "P_WHR_mech_corr [kW]", outputFactor: 1e-3)] P_WHR_mech_corr,
 
-		[ModalResultField(typeof(SI), caption: "n_em-{0}_avg [1/min]", outputFactor: 60 / (2 * Math.PI))] n_electricMotor_,
-		[ModalResultField(typeof(SI), caption: "T_em-{0} [Nm]")] T_electricMotor_,
-		[ModalResultField(typeof(SI), caption: "T_em-{0}_drive_max [Nm]")] T_electricMotor_drive_max_,
-		[ModalResultField(typeof(SI), caption: "T_em-{0}_gen_max [Nm]")] T_electricMotor_gen_max_,
-		[ModalResultField(typeof(SI), caption: "P_em-{0}_in [kW]", outputFactor: 1e-3)] P_electricMotor_in_,
-		[ModalResultField(typeof(SI), caption: "P_em-{0}_out [kW]", outputFactor: 1e-3)] P_electricMotor_out_,
-		[ModalResultField(typeof(SI), caption: "P_em-{0}_mech [kW]", outputFactor: 1e-3)] P_electricMotor_mech_,
-		[ModalResultField(typeof(SI), caption: "P_em-{0}_el [kW]", outputFactor: 1e-3)] P_electricMotor_el_,
-		[ModalResultField(typeof(SI), caption: "P_em-{0}_gen_max_ [kW]", outputFactor: 1e-3)] P_electricMotor_gen_max_,
-		[ModalResultField(typeof(SI), caption: "P_em-{0}_drive_max [kW]", outputFactor: 1e-3)] P_electricMotor_drive_max_,
-		//[ModalResultField(typeof(SI), caption: "P_em-{0}_brake [kW]", outputFactor: 1e-3)] P_electricMotor_brake_,
-		[ModalResultField(typeof(SI), caption: "P_em-{0}_loss [kW]", outputFactor: 1e-3)] P_electricMotorLoss_,
-		[ModalResultField(typeof(SI), caption: "P_em-{0}_transm_loss [kW]", outputFactor: 1e-3)] P_electricMotorTransmissionLoss_,
-		[ModalResultField(typeof(SI), caption: "P_em-{0}_inertia_loss [kW]", outputFactor: 1e-3)] P_electricMotorInertiaLoss_,
-		[ModalResultField(typeof(SI), caption: "EM-{0}_OverloadBuffer [%]", outputFactor: 100)] ElectricMotor_OvlBuffer_,
+		[ModalResultField(typeof(SI), caption: "i_{0}-em [-]")] EM_ratio_,
+		[ModalResultField(typeof(SI), caption: "n_{0}-em_avg [1/min]", outputFactor: 60 / (2 * Math.PI))] n_EM_electricMotor_,
+		[ModalResultField(typeof(SI), caption: "T_{0}-em [Nm]")] T_EM_electricMotor_,
+		[ModalResultField(typeof(SI), caption: "T_{0}-em_map [Nm]")] T_EM_electricMotor_map_,
+
+		[ModalResultField(typeof(SI), caption: "T_{0}-em_drive_max [Nm]")] T_EM_electricMotor_drive_max_,
+		[ModalResultField(typeof(SI), caption: "T_{0}-em_gen_max [Nm]")] T_EM_electricMotor_gen_max_,
+		[ModalResultField(typeof(SI), caption: "P_{0}-em_gen_max_ [kW]", outputFactor: 1e-3)] P_EM_electricMotor_gen_max_,
+		[ModalResultField(typeof(SI), caption: "P_{0}-em_drive_max [kW]", outputFactor: 1e-3)] P_EM_electricMotor_drive_max_,
+		
+		[ModalResultField(typeof(SI), caption: "P_{0}-em_mech [kW]", outputFactor: 1e-3)] P_EM_electricMotor_em_mech_,
+		[ModalResultField(typeof(SI), caption: "P_{0}-em_mech_map [kW]", outputFactor: 1e-3)] P_EM_electricMotor_em_mech_map_,
+		[ModalResultField(typeof(SI), caption: "P_{0}-em_el [kW]", outputFactor: 1e-3)] P_EM_electricMotor_el_,
+		[ModalResultField(typeof(SI), caption: "P_{0}-em_loss [kW]", outputFactor: 1e-3)] P_EM_electricMotorLoss_,
+		[ModalResultField(typeof(SI), caption: "P_{0}-em_inertia_loss [kW]", outputFactor: 1e-3)] P_EM_electricMotorInertiaLoss_,
+
+		[ModalResultField(typeof(SI), caption: "P_{0}_in [kW]", outputFactor: 1e-3)] P_EM_in_,
+		[ModalResultField(typeof(SI), caption: "P_{0}_out [kW]", outputFactor: 1e-3)] P_EM_out_,
+		[ModalResultField(typeof(SI), caption: "P_{0}_mech [kW]", outputFactor: 1e-3)] P_EM_mech_,
+		[ModalResultField(typeof(SI), caption: "P_{0}_loss [kW]", outputFactor: 1e-3)] P_EM_loss_,
+		
+		[ModalResultField(typeof(SI), caption: "P_{0}_transm_loss [kW]", outputFactor: 1e-3)] P_EM_TransmissionLoss_,
+
+		[ModalResultField(typeof(SI), caption: "EM_OVL-{0}-em [%]", outputFactor: 100)] ElectricMotor_OvlBuffer_,
+
+		[ModalResultField(typeof(SI), caption: "EM_{0}_off")] EM_Off_,
+
 
 		// only for graphDrawing Testcase
-		[ModalResultField(typeof(SI), caption: "P_em-P2_mech [kW]", outputFactor: 1e-3)]
+		[ModalResultField(typeof(SI), caption: "P_P2_mech [kW]", outputFactor: 1e-3)]
 		P_electricMotor_mech_P2,
-		[ModalResultField(typeof(SI), caption: "P_em-P3_mech [kW]", outputFactor: 1e-3)]
+		[ModalResultField(typeof(SI), caption: "P_P3_mech [kW]", outputFactor: 1e-3)]
 		P_electricMotor_mech_P3,
-		[ModalResultField(typeof(SI), caption: "P_em-P4_mech [kW]", outputFactor: 1e-3)]
+		[ModalResultField(typeof(SI), caption: "P_P4_mech [kW]", outputFactor: 1e-3)]
 		P_electricMotor_mech_P4,
 
-		[ModalResultField(typeof(SI), caption: "P_em-B4_mech [kW]", outputFactor: 1e-3)]
+		[ModalResultField(typeof(SI), caption: "P_E4_mech [kW]", outputFactor: 1e-3)]
 		P_electricMotor_mech_B4,
 
-		[ModalResultField(typeof(SI), caption: "P_em-B3_mech [kW]", outputFactor: 1e-3)]
+		[ModalResultField(typeof(SI), caption: "P_E3_mech [kW]", outputFactor: 1e-3)]
         P_electricMotor_mech_B3,
 		
-		[ModalResultField(typeof(SI), caption: "P_em-B2_mech [kW]", outputFactor: 1e-3)]
+		[ModalResultField(typeof(SI), caption: "P_E2_mech [kW]", outputFactor: 1e-3)]
 		P_electricMotor_mech_B2,
         // -->
 
diff --git a/VectoCore/VectoCore/Models/Simulation/DataBus/IAxlegearInfo.cs b/VectoCore/VectoCore/Models/Simulation/DataBus/IAxlegearInfo.cs
index 2677b92dcb..fdaf27c16e 100644
--- a/VectoCore/VectoCore/Models/Simulation/DataBus/IAxlegearInfo.cs
+++ b/VectoCore/VectoCore/Models/Simulation/DataBus/IAxlegearInfo.cs
@@ -39,5 +39,12 @@ namespace TUGraz.VectoCore.Models.Simulation.DataBus
 		Watt AxlegearLoss();
 
 		Tuple<PerSecond, NewtonMeter> CurrentAxleDemand { get; }
+		
+		double Ratio { get; }
+	}
+
+	public interface IAngledriveInfo
+	{
+		double Ratio { get; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Simulation/DataBus/IDataBus.cs b/VectoCore/VectoCore/Models/Simulation/DataBus/IDataBus.cs
index 6ab1f6c291..729be51228 100644
--- a/VectoCore/VectoCore/Models/Simulation/DataBus/IDataBus.cs
+++ b/VectoCore/VectoCore/Models/Simulation/DataBus/IDataBus.cs
@@ -80,6 +80,7 @@ namespace TUGraz.VectoCore.Models.Simulation.DataBus
 		IHybridControllerInfo HybridControllerInfo { get; }
 
 		IHybridControllerCtl HybridControllerCtl { get; }
+		IAngledriveInfo AngledriveInfo { get; }
 	}
 
 	public interface IPowertainInfo
diff --git a/VectoCore/VectoCore/Models/Simulation/DataBus/IWheelsInfo.cs b/VectoCore/VectoCore/Models/Simulation/DataBus/IWheelsInfo.cs
index eba2f5092d..a9bf31e94b 100644
--- a/VectoCore/VectoCore/Models/Simulation/DataBus/IWheelsInfo.cs
+++ b/VectoCore/VectoCore/Models/Simulation/DataBus/IWheelsInfo.cs
@@ -36,5 +36,6 @@ namespace TUGraz.VectoCore.Models.Simulation.DataBus
 	public interface IWheelsInfo
 	{
 		Kilogram ReducedMassWheels { get; }
+		Meter DynamicTyreRadius { get; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index 95d8e9dff1..d2bd40e5b1 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -488,27 +488,27 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				case PowertrainPosition.HybridP3:
 				case PowertrainPosition.HybridP4:
 					throw new VectoException("testcase does not support parallel powertrain configurations");
-				case PowertrainPosition.BatteryElectricB4:
+				case PowertrainPosition.BatteryElectricE4:
 					powertrain.AddComponent(
-						GetElectricMachine(PowertrainPosition.BatteryElectricB4, data.ElectricMachinesData, container, es, ctl));
+						GetElectricMachine(PowertrainPosition.BatteryElectricE4, data.ElectricMachinesData, container, es, ctl));
 					new DummyGearboxInfo(container);
 					//new MockEngineInfo(container);
 					new ATClutchInfo(container);
 					break;
-				case PowertrainPosition.BatteryElectricB3:
+				case PowertrainPosition.BatteryElectricE3:
 					powertrain.AddComponent(new AxleGear(container, data.AxleGearData))
 						.AddComponent(
-							GetElectricMachine(PowertrainPosition.BatteryElectricB3, data.ElectricMachinesData, container, es, ctl));
+							GetElectricMachine(PowertrainPosition.BatteryElectricE3, data.ElectricMachinesData, container, es, ctl));
 					new DummyGearboxInfo(container);
 					//new MockEngineInfo(container);
 					new ATClutchInfo(container);
 					break;
-				case PowertrainPosition.BatteryElectricB2:
+				case PowertrainPosition.BatteryElectricE2:
 					var strategy = new PEVAMTShiftStrategy(container);
 					powertrain.AddComponent(new AxleGear(container, data.AxleGearData))
 						.AddComponent(new PEVGearbox(container, strategy))
 						.AddComponent(
-							GetElectricMachine(PowertrainPosition.BatteryElectricB2, data.ElectricMachinesData, container, es, ctl));
+							GetElectricMachine(PowertrainPosition.BatteryElectricE2, data.ElectricMachinesData, container, es, ctl));
 					new ATClutchInfo(container);
 					break;
 				default: throw new ArgumentOutOfRangeException(nameof(pos), pos, null);
@@ -713,7 +713,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				.AddComponent(new AxleGear(container, data.AxleGearData))
 				.AddComponent(data.AngledriveData != null ? new Angledrive(container, data.AngledriveData) : null)
 				.AddComponent(GetSimpleGearbox(container, data), data.Retarder, container)
-				.AddComponent(GetElectricMachine(PowertrainPosition.BatteryElectricB2, data.ElectricMachinesData, container, es, ctl));
+				.AddComponent(GetElectricMachine(PowertrainPosition.BatteryElectricE2, data.ElectricMachinesData, container, es, ctl));
 			
 			// DistanceBasedDrivingCycle --> driver --> vehicle --> wheels 
 			// --> axleGear --> (retarder) --> gearBox --> (retarder) --> clutch --> engine <-- Aux
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
index 6b11991934..d6ac780099 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
@@ -60,6 +60,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		public virtual IGearboxInfo GearboxInfo { get; protected set; }
 		public virtual IGearboxControl GearboxCtl { get; protected set; }
 		public virtual IAxlegearInfo AxlegearInfo { get; protected set; }
+		public virtual IAngledriveInfo AngledriveInfo { get; protected set; }
 		public virtual IVehicleInfo VehicleInfo { get; protected set; }
 		public virtual IBrakes Brakes { get; protected set; }
 		public virtual IWheelsInfo WheelsInfo { get; protected set; }
@@ -132,6 +133,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			get { return HybridController; }
 		}
 
+		
+
 		public virtual void AddComponent(VectoSimulationComponent component)
 		{
 			var commitPriority = 0;
@@ -152,6 +155,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				.If<IGearboxControl>(c => GearboxCtl = c)
 				.If<ITorqueConverterControl>(c => TorqueConverterCtl = c)
 				.If<IAxlegearInfo>(c => AxlegearInfo = c)
+				.If<IAngledriveInfo>(c => AngledriveInfo = c)
 				.If<IWheelsInfo>(c => WheelsInfo = c)
 				.If<IVehicleInfo>(c => {
 					VehicleInfo = c;
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs
index fe6417b85e..4e00de495a 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs
@@ -27,5 +27,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 
 		[SIRange(0, 1)]
 		public double OverloadRegenerationFactor { get; internal set; }
+
+		public double Ratio { get; internal set; }
+		public double TransmissionEfficiency { get; internal set; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/IAxlegear.cs b/VectoCore/VectoCore/Models/SimulationComponent/IAxlegear.cs
index 38eaa2abd1..98e3df2cf3 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/IAxlegear.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/IAxlegear.cs
@@ -34,4 +34,6 @@ using TUGraz.VectoCore.Models.Simulation.DataBus;
 namespace TUGraz.VectoCore.Models.SimulationComponent
 {
 	public interface IAxlegear : IPowerTrainComponent, IAxlegearInfo {}
+
+	public interface IAngledrive : IPowerTrainComponent, IAngledriveInfo {}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Angledrive.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Angledrive.cs
index f780dddc7b..539a029abb 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Angledrive.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Angledrive.cs
@@ -38,7 +38,7 @@ using TUGraz.VectoCore.OutputData;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 {
-	public class Angledrive : TransmissionComponent
+	public class Angledrive :  TransmissionComponent, IAngledrive
 	{
 		public Angledrive(IVehicleContainer container, AngledriveData modelData) : base(container, modelData.Angledrive) {}
 
@@ -57,5 +57,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 														avgAngularVelocity;
 			container[ModalResultField.P_angle_in] = CurrentState.InTorque * avgAngularVelocity;
 		}
+
+		public double Ratio
+		{
+			get { return ModelData.Ratio; }
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/AxleGear.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/AxleGear.cs
index c5c88be82f..61ea47843b 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/AxleGear.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/AxleGear.cs
@@ -81,5 +81,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 					(PreviousState.InAngularVelocity + CurrentState.InAngularVelocity) / 2.0, CurrentState.InTorque);
 			}
 		}
+
+		public double Ratio
+		{
+			get { return ModelData.Ratio; }
+		}
 	}
 }
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
index 1ab7d3136d..67d0073fc5 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
@@ -1,4 +1,7 @@
-using TUGraz.VectoCommon.Exceptions;
+using System.Runtime.InteropServices.WindowsRuntime;
+using System.Security.Cryptography;
+using NLog.LayoutRenderers;
+using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
@@ -14,6 +17,7 @@ using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 {
+	
 	public class ElectricMotor : StatefulProviderComponent<ElectricMotorState, ITnOutPort, ITnInPort, ITnOutPort>, IPowerTrainComponent, IElectricMotor, ITnOutPort, ITnInPort
 	{
 
@@ -52,7 +56,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		public PowertrainPosition Position { get; }
 		public PerSecond MaxSpeed
 		{
-			get { return _maxSpeed ?? (_maxSpeed = ModelData.FullLoadCurve.FullLoadEntries.MaxBy(x => x.MotorSpeed).MotorSpeed); }
+			get { return _maxSpeed ?? (_maxSpeed = ModelData.FullLoadCurve.FullLoadEntries.MaxBy(x => x.MotorSpeed).MotorSpeed) / ModelData.Ratio; }
 		}
 
 		public Watt DragPower(PerSecond electricMotorSpeed)
@@ -67,24 +71,29 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		public IResponse Initialize(NewtonMeter outTorque, PerSecond outAngularVelocity)
 		{
-			PreviousState.OutAngularVelocity = outAngularVelocity;
-			PreviousState.OutTorque = outTorque;
-			PreviousState.InAngularVelocity = outAngularVelocity;
-			PreviousState.InTorque = outTorque;
+			var emOutAngularVelocity = outAngularVelocity * ModelData.Ratio;
+			var emOutTorque = outTorque / ModelData.Ratio;
+
+			PreviousState.EMSpeed = emOutAngularVelocity;
+			PreviousState.EMTorque = 0.SI<NewtonMeter>();
+
+			PreviousState.DrivetrainSpeed = outAngularVelocity;
+			PreviousState.DrivetrainOutTorque = outTorque;
+
 			if (NextComponent == null) {
 				return new ResponseSuccess(this) {
 					Engine = {
-						PowerRequest = outTorque * outAngularVelocity,
-						EngineSpeed = outAngularVelocity
+						PowerRequest = emOutTorque * emOutAngularVelocity,
+						EngineSpeed = emOutAngularVelocity
 					}
 				};
 			}
-			if (!DataBus.EngineCtl.CombustionEngineOn)
-			{
-				PreviousState.InTorque = 0.SI<NewtonMeter>();
-				PreviousState.InAngularVelocity = outAngularVelocity;
+			if (!DataBus.EngineCtl.CombustionEngineOn) {
+				PreviousState.DrivetrainInTorque = 0.SI<NewtonMeter>();
+				//PreviousState.InAngularVelocity = emOutAngularVelocity;
 			}
-			return NextComponent.Initialize(PreviousState.InTorque, PreviousState.InAngularVelocity);
+			return NextComponent.Initialize(outTorque, outAngularVelocity);
+			//return NextComponent.Initialize(PreviousState.InTorque, PreviousState.InAngularVelocity);
 		}
 
 		/// <summary>
@@ -100,91 +109,65 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		public IResponse Request(
 			Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun = false)
 		{
-			var avgSpeed = (PreviousState.OutAngularVelocity + outAngularVelocity) / 2;
-			var maxDriveTorque =  GetMaxDriveTorque(absTime, dt, avgSpeed);
-			var maxRecuperationTorque = GetMaxRecuperationTorque(absTime, dt, avgSpeed);
-			
-			var retVal = HandleRequest(absTime, dt, outTorque, outAngularVelocity, dryRun, maxDriveTorque, maxRecuperationTorque);
-			
-			retVal.ElectricMotor.MaxDriveTorque = maxDriveTorque;
-			retVal.ElectricMotor.MaxRecuperationTorque = maxRecuperationTorque;
-			retVal.ElectricMotor.AngularVelocity = avgSpeed;
-			retVal.ElectricMotor.PowerRequest = outTorque * avgSpeed;
-			if (!dryRun) {
-				CurrentState.DragMax = maxRecuperationTorque;
-				CurrentState.DriveMax = maxDriveTorque;
-				CurrentState.ElectricPowerToBattery = retVal.ElectricSystem?.ConsumerPower;
-			}
-			return retVal;
-		}
-
-		private NewtonMeter GetMaxRecuperationTorque(Second absTime, Second dt, PerSecond avgSpeed)
-		{
-			var tqContinuousPwr = DeRatingActive ? ContinuousTorque : null;
-			if (!avgSpeed.IsEqual(0)) {
-				tqContinuousPwr = DeRatingActive ? ModelData.ContinuousPower / avgSpeed : null;
-			}
-			var maxEmTorque = VectoMath.Min(tqContinuousPwr, ModelData.FullLoadCurve.FullGenerationTorque(avgSpeed));
-			var electricSystemResponse = ElectricPower.Request(absTime, dt, 0.SI<Watt>(), true);
-			var maxBatPower = electricSystemResponse.MaxPowerDrag;
+			var avgDtSpeed = (PreviousState.DrivetrainSpeed + outAngularVelocity) / 2;
+			var emSpeed = outAngularVelocity * ModelData.Ratio;
 
-			var maxBatRecuperationTorque = maxBatPower.IsEqual(0) ? ModelData.DragCurve.Lookup(avgSpeed) : ModelData.EfficiencyMap.LookupTorque(maxBatPower, avgSpeed, maxEmTorque);
-			var maxTorqueRecuperate = VectoMath.Min(maxEmTorque, maxBatRecuperationTorque);
-			return maxTorqueRecuperate < 0 ? null : maxTorqueRecuperate;
-		}
-
-		private NewtonMeter GetMaxDriveTorque(Second absTime, Second dt, PerSecond avgSpeed)
-		{
-			var tqContinuousPwr = DeRatingActive ? -ContinuousTorque : null;
-			if (!avgSpeed.IsEqual(0)) {
-				tqContinuousPwr = DeRatingActive ? -ModelData.ContinuousPower / avgSpeed : null;
-			}
-			var maxEmTorque = VectoMath.Max(tqContinuousPwr ,ModelData.FullLoadCurve.FullLoadDriveTorque(avgSpeed));
-			var electricSystemResponse = ElectricPower.Request(absTime, dt, 0.SI<Watt>(), true);
-			var maxBatPower = electricSystemResponse.MaxPowerDrive;
+			var avgEmSpeed = (PreviousState.EMSpeed + emSpeed) / 2;
+			var inertiaTorqueEm = avgEmSpeed.IsEqual(0)
+				? 0.SI<NewtonMeter>()
+				: Formulas.InertiaPower(avgEmSpeed, PreviousState.EMSpeed, ModelData.Inertia, dt) / avgEmSpeed;
 
-			var maxBatDriveTorque = maxBatPower.IsEqual(0) ? ModelData.DragCurve.Lookup(avgSpeed) : ModelData.EfficiencyMap.LookupTorque(maxBatPower, avgSpeed, maxEmTorque);
-			//if (maxBatDriveTorque == null) {
-			//	return ModelData.DragCurve.Lookup(avgSpeed);
-			//}
-			var maxTorqueDrive = VectoMath.Max(maxEmTorque, maxBatDriveTorque);
-			return maxTorqueDrive > 0 ? null : maxTorqueDrive;
-		}
+			var maxDriveTorqueEmMap = GetMaxDriveTorque(absTime, dt, avgEmSpeed);
+			var maxRecuperationTorqueEmMap = GetMaxRecuperationTorque(absTime, dt, avgEmSpeed);
 
+			// inertia has to be added here. drive torque is negative, when accelerating inertia is positive and thus 'reduces' drive torque, i.e 'less negative'
+			var maxDriveTorqueEm = maxDriveTorqueEmMap == null ? null : maxDriveTorqueEmMap + inertiaTorqueEm;
+			// inertia has to be added here. recuperation torque is positive, when accelerating inertia is positive and adds more drag to the drivetrain, 
+			var maxRecuperationTorqueEm = maxRecuperationTorqueEmMap == null ? null : maxRecuperationTorqueEmMap + inertiaTorqueEm;
 
-		protected virtual IResponse HandleRequest(
-			Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun,
-			NewtonMeter maxDriveTorque, NewtonMeter maxRecuperationTorque)
-		{
+			var maxDriveTorqueDt = maxDriveTorqueEm == null ? null : ConvertEmTorqueToDrivetrain(maxDriveTorqueEm);
+			var maxRecuperationTorqueDt = maxRecuperationTorqueEm == null ? null : ConvertEmTorqueToDrivetrain(maxRecuperationTorqueEm);
+			
+			// control returns torque that shall be applied on the drivetrain. calculate backward to the EM
+			var emTorqueDt = Control.MechanicalAssistPower(absTime, dt, outTorque,
+				PreviousState.DrivetrainSpeed, outAngularVelocity, maxDriveTorqueDt, maxRecuperationTorqueDt, Position, dryRun);
+
+			if (!dryRun && emTorqueDt != null && (emTorqueDt.IsSmaller(maxDriveTorqueDt ?? 0.SI<NewtonMeter>(), 1e-3) ||
+									emTorqueDt.IsGreater(maxRecuperationTorqueDt ?? 0.SI<NewtonMeter>(), 1e-3))) {
+				// check if provided EM torque (drivetrain) is valid)
+				if (DataBus.HybridControllerInfo != null && !avgDtSpeed.IsEqual(DataBus.HybridControllerInfo.ElectricMotorSpeed(Position))) {
+					return new ResponseInvalidOperatingPoint(this);
+				}
+				throw new VectoException(
+					"Invalid operating point provided by strategy! SupportPower: {0}, max Power: {1}, min Power: {2}",
+					emTorqueDt, maxDriveTorqueDt, maxRecuperationTorqueDt);
+			}
 
-			var avgSpeed = (PreviousState.OutAngularVelocity + outAngularVelocity) / 2;
-			var inertiaTorqueLoss = avgSpeed.IsEqual(0)
-				? 0.SI<NewtonMeter>()
-				: Formulas.InertiaPower(outAngularVelocity, PreviousState.OutAngularVelocity, ModelData.Inertia, dt) / avgSpeed;
-			var inTorque = outTorque + inertiaTorqueLoss;
 
-			//var maxDriveTorque = ModelData.FullLoadCurve.FullLoadDriveTorque(avgSpeed);
-			//var maxDragTorque = ModelData.FullLoadCurve.FullGenerationTorque(avgSpeed);
-			if (!dryRun) {
-				CurrentState.InertiaTorqueLoss = inertiaTorqueLoss;
-				CurrentState.OutTorque = outTorque;
-			}
+			var emTorque = emTorqueDt == null ? null : ConvertDrivetrainTorqueToEm(emTorqueDt);
+			var emOff = false;
 
-			if (ElectricPower == null) {
-				var retVal = ForwardRequest(absTime, dt, inTorque, inTorque, outAngularVelocity, null, dryRun);
-				return retVal;
+			if (ElectricPower == null || emTorqueDt == null) {
+				// no electric system or EM shall be off - apply drag only
+				// if EM is off, calculate EM drag torque 'forward' to be applied on drivetrain
+				// add inertia, drag is positive
+				emTorque =  ModelData.DragCurve.Lookup(avgEmSpeed) + inertiaTorqueEm;
+				emTorqueDt = ConvertEmTorqueToDrivetrain(emTorque);
+				emOff = true;
 			}
 
-			var eMotorTorque = Control.MechanicalAssistPower(
-				absTime, dt, inTorque, PreviousState.OutAngularVelocity, outAngularVelocity, maxDriveTorque, maxRecuperationTorque,
-				Position, dryRun);
-
-			if (Position == PowertrainPosition.HybridP2 &&
-				!DataBus.GearboxInfo.GearEngaged(absTime) /* && !DataBus.ClutchInfo.ClutchClosed(absTime)*/) {
+			if (Position == PowertrainPosition.HybridP2 && !DataBus.GearboxInfo.GearEngaged(absTime)) {
 				// electric motor is between gearbox and clutch, but no gear is engaged...
-				if (eMotorTorque != null) {
+				if (emTorque != null) {
 					if (!DataBus.HybridControllerInfo.GearboxEngaged) {
-						return new ResponseInvalidOperatingPoint(this);
+						return new ResponseInvalidOperatingPoint(this) {
+							ElectricMotor = {
+								MaxDriveTorque = maxDriveTorqueDt,
+								MaxRecuperationTorque = maxRecuperationTorqueDt,
+								AngularVelocity = avgDtSpeed,
+								PowerRequest = outTorque * avgDtSpeed
+							}
+						};
 					}
 
 					if (!dryRun) {
@@ -192,248 +175,206 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 							"electric motor cannot provide torque when gearbox and clutch are disengaged");
 					}
 				}
-
-				var electricSystemResponse = ElectricPower.Request(absTime, dt, 0.SI<Watt>(), dryRun);
-				if (!dryRun) {
-					if (!(electricSystemResponse is ElectricSystemResponseSuccess)) {
-						throw new VectoException("unexpected response from electric system: {0}", electricSystemResponse);
-					}
-
-					SetState(inTorque, outAngularVelocity);
-				}
-
-				var retVal = NextComponent.Request(absTime, dt, outTorque, outAngularVelocity, dryRun);
-				retVal.ElectricMotor.ElectricMotorPowerMech = 0.SI<Watt>();
-				retVal.ElectricSystem = electricSystemResponse;
-				retVal.ElectricMotor.InertiaPowerDemand = 0.SI<Watt>(); // inertiaTorqueLoss * avgSpeed;
-				return retVal;
 			}
 
-			if (eMotorTorque == null) {
-				var retVal = ElectricMotorOff(absTime, dt, outTorque, outAngularVelocity, dryRun);
-				retVal.ElectricMotor.InertiaPowerDemand = inertiaTorqueLoss * avgSpeed;
-				return retVal;
+			// inertia torque 'brakes' - electric motor has to provide this torque in addition (T_inertia > 0 when angular speed increases)
+			// emTorque < 0 when propelling, emTorqueMap needs to be 'more negative' to provide torque for inertia
+			// emTorque > 0 when recuperating, inertia 'brakes' in addition, emTorqueMap is decreased
+			var emTorqueMap = emTorque - inertiaTorqueEm ;
+			if (emOff) {
+				// not used later 
+				emTorqueMap = null;
 			}
 
-			//if (eMotorTorque.IsEqual(0, 1e-3))
-			//{
-			//	var electricSystemResponse = ElectricPower.Request(absTime, dt, 0.SI<Watt>(), dryRun);
+			var electricPower = emOff // TODO: still needed? || ModelData.DragCurve.Lookup(avgEmSpeed).IsEqual(emTorque)
+				? 0.SI<Watt>()
+				: ModelData.EfficiencyMap
+					.LookupElectricPower(avgEmSpeed, emTorqueMap, DataBus.ExecutionMode != ExecutionMode.Declaration)
+					.ElectricalPower;
 
-			//	var retVal = ForwardRequest(absTime, dt, inTorque, inTorque, outAngularVelocity, dryRun);
-			//	retVal.ElectricSystem = electricSystemResponse;
-			//	retVal.ElectricMotor.ElectricMotorPowerMech = 0.SI<Watt>();
-			//	return retVal;
-			//}
-
-			if (!dryRun && (eMotorTorque.IsSmaller(maxDriveTorque ?? 0.SI<NewtonMeter>(), 1e-3) ||
-							eMotorTorque.IsGreater(maxRecuperationTorque ?? 0.SI<NewtonMeter>(), 1e-3))) {
-				if (DataBus.HybridControllerInfo != null && !avgSpeed.IsEqual(DataBus.HybridControllerInfo.ElectricMotorSpeed(Position))) {
+			var electricSupplyResponse =
+				ElectricPower.Request(absTime, dt, electricPower, dryRun);
+			if (!dryRun && !(electricSupplyResponse is ElectricSystemResponseSuccess)) {
+				if (DataBus.HybridControllerInfo != null && !avgEmSpeed.IsEqual(DataBus.HybridControllerInfo.ElectricMotorSpeed(Position))) {
 					return new ResponseInvalidOperatingPoint(this);
 				}
 				throw new VectoException(
-					"Invalid operating point provided by strategy! SupportPower: {0}, max Power: {1}, min Power: {2}",
-					eMotorTorque,
-					maxDriveTorque, maxRecuperationTorque);
+					"Invalid operating point provided by strategy! EM Torque: {0}, req. electric Power: {1}, battery demand motor: {3}, max Power from Battery: {2}",
+					emTorque, electricPower,
+					emTorque < 0 ? electricSupplyResponse.MaxPowerDrive : electricSupplyResponse.MaxPowerDrag, electricSupplyResponse.ConsumerPower);
 			}
 
+			var inTorqueDt = outTorque + emTorqueDt;
 
-			var electricPower = ModelData.EfficiencyMap
-										.LookupElectricPower(avgSpeed, eMotorTorque, DataBus.ExecutionMode != ExecutionMode.Declaration)
-										.ElectricalPower;
-
-			if (ModelData.DragCurve.Lookup(avgSpeed).IsEqual(eMotorTorque)) {
-				electricPower = 0.SI<Watt>();
-			}
-		
-
-		var electricSupplyResponse = ElectricPower.Request(absTime, dt, electricPower, dryRun);
-			//if (!dryRun && !(electricSupplyResponse is ElectricSystemResponseSuccess) &&
-			//	electricPower > electricSupplyResponse.MaxPowerDrag) {
-			//	// can't charge all power into the battery - probably it's full
-			//	// dissipate remaining power
-			//	electricSupplyResponse = ElectricPower.Request(absTime, dt, electricSupplyResponse.MaxPowerDrag);
-			//	CurrentState.ElectricBrakePower = electricPower - electricSupplyResponse.MaxPowerDrag;
-			//}
-			if (!dryRun && !(electricSupplyResponse is ElectricSystemResponseSuccess)) {
-				if (DataBus.HybridControllerInfo != null && !avgSpeed.IsEqual(DataBus.HybridControllerInfo.ElectricMotorSpeed(Position))) {
-					return new ResponseInvalidOperatingPoint(this);
+			IResponse retVal = null;
+			if (NextComponent == null) {
+				// electric motor only
+				var remainingPower = inTorqueDt * avgDtSpeed;
+				if (dryRun) {
+					retVal = new ResponseDryRun(this) {
+						Engine = { EngineSpeed = avgDtSpeed},
+						ElectricMotor = {
+							ElectricMotorPowerMech = (inTorqueDt - outTorque) * avgDtSpeed,
+							TotalTorqueDemand = inTorqueDt,
+						},
+						DeltaFullLoad =  remainingPower,
+						DeltaDragLoad = remainingPower,
+					};
+				} else {
+
+					if (remainingPower.IsEqual(0, Constants.SimulationSettings.LineSearchTolerance)) {
+						if (electricSupplyResponse.MaxPowerDrive.IsGreaterOrEqual(0)) {
+							retVal = new ResponseBatteryEmpty(this);
+						} else {
+							retVal = new ResponseSuccess(this) {
+								ElectricMotor = {
+									ElectricMotorPowerMech = (inTorqueDt - outTorque) * avgDtSpeed,
+									TotalTorqueDemand = inTorqueDt
+								},
+								Engine = {
+									PowerRequest = 0.SI<Watt>(),
+									EngineSpeed = outAngularVelocity
+								},
+							};
+						}
+					} else {
+						if (remainingPower > 0) {
+							retVal = new ResponseOverload(this) { Delta = remainingPower };
+						} else {
+							retVal = new ResponseUnderload(this) { Delta = remainingPower };
+						}
+
+						retVal.Engine.EngineSpeed = avgDtSpeed;
+					}
 				}
-				throw new VectoException(
-						"Invalid operating point provided by strategy! SupportPower: {0}, req. electric Power: {1}, battery demand motor: {3}, max Power from Battery: {2}",
-						eMotorTorque, electricPower,
-						eMotorTorque < 0 ? electricSupplyResponse.MaxPowerDrive : electricSupplyResponse.MaxPowerDrag, electricSupplyResponse.ConsumerPower);
+			} else {
+				retVal = NextComponent.Request(absTime, dt, inTorqueDt, outAngularVelocity, dryRun);
+				retVal.ElectricMotor.ElectricMotorPowerMech = (inTorqueDt - outTorque) * avgDtSpeed;
+				retVal.ElectricMotor.TotalTorqueDemand = inTorqueDt;
 			}
 
-			var response = ForwardRequest(absTime, dt, inTorque, inTorque + eMotorTorque, outAngularVelocity, electricSupplyResponse, dryRun);
+			retVal.ElectricMotor.MaxDriveTorque = maxDriveTorqueDt;
+			retVal.ElectricMotor.MaxRecuperationTorque = maxRecuperationTorqueDt;
+			retVal.ElectricMotor.AngularVelocity = avgEmSpeed;
+			
+			retVal.ElectricMotor.PowerRequest = outTorque * outAngularVelocity;
+			retVal.ElectricMotor.InertiaPowerDemand = inertiaTorqueEm * avgEmSpeed;
+			retVal.ElectricSystem = electricSupplyResponse;
+			
+			if (!dryRun) {
+				CurrentState.EMSpeed = emSpeed;
+				CurrentState.EMTorque = emTorque;
+				CurrentState.EmTorqueMap = emTorqueMap;
+				CurrentState.DragMax = maxRecuperationTorqueEmMap;
+				CurrentState.DriveMax = maxDriveTorqueEmMap;
 
-			response.ElectricSystem = electricSupplyResponse;
-			response.ElectricMotor.InertiaPowerDemand = inertiaTorqueLoss * avgSpeed;
+				CurrentState.InertiaTorqueLoss = inertiaTorqueEm;
 
-			return response;
-		}
+				CurrentState.DrivetrainSpeed = outAngularVelocity;
+				CurrentState.DrivetrainInTorque = inTorqueDt;
+				CurrentState.DrivetrainOutTorque = outTorque;
 
-		private IResponse ElectricMotorOff(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun)
-		{
-			var avgSpeed = (PreviousState.InAngularVelocity + outAngularVelocity) / 2.0;
-			var torqueLoss = ModelData.DragCurve.Lookup(avgSpeed);
-			var inTorque = outTorque + torqueLoss;
+				CurrentState.TransmissionTorqueLoss = avgDtSpeed.IsEqual(0) ? 0.SI<NewtonMeter>() :
+					((inTorqueDt - outTorque) * avgDtSpeed - emTorque * avgEmSpeed) / avgDtSpeed;
 
-			if (!dryRun) {
-				SetState(inTorque, outAngularVelocity);
-			}
-			var electricSystemResponse = ElectricPower.Request(absTime, dt, 0.SI<Watt>(), dryRun);
+				CurrentState.ElectricPowerToBattery = retVal.ElectricSystem?.ConsumerPower;
 
-			var retVal = NextComponent == null
-				? RequestElectricMotorOnly(absTime, dt, outTorque, inTorque, outAngularVelocity, dryRun, avgSpeed, electricSystemResponse)
-				: NextComponent.Request(absTime, dt, inTorque, outAngularVelocity, dryRun);
-			retVal.ElectricMotor.ElectricMotorPowerMech = (inTorque - outTorque) * avgSpeed;
-			retVal.ElectricSystem = electricSystemResponse;
+			}
 			return retVal;
 		}
 
-		public IResponse ForwardRequest(Second absTime, Second dt, NewtonMeter outTorque, NewtonMeter inTorque, PerSecond outAngularVelocity,
-		 IElectricSystemResponse electricSystemResponse, bool dryRun = false)
+		private NewtonMeter GetMaxRecuperationTorque(Second absTime, Second dt, PerSecond avgSpeed)
 		{
-			var avgSpeed = (PreviousState.OutAngularVelocity + outAngularVelocity) / 2;
-			if (NextComponent == null)
-			{
-				return RequestElectricMotorOnly(absTime, dt, outTorque, inTorque, outAngularVelocity, dryRun, avgSpeed, electricSystemResponse);
+			var tqContinuousPwr = DeRatingActive ? ContinuousTorque : null;
+			if (!avgSpeed.IsEqual(0)) {
+				tqContinuousPwr = DeRatingActive ? ModelData.ContinuousPower / avgSpeed : null;
 			}
+			var maxEmTorque = VectoMath.Min(tqContinuousPwr, ModelData.FullLoadCurve.FullGenerationTorque(avgSpeed));
+			var electricSystemResponse = ElectricPower.Request(absTime, dt, 0.SI<Watt>(), true);
+			var maxBatPower = electricSystemResponse.MaxPowerDrag;
 
-			if (!dryRun) {
-				SetState(inTorque, outAngularVelocity);
-			}
-			var retVal = NextComponent.Request(absTime, dt, inTorque, outAngularVelocity, dryRun);
-			retVal.ElectricMotor.ElectricMotorPowerMech = (inTorque - outTorque) * avgSpeed;
-			retVal.ElectricMotor.TotalTorqueDemand = inTorque;
-			return retVal;
+			var maxBatRecuperationTorque = maxBatPower.IsEqual(0) ? ModelData.DragCurve.Lookup(avgSpeed) : ModelData.EfficiencyMap.LookupTorque(maxBatPower, avgSpeed, maxEmTorque);
+			var maxTorqueRecuperate = VectoMath.Min(maxEmTorque, maxBatRecuperationTorque);
+			return maxTorqueRecuperate < 0 ? null : maxTorqueRecuperate;
 		}
 
-		private IResponse RequestElectricMotorOnly(Second absTime, Second dt, NewtonMeter outTorque,
-			NewtonMeter inTorque, PerSecond outAngularVelocity, bool dryRun, PerSecond avgSpeed,
-			IElectricSystemResponse electricSystemResponse)
+		private NewtonMeter GetMaxDriveTorque(Second absTime, Second dt, PerSecond avgSpeed)
 		{
-			var remainingPower = inTorque * avgSpeed;
-			if (dryRun) {
-				//var driveTorque = Control.MaxDriveTorque(avgSpeed, dt);
-				var dragTorque = 0.SI<NewtonMeter>(); //Control.MaxDragTorque(avgSpeed, dt);
-				var powerDemand = outTorque * avgSpeed;
-				return new ResponseDryRun(this) {
-					Engine = {
-						EngineSpeed = avgSpeed,
-					},
-					ElectricMotor = {
-						ElectricMotorPowerMech = (inTorque - outTorque) * avgSpeed,
-						TotalTorqueDemand = inTorque,
-					},
-					DeltaFullLoad = remainingPower, //powerDemand + driveTorque * avgSpeed,
-					DeltaDragLoad = remainingPower, // powerDemand + dragTorque * avgSpeed,
-				};
+			var tqContinuousPwr = DeRatingActive ? -ContinuousTorque : null;
+			if (!avgSpeed.IsEqual(0)) {
+				tqContinuousPwr = DeRatingActive ? -ModelData.ContinuousPower / avgSpeed : null;
 			}
+			var maxEmTorque = VectoMath.Max(tqContinuousPwr ,ModelData.FullLoadCurve.FullLoadDriveTorque(avgSpeed));
+			var electricSystemResponse = ElectricPower.Request(absTime, dt, 0.SI<Watt>(), true);
+			var maxBatPower = electricSystemResponse.MaxPowerDrive;
 
-			//if (!DataBus.GearboxInfo.GearEngaged(absTime)) {
-			//	return RequestDisengagedElectricMotorOnly(absTime, dt, outTorque, inTorque, outAngularVelocity, dryRun,
-			//		avgSpeed, electricSystemResponse);
+			var maxBatDriveTorque = maxBatPower.IsEqual(0) ? ModelData.DragCurve.Lookup(avgSpeed) : ModelData.EfficiencyMap.LookupTorque(maxBatPower, avgSpeed, maxEmTorque);
+			//if (maxBatDriveTorque == null) {
+			//	return ModelData.DragCurve.Lookup(avgSpeed);
 			//}
+			var maxTorqueDrive = VectoMath.Max(maxEmTorque, maxBatDriveTorque);
+			return maxTorqueDrive > 0 ? null : maxTorqueDrive;
+		}
 
-			if ((inTorque * avgSpeed).IsEqual(0, Constants.SimulationSettings.LineSearchTolerance)) {
-				SetState(inTorque, outAngularVelocity);
-				if (electricSystemResponse.MaxPowerDrive.IsGreaterOrEqual(0)) {
-					return new ResponseBatteryEmpty(this);
-				}
-
-				return new ResponseSuccess(this) {
-					ElectricMotor = {
-						ElectricMotorPowerMech = (inTorque - outTorque) * avgSpeed,
-						TotalTorqueDemand = inTorque
-					},
-					Engine = {
-						PowerRequest = 0.SI<Watt>(),
-						EngineSpeed = outAngularVelocity
-					},
-				};
-			}
-
-			AbstractResponse response;
 
-			if (remainingPower > 0) {
-				response = new ResponseOverload(this) { Delta = remainingPower };
-			} else {
-				response = new ResponseUnderload(this) { Delta = remainingPower };
-			}
+		protected NewtonMeter ConvertEmTorqueToDrivetrain(NewtonMeter emTorque)
+		{
+			return emTorque * ModelData.Ratio *
+					(emTorque < 0 ? ModelData.TransmissionEfficiency : 1 / ModelData.TransmissionEfficiency);
+		}
 
-			response.Engine.EngineSpeed = avgSpeed;
-			return response;
+		protected NewtonMeter ConvertDrivetrainTorqueToEm(NewtonMeter dtTorque)
+		{
+			return dtTorque / ModelData.Ratio *
+					(dtTorque < 0 ? 1 / ModelData.TransmissionEfficiency : ModelData.TransmissionEfficiency);
 		}
 
-		//private IResponse RequestDisengagedElectricMotorOnly(Second absTime, Second dt, NewtonMeter outTorque,
-		//	NewtonMeter inTorque, PerSecond outAngularVelocity, bool dryRun, PerSecond avgSpeed,
-		//	IElectricSystemResponse electricSystemResponse)
-		//{
-		//	var angularSpeed = SearchAlgorithm.Search(outAngularVelocity, inTorque,
-		//		Constants.SimulationSettings.EngineIdlingSearchInterval,
-		//		getYValue: t => (NewtonMeter)t,
-		//		evaluateFunction: n => {
-		//			var avg = (PreviousState.InAngularVelocity + n) / 2.0;
-		//			var tDrag = ModelData.DragCurve.Lookup(avg);
-		//			var tInert = Formulas.InertiaPower(n, PreviousState.InAngularVelocity, ModelData.Inertia, dt) / avg;
-		//			return tDrag + tInert;
-		//		},
-		//		criterion: t => ((NewtonMeter)t).Value());
-		//	Log.Debug("Found operating point for idling. absTime: {0}, dt: {1}, torque: {2}, angularSpeed: {3}", absTime, dt,
-		//		0.SI<NewtonMeter>(), angularSpeed);
-		//	SetState(inTorque, angularSpeed);
-		//	return new ResponseSuccess(this) {
-		//		ElectricMotor = {
-		//			ElectricMotorPowerMech = (inTorque - outTorque) * (PreviousState.InAngularVelocity + angularSpeed) / 2.0,
-		//			TotalTorqueDemand = inTorque
-		//		},
-		//		Engine = {
-		//			PowerRequest = 0.SI<Watt>(),
-		//			EngineSpeed = outAngularVelocity
-		//		},
-		//	};
-		//}
 
-		private void SetState(NewtonMeter inTorque, PerSecond outAngularVelocity)
+		protected override void DoWriteModalResults(Second time, Second simulationInterval, IModalDataContainer container)
 		{
-			CurrentState.OutAngularVelocity = outAngularVelocity;
-			CurrentState.InAngularVelocity = outAngularVelocity;
-			//CurrentState.OutTorque = outTorque;
-			CurrentState.InTorque = inTorque;
-		}
+			var avgEMSpeed = (PreviousState.EMSpeed + CurrentState.EMSpeed) / 2;
+			var avgDTSpeed = (PreviousState.DrivetrainSpeed + CurrentState.DrivetrainSpeed) / 2;
 
+			container[ModalResultField.EM_ratio_, Position] = ModelData.Ratio.SI<Scalar>();
+			container[ModalResultField.n_EM_electricMotor_, Position] = avgEMSpeed;
+			container[ModalResultField.T_EM_electricMotor_, Position] = CurrentState.EMTorque;
+			container[ModalResultField.T_EM_electricMotor_map_, Position] = CurrentState.EmTorqueMap;
 
+			container[ModalResultField.T_EM_electricMotor_drive_max_, Position] = CurrentState.DriveMax;
+			container[ModalResultField.T_EM_electricMotor_gen_max_, Position] = CurrentState.DragMax;
 
+			container[ModalResultField.P_EM_electricMotor_gen_max_, Position] = (CurrentState.DragMax ?? 0.SI<NewtonMeter>()) * avgEMSpeed;
+			container[ModalResultField.P_EM_electricMotor_drive_max_, Position] = (CurrentState.DriveMax ?? 0.SI<NewtonMeter>()) * avgEMSpeed;
+			
+			container[ModalResultField.P_EM_electricMotor_em_mech_, Position] = CurrentState.EMTorque * avgEMSpeed;
+			container[ModalResultField.P_EM_electricMotor_em_mech_map_, Position] = (CurrentState.EmTorqueMap ?? 0.SI<NewtonMeter>()) * avgEMSpeed;
 
-		protected override void DoWriteModalResults(Second time, Second simulationInterval, IModalDataContainer container)
-		{
-			var avgSpeed = (PreviousState.OutAngularVelocity + CurrentState.OutAngularVelocity) / 2;
-			container[ModalResultField.n_electricMotor_, Position] = avgSpeed;
-			container[ModalResultField.T_electricMotor_, Position] = CurrentState.InTorque - CurrentState.OutTorque;
-			container[ModalResultField.T_electricMotor_drive_max_, Position] = CurrentState.DriveMax;
-			container[ModalResultField.T_electricMotor_gen_max_, Position] = CurrentState.DragMax;
-			container[ModalResultField.P_electricMotor_mech_, Position] = (CurrentState.InTorque - CurrentState.OutTorque) * avgSpeed;
-			container[ModalResultField.P_electricMotor_out_, Position] = CurrentState.OutTorque * avgSpeed;
-			container[ModalResultField.P_electricMotor_in_, Position] = CurrentState.InTorque * avgSpeed;
-			container[ModalResultField.P_electricMotor_el_, Position] = CurrentState.ElectricPowerToBattery;
-			//container[ModalResultField.P_electricMotor_brake_, Position] = CurrentState.ElectricBrakePower;
-			container[ModalResultField.P_electricMotor_gen_max_, Position] = (CurrentState.DragMax ?? 0.SI<NewtonMeter>()) * avgSpeed;
-			container[ModalResultField.P_electricMotor_drive_max_, Position] = (CurrentState.DriveMax ?? 0.SI<NewtonMeter>()) * avgSpeed;
-			container[ModalResultField.P_electricMotorLoss_, Position] = (CurrentState.InTorque - CurrentState.OutTorque) * avgSpeed - (CurrentState.ElectricPowerToBattery);
-			container[ModalResultField.P_electricMotorTransmissionLoss_, Position] = 0.SI<Watt>();
-			container[ModalResultField.P_electricMotorInertiaLoss_, Position] = CurrentState.InertiaTorqueLoss * avgSpeed;
-
-			var contribution =
-				(((CurrentState.InTorque - CurrentState.OutTorque) * avgSpeed -
-				CurrentState.ElectricPowerToBattery) - ContinuousPowerLoss) * simulationInterval;
+
+			container[ModalResultField.P_EM_in_, Position] = CurrentState.DrivetrainInTorque * avgDTSpeed;
+			container[ModalResultField.P_EM_out_, Position] = CurrentState.DrivetrainOutTorque * avgDTSpeed;
+			container[ModalResultField.P_EM_mech_, Position] = (CurrentState.DrivetrainInTorque - CurrentState.DrivetrainOutTorque) * avgDTSpeed;
+			
+			container[ModalResultField.P_EM_electricMotor_el_, Position] = CurrentState.ElectricPowerToBattery;
+			
+			container[ModalResultField.P_EM_electricMotorLoss_, Position] = (CurrentState.EmTorqueMap ?? 0.SI<NewtonMeter>()) * avgEMSpeed - CurrentState.ElectricPowerToBattery;
+
+			container[ModalResultField.P_EM_TransmissionLoss_, Position] = CurrentState.TransmissionTorqueLoss * avgDTSpeed;
+
+			container[ModalResultField.P_EM_electricMotorInertiaLoss_, Position] = CurrentState.InertiaTorqueLoss * avgEMSpeed;
+
+			container[ModalResultField.P_EM_loss_, Position] = (CurrentState.DrivetrainInTorque - CurrentState.DrivetrainOutTorque) * avgDTSpeed - CurrentState.ElectricPowerToBattery;
+
+			container[ModalResultField.EM_Off_, Position] = CurrentState.EMTorque == null ? 1.SI<Scalar>() : 0.SI<Scalar>();
+
+			var losses = (CurrentState.EmTorqueMap ?? 0.SI<NewtonMeter>()) * avgEMSpeed - CurrentState.ElectricPowerToBattery;
+			var contribution = (losses - ContinuousPowerLoss) * simulationInterval;
 			container[ModalResultField.ElectricMotor_OvlBuffer_, Position] = VectoMath.Max(0, (ThermalBuffer + contribution) / OverloadBuffer);
 		}
 
 		protected override void DoCommitSimulationStep(Second time, Second simulationInterval)
 		{
-			var avgSpeed = (PreviousState.OutAngularVelocity + CurrentState.OutAngularVelocity) / 2;
-			var losses = (CurrentState.InTorque - CurrentState.OutTorque) * avgSpeed - (CurrentState.ElectricPowerToBattery);
+			var avgSpeed = (PreviousState.EMSpeed + CurrentState.EMSpeed) / 2;
+			var losses = CurrentState.EMTorque * avgSpeed - CurrentState.ElectricPowerToBattery;
 			ThermalBuffer += (losses - ContinuousPowerLoss) * simulationInterval;
 			if (ThermalBuffer < 0) {
 				ThermalBuffer = 0.SI<Joule>();
@@ -461,7 +402,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		public PerSecond ElectricMotorSpeed
 		{
-			get { return PreviousState.InAngularVelocity; }
+			get { return PreviousState.EMSpeed; }
 		}
 
 		public void Connect(IElectricSystem powersupply)
@@ -470,12 +411,23 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		}
 	}
 
-	public class ElectricMotorState : SimpleComponentState
+	public class ElectricMotorState // : SimpleComponentState
 	{
+		
+		public PerSecond DrivetrainSpeed;
+		public NewtonMeter DrivetrainInTorque;
+		public NewtonMeter DrivetrainOutTorque;
+		public NewtonMeter TransmissionTorqueLoss;
+
+		public PerSecond EMSpeed;
+		public NewtonMeter EMTorque;
+		public NewtonMeter EmTorqueMap;
+
 		public NewtonMeter DriveMax;
 		public NewtonMeter DragMax;
-		public Watt ElectricPowerToBattery;
-		//public Watt ElectricBrakePower = 0.SI<Watt>();
 		public NewtonMeter InertiaTorqueLoss;
+
+
+		public Watt ElectricPowerToBattery;
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
index 9ac3583b32..3ec161f248 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
@@ -563,7 +563,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				NextComponent.Request(absTime, Constants.SimulationSettings.TargetTimeInterval, inTorque,
 					inAngularVelocity, true); //NextComponent.Initialize(inTorque, inAngularVelocity);
 			
-			var fullLoad = -DataBus.ElectricMotorInfo(PowertrainPosition.BatteryElectricB2).MaxPowerDrive(inAngularVelocity);
+			var fullLoad = -DataBus.ElectricMotorInfo(PowertrainPosition.BatteryElectricE2).MaxPowerDrive(inAngularVelocity);
 
 			Gear = oldGear;
 			return new ResponseDryRun(this, response) {
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs
index 98469d1461..37182493bb 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs
@@ -53,9 +53,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			}
 			ModelData = dataBus.RunData.GearboxData;
 			PowerMap = dataBus.RunData.ElectricMachinesData
-				.FirstOrDefault(x => x.Item1 == PowertrainPosition.BatteryElectricB2)?.Item2.EfficiencyMap;
+				.FirstOrDefault(x => x.Item1 == PowertrainPosition.BatteryElectricE2)?.Item2.EfficiencyMap;
 			FullLoadCurve = dataBus.RunData.ElectricMachinesData
-				.FirstOrDefault(x => x.Item1 == PowertrainPosition.BatteryElectricB2)?.Item2.FullLoadCurve;
+				.FirstOrDefault(x => x.Item1 == PowertrainPosition.BatteryElectricE2)?.Item2.FullLoadCurve;
 			DataBus = dataBus;
 
 			EarlyShiftUp = true;
@@ -240,7 +240,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			var vDrop = DataBus.VehicleInfo.VehicleSpeed - estimatedVelocityPostShift;
 			var vehicleSpeedPostShift = DataBus.VehicleInfo.VehicleSpeed - vDrop * shiftStrategyParameters.VelocityDropFactor;
 
-			var totalTransmissionRatio = DataBus.ElectricMotorInfo(PowertrainPosition.BatteryElectricB2).ElectricMotorSpeed / DataBus.VehicleInfo.VehicleSpeed;
+			var totalTransmissionRatio = DataBus.ElectricMotorInfo(PowertrainPosition.BatteryElectricE2).ElectricMotorSpeed / DataBus.VehicleInfo.VehicleSpeed;
 			//var totalTransmissionRatio = outAngularVelocity / DataBus.VehicleSpeed;
 
 			var results = new List<Tuple<uint, double>>();
@@ -607,7 +607,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		{
 			return
 				(outAngularSpeed * ModelData.Gears[gear].Ratio).IsGreaterOrEqual(VectoMath.Min(ModelData.Gears[gear].MaxSpeed,
-					DataBus.ElectricMotorInfo(PowertrainPosition.BatteryElectricB2).MaxSpeed));
+					DataBus.ElectricMotorInfo(PowertrainPosition.BatteryElectricE2).MaxSpeed));
 		}
 
 		public void Disengage(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity) { }
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs
index 41e65280e5..6b21ee7b75 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs
@@ -64,44 +64,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			}
 			var model = container.RunData;
 			
-			if (container.PowertrainInfo.HasCombustionEngine) {
-				if (model?.GearboxData == null || model.AxleGearData == null) {
-					return;
-				}
-				MaxVehicleSpeed = model.EngineData.FullLoadCurves[0].N95hSpeed /
-					model.GearboxData.Gears[model.GearboxData.Gears.Keys.Max()].Ratio /
-					model.AxleGearData.AxleGear.Ratio /
-					(model.AngledriveData?.Angledrive.Ratio
-					?? 1.0) * model.VehicleData.DynamicTyreRadius * 0.995;
-			}
-
-			if (model.ElectricMachinesData.Count > 0) {
-				var positions = model.ElectricMachinesData.Select(x => x.Item1).ToArray();
-				if (positions.Length > 1) {
-					throw new VectoException("Multiple electrical machines are currently not supported");
-				}
-
-				var pos = positions.First();
-				if (pos.IsBatteryElectric()) {
-					var maxEMSpeed = model.ElectricMachinesData.Find(x => x.Item1 == pos).Item2.FullLoadCurve.MaxSpeed;
-					var ratio = 1.0;
-					if (pos == PowertrainPosition.BatteryElectricB3) {
-						ratio = model.AxleGearData.AxleGear.Ratio;
-					}
-
-					if (pos == PowertrainPosition.BatteryElectricB2) {
-						ratio = model.GearboxData.Gears[model.GearboxData.Gears.Keys.Max()].Ratio *
-								model.AxleGearData.AxleGear.Ratio *
-								(model.AngledriveData?.Angledrive.Ratio ?? 1.0);
-					}
-					MaxVehicleSpeed = maxEMSpeed / ratio * model.VehicleData.DynamicTyreRadius * 0.995;
-				}
-			}
+			
 		}
 
 
 		public IResponse Initialize(MeterPerSecond vehicleSpeed, Radian roadGradient)
 		{
+			SetMaxVehicleSpeed();
 			PreviousState = new VehicleState {
 				Distance = DataBus.DrivingCycleInfo.CycleStartDistance,
 				Velocity = vehicleSpeed,
@@ -116,6 +85,46 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			return NextComponent?.Initialize(PreviousState.VehicleTractionForce, vehicleSpeed);
 		}
 
+		protected virtual void SetMaxVehicleSpeed()
+		{
+			if (DataBus.PowertrainInfo.HasCombustionEngine) {
+				if (DataBus.GearboxInfo == null || DataBus.AxlegearInfo == null) {
+					throw new VectoException("Powertrain with combustion engine requires gearbox and axlegear!");
+					//return;
+				}
+				MaxVehicleSpeed = DataBus.EngineInfo.EngineN95hSpeed /
+					DataBus.GearboxInfo.GetGearData(DataBus.GearboxInfo.NumGears).Ratio /
+					DataBus.AxlegearInfo.Ratio /
+					(DataBus.AngledriveInfo?.Ratio ?? 1.0) * 
+					DataBus.WheelsInfo.DynamicTyreRadius * 0.995;
+			}
+
+			
+			if (DataBus.PowertrainInfo.HasElectricMotor) {
+				var positions = DataBus.PowertrainInfo.ElectricMotorPositions;
+				if (positions.Length > 1) {
+					throw new VectoException("Multiple electrical machines are currently not supported");
+				}
+
+				var pos = positions.First();
+				if (pos.IsBatteryElectric()) {
+					var maxEMSpeed = DataBus.ElectricMotorInfo(pos).MaxSpeed;
+
+					var ratio = 1.0;
+					if (pos == PowertrainPosition.BatteryElectricE3) {
+						ratio = DataBus.AxlegearInfo.Ratio;
+					}
+
+					if (pos == PowertrainPosition.BatteryElectricE2) {
+						ratio = DataBus.GearboxInfo.GetGearData(DataBus.GearboxInfo.NumGears).Ratio *
+								DataBus.AxlegearInfo.Ratio *
+								(DataBus.AngledriveInfo?.Ratio ?? 1.0);
+					}
+					MaxVehicleSpeed = maxEMSpeed / ratio * DataBus.WheelsInfo.DynamicTyreRadius * 0.995;
+				}
+			}
+		}
+
 		public IResponse Initialize(MeterPerSecond vehicleSpeed, Radian roadGradient, MeterPerSquareSecond startAcceleration)
 		{
 			//CurrentState.Velocity = vehicleSpeed + startAcceleration * Constants.SimulationSettings.TargetTimeInterval;
@@ -216,7 +225,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			return retVal;
 		}
 
-		public MeterPerSecond MaxVehicleSpeed { get; }
+		public MeterPerSecond MaxVehicleSpeed { get; set; }
 
 		public Newton AirDragResistance(MeterPerSecond previousVelocity, MeterPerSecond nextVelocity)
 		{
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/VelocitySpeedGearshiftPreprocessor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/VelocitySpeedGearshiftPreprocessor.cs
index 040cc1f1bb..45b4997ec4 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/VelocitySpeedGearshiftPreprocessor.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/VelocitySpeedGearshiftPreprocessor.cs
@@ -204,14 +204,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		protected override PerSecond GetMotorTargetSpeed(VectoRunData runData)
 		{
 			return 0.5 * runData.ElectricMachinesData
-				.FirstOrDefault(x => x.Item1 == PowertrainPosition.BatteryElectricB2)?.Item2.FullLoadCurve
+				.FirstOrDefault(x => x.Item1 == PowertrainPosition.BatteryElectricE2)?.Item2.FullLoadCurve
 				.MaxSpeed;
 		}
 
 		protected override PerSecond GetMaxMotorspeed(VectoRunData runData)
 		{
 			return runData.ElectricMachinesData
-                    .FirstOrDefault(x => x.Item1 == PowertrainPosition.BatteryElectricB2)?.Item2.FullLoadCurve
+                    .FirstOrDefault(x => x.Item1 == PowertrainPosition.BatteryElectricE2)?.Item2.FullLoadCurve
                     .MaxSpeed;
         }
 	}
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Wheels.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Wheels.cs
index 73e3312961..9e9b33c285 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Wheels.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Wheels.cs
@@ -42,7 +42,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 	public class Wheels : StatefulProviderComponent<Wheels.WheelsState, IFvOutPort, ITnInPort, ITnOutPort>, IWheels,
 		IFvOutPort, ITnInPort
 	{
-		private readonly Meter _dynamicWheelRadius;
 		private readonly KilogramSquareMeter _totalWheelsInertia;
 
 		public class WheelsState
@@ -55,14 +54,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		public Wheels(IVehicleContainer cockpit, Meter rdyn, KilogramSquareMeter totalWheelsInertia)
 			: base(cockpit)
 		{
-			_dynamicWheelRadius = rdyn;
+			DynamicTyreRadius = rdyn;
 			_totalWheelsInertia = totalWheelsInertia;
 		}
 
 		public IResponse Initialize(Newton force, MeterPerSecond velocity)
 		{
-			PreviousState.TorqueIn = force * _dynamicWheelRadius;
-			PreviousState.AngularVelocity = velocity / _dynamicWheelRadius;
+			PreviousState.TorqueIn = force * DynamicTyreRadius;
+			PreviousState.AngularVelocity = velocity / DynamicTyreRadius;
 			PreviousState.InertiaTorqueLoss = 0.SI<NewtonMeter>();
 
 			return NextComponent.Initialize(PreviousState.TorqueIn, PreviousState.AngularVelocity);
@@ -72,13 +71,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		{
 			Log.Debug("request: force: {0}, velocity: {1}", force, velocity);
 
-			CurrentState.AngularVelocity = velocity / _dynamicWheelRadius;
+			CurrentState.AngularVelocity = velocity / DynamicTyreRadius;
 			var avgAngularSpeed = (CurrentState.AngularVelocity + PreviousState.AngularVelocity) / 2.0;
 			CurrentState.InertiaTorqueLoss = avgAngularSpeed.IsEqual(0.SI<PerSecond>())
 				? 0.SI<NewtonMeter>()
 				: Formulas.InertiaPower(CurrentState.AngularVelocity, PreviousState.AngularVelocity, _totalWheelsInertia, dt) /
 				avgAngularSpeed; //(_totalWheelsInertia * avgAngularSpeed / dt).Cast<NewtonMeter>();
-			CurrentState.TorqueIn = force * _dynamicWheelRadius + CurrentState.InertiaTorqueLoss;
+			CurrentState.TorqueIn = force * DynamicTyreRadius + CurrentState.InertiaTorqueLoss;
 			var retVal = NextComponent.Request(absTime, dt, CurrentState.TorqueIn, CurrentState.AngularVelocity,
 				dryRun);
 
@@ -96,7 +95,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		public Kilogram ReducedMassWheels
 		{
-			get { return (_totalWheelsInertia / _dynamicWheelRadius / _dynamicWheelRadius).Cast<Kilogram>(); }
+			get { return (_totalWheelsInertia / DynamicTyreRadius / DynamicTyreRadius).Cast<Kilogram>(); }
 		}
+
+		public Meter DynamicTyreRadius { get; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
index d385888f12..32b11ca845 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
@@ -1279,11 +1279,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 				(DataBus.ElectricMotorInfo(pos) as ElectricMotor).DeRatingActive;
 
 			if (/*nextGear != DataBus.GearboxInfo.Gear && */TestPowertrain.ElectricMotorP2 != null) {
-				TestPowertrain.ElectricMotorP2.PreviousState.OutAngularVelocity =
+				TestPowertrain.ElectricMotorP2.PreviousState.EMSpeed =
 					DataBus.ElectricMotorInfo(PowertrainPosition.HybridP2).ElectricMotorSpeed;
 			}
 			if (/*nextGear != DataBus.GearboxInfo.Gear && */TestPowertrain.ElectricMotorP3 != null) {
-				TestPowertrain.ElectricMotorP3.PreviousState.OutAngularVelocity =
+				TestPowertrain.ElectricMotorP3.PreviousState.EMSpeed =
 					DataBus.ElectricMotorInfo(PowertrainPosition.HybridP3).ElectricMotorSpeed;
 			}
 
diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
index fad3bc204a..8659e62b7a 100644
--- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
@@ -126,11 +126,16 @@ namespace TUGraz.VectoCore.OutputData
 		bool HasCombustionEngine { get; }
 		WattSecond TotalElectricMotorWorkDrive(PowertrainPosition emPos);
 		WattSecond TotalElectricMotorWorkRecuperate(PowertrainPosition emPos);
+		WattSecond TotalElectricMotorMotWorkDrive(PowertrainPosition emPos);
+		WattSecond TotalElectricMotorMotWorkRecuperate(PowertrainPosition emPos);
 		PerSecond ElectricMotorAverageSpeed(PowertrainPosition emPos);
 		double ElectricMotorEfficiencyDrive(PowertrainPosition emPos);
 		double ElectricMotorEfficiencyGenerate(PowertrainPosition emPos);
+		double ElectricMotorMotEfficiencyDrive(PowertrainPosition emPos);
+		double ElectricMotorMotEfficiencyGenerate(PowertrainPosition emPos);
 		WattSecond ElectricMotorOffLosses(PowertrainPosition emPos);
 		WattSecond ElectricMotorLosses(PowertrainPosition emPos);
+		WattSecond ElectricMotorMotLosses(PowertrainPosition emPos);
 		WattSecond ElectricMotorTransmissionLosses(PowertrainPosition emPos);
         
 		double BatteryStartSoC();
diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
index 82aed0a061..22131e5438 100644
--- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
@@ -65,14 +65,32 @@ namespace TUGraz.VectoCore.OutputData
 		private Meter _distance;
 
 		private readonly ModalResultField[] _electricMotorColumns = new[] {
-			ModalResultField.n_electricMotor_, ModalResultField.T_electricMotor_,
-			ModalResultField.T_electricMotor_drive_max_, ModalResultField.T_electricMotor_gen_max_,
-			ModalResultField.P_electricMotor_in_, ModalResultField.P_electricMotor_out_,
-			ModalResultField.P_electricMotor_mech_, ModalResultField.P_electricMotor_el_,
-			ModalResultField.P_electricMotorLoss_, ModalResultField.P_electricMotorInertiaLoss_,
-			ModalResultField.P_electricMotorTransmissionLoss_,
-			/*ModalResultField.P_electricMotor_brake_,*/ ModalResultField.P_electricMotor_drive_max_,
-			ModalResultField.P_electricMotor_gen_max_, ModalResultField.ElectricMotor_OvlBuffer_
+			ModalResultField.EM_ratio_,
+			ModalResultField.P_EM_out_,
+			ModalResultField.P_EM_mech_,
+			ModalResultField.P_EM_in_,
+
+			ModalResultField.P_EM_TransmissionLoss_,
+			ModalResultField.P_EM_electricMotor_em_mech_,
+			ModalResultField.P_EM_electricMotorInertiaLoss_,
+			ModalResultField.P_EM_electricMotor_em_mech_map_,
+			ModalResultField.P_EM_electricMotorLoss_,
+			ModalResultField.P_EM_electricMotor_el_,
+
+			ModalResultField.P_EM_loss_,
+
+			ModalResultField.n_EM_electricMotor_, 
+			ModalResultField.T_EM_electricMotor_, 
+			ModalResultField.T_EM_electricMotor_map_,
+			
+			ModalResultField.T_EM_electricMotor_drive_max_, 
+			ModalResultField.T_EM_electricMotor_gen_max_,
+			
+			ModalResultField.P_EM_electricMotor_drive_max_,
+			ModalResultField.P_EM_electricMotor_gen_max_, 
+			
+			ModalResultField.ElectricMotor_OvlBuffer_,
+			ModalResultField.EM_Off_,
 		};
 
 		public static readonly IList<ModalResultField> FuelConsumptionSignals = new[] {
@@ -258,7 +276,21 @@ namespace TUGraz.VectoCore.OutputData
 
 			if (!_eEmDrive.ContainsKey(emPos)) {
 				_eEmDrive[emPos] = TimeIntegral<WattSecond>(
-					string.Format(ModalResultField.P_electricMotor_mech_.GetCaption(), emPos.GetName()), x => x < 0);
+					string.Format(ModalResultField.P_EM_mech_.GetCaption(), emPos.GetName()), x => x < 0);
+			}
+
+			return -_eEmDrive[emPos];
+		}
+
+		public WattSecond TotalElectricMotorMotWorkDrive(PowertrainPosition emPos)
+		{
+			if (!ElectricMotors.Contains(emPos)) {
+				return null;
+			}
+
+			if (!_eEmDrive.ContainsKey(emPos)) {
+				_eEmDrive[emPos] = TimeIntegral<WattSecond>(
+					string.Format(ModalResultField.P_EM_electricMotor_em_mech_.GetCaption(), emPos.GetName()), x => x < 0);
 			}
 
 			return -_eEmDrive[emPos];
@@ -272,12 +304,28 @@ namespace TUGraz.VectoCore.OutputData
 
 			if (!_eEmRecuperate.ContainsKey(emPos)) {
 				_eEmRecuperate[emPos] = TimeIntegral<WattSecond>(
-					string.Format(ModalResultField.P_electricMotor_mech_.GetCaption(), emPos.GetName()), x => x > 0); ;
+					string.Format(ModalResultField.P_EM_mech_.GetCaption(), emPos.GetName()), x => x > 0); ;
 			}
 
 			return _eEmRecuperate[emPos];
         }
 
+		public WattSecond TotalElectricMotorMotWorkRecuperate(PowertrainPosition emPos)
+		{
+			if (!ElectricMotors.Contains(emPos)) {
+				return null;
+			}
+
+			if (!_eEmRecuperate.ContainsKey(emPos)) {
+				_eEmRecuperate[emPos] = TimeIntegral<WattSecond>(
+					string.Format(ModalResultField.P_EM_electricMotor_em_mech_.GetCaption(), emPos.GetName()), x => x > 0);
+				;
+			}
+
+			return _eEmRecuperate[emPos];
+		}
+
+
 		public double ElectricMotorEfficiencyDrive(PowertrainPosition emPos)
 		{
 			if (!ElectricMotors.Contains(emPos)) {
@@ -287,11 +335,11 @@ namespace TUGraz.VectoCore.OutputData
 			var selected = Data.AsEnumerable().Cast<DataRow>().Select(r => {
 				var dt = r.Field<Second>(ModalResultField.simulationInterval.GetName());
 				return new {
-					P_em = r.Field<Watt>(string.Format(ModalResultField.P_electricMotor_el_.GetCaption(),
+					P_em = r.Field<Watt>(string.Format(ModalResultField.P_EM_electricMotor_el_.GetCaption(),
 						emPos.GetName())),
-					E_mech = r.Field<Watt>(string.Format(ModalResultField.P_electricMotor_mech_.GetCaption(),
+					E_mech = r.Field<Watt>(string.Format(ModalResultField.P_EM_mech_.GetCaption(),
 						emPos.GetName())) * dt,
-					E_el = r.Field<Watt>(string.Format(ModalResultField.P_electricMotor_el_.GetCaption(),
+					E_el = r.Field<Watt>(string.Format(ModalResultField.P_EM_electricMotor_el_.GetCaption(),
 						emPos.GetName())) * dt,
 				};
 			});
@@ -305,6 +353,34 @@ namespace TUGraz.VectoCore.OutputData
 			return eMech.Value() / eEl.Value();
 		}
 
+		public double ElectricMotorMotEfficiencyDrive(PowertrainPosition emPos)
+		{
+			if (!ElectricMotors.Contains(emPos)) {
+				return double.NaN;
+			}
+
+			var selected = Data.AsEnumerable().Cast<DataRow>().Select(r => {
+				var dt = r.Field<Second>(ModalResultField.simulationInterval.GetName());
+				return new {
+					P_em = r.Field<Watt>(string.Format(ModalResultField.P_EM_electricMotor_el_.GetCaption(),
+						emPos.GetName())),
+					E_mech = r.Field<Watt>(string.Format(ModalResultField.P_EM_electricMotor_em_mech_.GetCaption(),
+						emPos.GetName())) * dt,
+					E_el = r.Field<Watt>(string.Format(ModalResultField.P_EM_electricMotor_el_.GetCaption(),
+						emPos.GetName())) * dt,
+				};
+			});
+			var eMech = 0.SI<WattSecond>();
+			var eEl = 0.SI<WattSecond>();
+			foreach (var entry in selected.Where(x => x.P_em.IsSmaller(0))) {
+				eMech += entry.E_mech;
+				eEl += entry.E_el;
+			}
+
+			return eMech.Value() / eEl.Value();
+		}
+
+
 		public double ElectricMotorEfficiencyGenerate(PowertrainPosition emPos)
 		{
 			if (!ElectricMotors.Contains(emPos)) {
@@ -314,11 +390,11 @@ namespace TUGraz.VectoCore.OutputData
 				var dt = r.Field<Second>(ModalResultField.simulationInterval.GetName());
 				return new
 				{
-					P_em = r.Field<Watt>(string.Format(ModalResultField.P_electricMotor_el_.GetCaption(),
+					P_em = r.Field<Watt>(string.Format(ModalResultField.P_EM_electricMotor_el_.GetCaption(),
 						emPos.GetName())),
-					E_mech = r.Field<Watt>(string.Format(ModalResultField.P_electricMotor_mech_.GetCaption(),
+					E_mech = r.Field<Watt>(string.Format(ModalResultField.P_EM_mech_.GetCaption(),
 						emPos.GetName())) * dt,
-					E_el = r.Field<Watt>(string.Format(ModalResultField.P_electricMotor_el_.GetCaption(),
+					E_el = r.Field<Watt>(string.Format(ModalResultField.P_EM_electricMotor_el_.GetCaption(),
 						emPos.GetName())) * dt,
 				};
 			});
@@ -334,6 +410,33 @@ namespace TUGraz.VectoCore.OutputData
 			return eff;
         }
 
+		public double ElectricMotorMotEfficiencyGenerate(PowertrainPosition emPos)
+		{
+			if (!ElectricMotors.Contains(emPos)) {
+				return double.NaN;
+			}
+			var selected = Data.AsEnumerable().Cast<DataRow>().Select(r => {
+				var dt = r.Field<Second>(ModalResultField.simulationInterval.GetName());
+				return new {
+					P_em = r.Field<Watt>(string.Format(ModalResultField.P_EM_electricMotor_el_.GetCaption(),
+						emPos.GetName())),
+					E_mech = r.Field<Watt>(string.Format(ModalResultField.P_EM_electricMotor_em_mech_.GetCaption(),
+						emPos.GetName())) * dt,
+					E_el = r.Field<Watt>(string.Format(ModalResultField.P_EM_electricMotor_el_.GetCaption(),
+						emPos.GetName())) * dt,
+				};
+			});
+			var eMech = 0.SI<WattSecond>();
+			var eEl = 0.SI<WattSecond>();
+			foreach (var entry in selected.Where(x => x.P_em.IsGreater(0))) {
+				eMech += entry.E_mech;
+				eEl += entry.E_el;
+			}
+
+			var eff = eEl.Value() / eMech.Value();
+			return eff;
+		}
+
 		public WattSecond ElectricMotorOffLosses(PowertrainPosition emPos)
 		{
 			if (!ElectricMotors.Contains(emPos)) {
@@ -343,9 +446,9 @@ namespace TUGraz.VectoCore.OutputData
 				var dt = r.Field<Second>(ModalResultField.simulationInterval.GetName());
 				return new
 				{
-					P_em = r.Field<Watt>(string.Format(ModalResultField.P_electricMotor_el_.GetCaption(),
+					P_em = r.Field<Watt>(string.Format(ModalResultField.P_EM_electricMotor_el_.GetCaption(),
 						emPos.GetName())),
-					E_mech = r.Field<Watt>(string.Format(ModalResultField.P_electricMotorLoss_.GetCaption(),
+					E_mech = r.Field<Watt>(string.Format(ModalResultField.P_EM_electricMotorLoss_.GetCaption(),
 						emPos.GetName())) * dt,
 				};
 			});
@@ -356,7 +459,16 @@ namespace TUGraz.VectoCore.OutputData
 		{
 			return Data.AsEnumerable().Cast<DataRow>().Sum(r => {
 				var dt = r.Field<Second>(ModalResultField.simulationInterval.GetName());
-				return r.Field<Watt>(string.Format(ModalResultField.P_electricMotorLoss_.GetCaption(),
+				return r.Field<Watt>(string.Format(ModalResultField.P_EM_loss_.GetCaption(),
+					emPos.GetName())) * dt;
+			});
+		}
+
+		public WattSecond ElectricMotorMotLosses(PowertrainPosition emPos)
+		{
+			return Data.AsEnumerable().Cast<DataRow>().Sum(r => {
+				var dt = r.Field<Second>(ModalResultField.simulationInterval.GetName());
+				return r.Field<Watt>(string.Format(ModalResultField.P_EM_electricMotorLoss_.GetCaption(),
 					emPos.GetName())) * dt;
 			});
 		}
@@ -365,14 +477,14 @@ namespace TUGraz.VectoCore.OutputData
 		{
 			return Data.AsEnumerable().Cast<DataRow>().Sum(r => {
 				var dt = r.Field<Second>(ModalResultField.simulationInterval.GetName());
-				return r.Field<Watt>(string.Format(ModalResultField.P_electricMotorTransmissionLoss_.GetCaption(),
+				return r.Field<Watt>(string.Format(ModalResultField.P_EM_TransmissionLoss_.GetCaption(),
 					emPos.GetName())) * dt;
 			});
 		}
 
 		public PerSecond ElectricMotorAverageSpeed(PowertrainPosition emPos)
 		{
-			var integral = GetValues(x => x.Field<PerSecond>(string.Format(ModalResultField.n_electricMotor_.GetCaption(), emPos.GetName())).Value() *
+			var integral = GetValues(x => x.Field<PerSecond>(string.Format(ModalResultField.n_EM_electricMotor_.GetCaption(), emPos.GetName())).Value() *
 												x.Field<Second>(ModalResultField.simulationInterval.GetName()).Value()).Sum();
 			return (integral / Duration.Value()).SI<PerSecond>();
         }
diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
index 16f553f788..070f562848 100644
--- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
@@ -724,14 +724,25 @@ namespace TUGraz.VectoCore.OutputData
 
 			foreach (var em in runData.ElectricMachinesData) {
 				var emColumns = new List<Tuple<string, ConvertedSI>>() {
-					Tuple.Create(Fields.E_EM_DRIVE_FORMAT, modData.TotalElectricMotorWorkDrive(em.Item1).ConvertToKiloWattHour()), 
+					Tuple.Create(Fields.EM_AVG_SPEED_FORMAT, modData.ElectricMotorAverageSpeed(em.Item1).ConvertToRoundsPerMinute()),
+
+					Tuple.Create(Fields.E_EM_Mot_DRIVE_FORMAT, modData.TotalElectricMotorMotWorkDrive(em.Item1).ConvertToKiloWattHour()), 
+					Tuple.Create(Fields.E_EM_Mot_GENERATE_FORMAT, modData.TotalElectricMotorMotWorkRecuperate(em.Item1).ConvertToKiloWattHour()),
+
+					Tuple.Create(Fields.ETA_EM_Mot_DRIVE_FORMAT, new ConvertedSI(modData.ElectricMotorMotEfficiencyDrive(em.Item1), "")),
+					Tuple.Create(Fields.ETA_EM_Mot_GEN_FORMAT, new ConvertedSI(modData.ElectricMotorMotEfficiencyGenerate(em.Item1), "")),
+
+
+					Tuple.Create(Fields.E_EM_DRIVE_FORMAT, modData.TotalElectricMotorWorkDrive(em.Item1).ConvertToKiloWattHour()),
 					Tuple.Create(Fields.E_EM_GENERATE_FORMAT, modData.TotalElectricMotorWorkRecuperate(em.Item1).ConvertToKiloWattHour()),
-					Tuple.Create(Fields.E_EM_AVG_SPEED_FORMAT, modData.ElectricMotorAverageSpeed(em.Item1).ConvertToRoundsPerMinute()),
-					Tuple.Create(Fields.E_EM_ETA_DRIVE_FORMAT, new ConvertedSI(modData.ElectricMotorEfficiencyDrive(em.Item1), "")),
-					Tuple.Create(Fields.E_EM_ETA_GEN_FORMAT, new ConvertedSI(modData.ElectricMotorEfficiencyGenerate(em.Item1), "")),
+					
+					Tuple.Create(Fields.ETA_EM_DRIVE_FORMAT, new ConvertedSI(modData.ElectricMotorEfficiencyDrive(em.Item1), "")),
+					Tuple.Create(Fields.ETA_EM_GEN_FORMAT, new ConvertedSI(modData.ElectricMotorEfficiencyGenerate(em.Item1), "")),
+					
 					Tuple.Create(Fields.E_EM_OFF_Loss_Format, modData.ElectricMotorOffLosses(em.Item1).ConvertToKiloWattHour()),
-					Tuple.Create(Fields.E_EM_LOSS_FORMAT, modData.ElectricMotorLosses(em.Item1).ConvertToKiloWattHour()),
-					Tuple.Create(Fields.E_EM_LOSS_TRANSM_FORMAT, modData.ElectricMotorTransmissionLosses(em.Item1).ConvertToKiloWattHour())
+					Tuple.Create(Fields.E_EM_LOSS_TRANSM_FORMAT, modData.ElectricMotorTransmissionLosses(em.Item1).ConvertToKiloWattHour()),
+					Tuple.Create(Fields.E_EM_Mot_LOSS_FORMAT, modData.ElectricMotorLosses(em.Item1).ConvertToKiloWattHour()),
+					Tuple.Create(Fields.E_EM_LOSS_FORMAT, modData.ElectricMotorMotLosses(em.Item1).ConvertToKiloWattHour()),
 				};
 				emColumns.Reverse();
 				foreach (var entry in emColumns) {
@@ -1311,12 +1322,20 @@ namespace TUGraz.VectoCore.OutputData
 
 			public const string E_EM_DRIVE_FORMAT = "E_EM_{0}_drive [kWh]";
 			public const string E_EM_GENERATE_FORMAT = "E_EM_{0}_gen [kWh]";
-			public const string E_EM_AVG_SPEED_FORMAT = "n_EM_{0}_avg [rpm]";
-			public const string E_EM_ETA_DRIVE_FORMAT = "η_EM_{0}_drive";
-			public const string E_EM_ETA_GEN_FORMAT = "η_EM_{0}_gen";
+			public const string ETA_EM_DRIVE_FORMAT = "η_EM_{0}_drive";
+			public const string ETA_EM_GEN_FORMAT = "η_EM_{0}_gen";
+
+			public const string E_EM_Mot_DRIVE_FORMAT = "E_EM_{0}-em_drive [kWh]";
+			public const string E_EM_Mot_GENERATE_FORMAT = "E_EM_{0}-em_gen [kWh]";
+			public const string ETA_EM_Mot_DRIVE_FORMAT = "η_EM_{0}-em_drive";
+			public const string ETA_EM_Mot_GEN_FORMAT = "η_EM_{0}-em_gen";
+
+			public const string EM_AVG_SPEED_FORMAT = "n_EM_{0}-em_avg [rpm]";
+
 			public const string E_EM_OFF_Loss_Format = "E_EM_{0}_off_loss [kWh]";
-			public const string E_EM_LOSS_FORMAT = "E_EM_{0}_loss [kWh]";
 			public const string E_EM_LOSS_TRANSM_FORMAT = "E_EM_{0}_transm_loss [kWh]";
+			public const string E_EM_Mot_LOSS_FORMAT = "E_EM_{0}-em_loss [kWh]";
+			public const string E_EM_LOSS_FORMAT = "E_EM_{0}_loss [kWh]";
 
 
 			public const string REESS_StartSoC = "REESS Start SoC [%]";
diff --git a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
index 1ced8a5152..a9c6fab0bb 100644
--- a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
+++ b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
@@ -64,7 +64,7 @@ namespace TUGraz.VectoCore.Tests.FileIO
 			Assert.AreEqual("401.07", fld.Rows[0][ElectricFullLoadCurveReader.Fields.DrivingTorque]);
 			Assert.AreEqual("-401.07", fld.Rows[0][ElectricFullLoadCurveReader.Fields.GenerationTorque]);
 
-			var fldMap = ElectricFullLoadCurveReader.Create(fld, 1, 1, 1);
+			var fldMap = ElectricFullLoadCurveReader.Create(fld, 1);
 			Assert.AreEqual(-401.07, fldMap.FullLoadDriveTorque(0.RPMtoRad()).Value());
 			Assert.AreEqual(401.07, fldMap.FullGenerationTorque(0.RPMtoRad()).Value());
 
@@ -73,7 +73,7 @@ namespace TUGraz.VectoCore.Tests.FileIO
 			Assert.AreEqual("-800", pwr.Rows[0][ElectricMotorMapReader.Fields.Torque]);
 			Assert.AreEqual("9.8449", pwr.Rows[0][ElectricMotorMapReader.Fields.PowerElectrical]);
 
-			var pwrMap = ElectricMotorMapReader.Create(pwr, 1, 1, 1);
+			var pwrMap = ElectricMotorMapReader.Create(pwr, 1);
 			Assert.AreEqual(-10171.0, pwrMap.LookupElectricPower(-0.RPMtoRad(), -800.SI<NewtonMeter>()).ElectricalPower.Value());
 
 			Assert.AreEqual(-20430.186, pwrMap.LookupElectricPower(120.RPMtoRad(), -800.SI<NewtonMeter>()).ElectricalPower.Value(), 1e-3);
@@ -93,22 +93,22 @@ namespace TUGraz.VectoCore.Tests.FileIO
 			Assert.AreEqual("401.07", fld.Rows[0][ElectricFullLoadCurveReader.Fields.DrivingTorque]);
 			Assert.AreEqual("-401.07", fld.Rows[0][ElectricFullLoadCurveReader.Fields.GenerationTorque]);
 
-			var fldMap = ElectricFullLoadCurveReader.Create(fld, 22.6, 2, 0.97);
-			Assert.AreEqual(-17584.51308 , fldMap.FullLoadDriveTorque(0.RPMtoRad()).Value(), 1e-3);
-			Assert.AreEqual(18689.03505, fldMap.FullGenerationTorque(0.RPMtoRad()).Value(), 1e-3);
+			var fldMap = ElectricFullLoadCurveReader.Create(fld, 2);
+			Assert.AreEqual(-802.14 , fldMap.FullLoadDriveTorque(0.RPMtoRad()).Value(), 1e-3);
+			Assert.AreEqual(802.14, fldMap.FullGenerationTorque(0.RPMtoRad()).Value(), 1e-3);
 
-			Assert.AreEqual(-17584.51308, fldMap.FullLoadDriveTorque(50.RPMtoRad()).Value(), 1e-3);
-			Assert.AreEqual(18689.03505, fldMap.FullGenerationTorque(50.RPMtoRad()).Value(), 1e-3);
+			Assert.AreEqual(-802.14, fldMap.FullLoadDriveTorque(50.RPMtoRad()).Value(), 1e-3);
+			Assert.AreEqual(802.14, fldMap.FullGenerationTorque(50.RPMtoRad()).Value(), 1e-3);
 
             var pwr = inputProvider.EfficiencyMap;
 			Assert.AreEqual("0", pwr.Rows[0][ElectricMotorMapReader.Fields.MotorSpeed]);
 			Assert.AreEqual("-800", pwr.Rows[0][ElectricMotorMapReader.Fields.Torque]);
 			Assert.AreEqual("9.8449", pwr.Rows[0][ElectricMotorMapReader.Fields.PowerElectrical]);
 
-			var pwrMap = ElectricMotorMapReader.Create(pwr, 22.6, 2, 0.97);
-			Assert.AreEqual(-146.469, pwrMap.LookupElectricPower(-0.RPMtoRad(), -800.SI<NewtonMeter>()).ElectricalPower.Value(), 1e-3);
+			var pwrMap = ElectricMotorMapReader.Create(pwr, 2);
+			Assert.AreEqual(-5816.6, pwrMap.LookupElectricPower(-0.RPMtoRad(), -800.SI<NewtonMeter>()).ElectricalPower.Value(), 1e-3);
 
-			Assert.AreEqual(-20773.997, pwrMap.LookupElectricPower(120.RPMtoRad(), -800.SI<NewtonMeter>()).ElectricalPower.Value(), 1e-3);
+			Assert.AreEqual(-16170.5166, pwrMap.LookupElectricPower(120.RPMtoRad(), -800.SI<NewtonMeter>()).ElectricalPower.Value(), 1e-3);
 
         }
 
diff --git a/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs b/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs
index 5bae324576..624940ba9d 100644
--- a/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs
@@ -110,7 +110,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 			const bool largeMotor = true;
 
 			var modFilename = string.Format("SimpleBatteryElectric-B4_constant_{0}-{1}_{2}_{3}", vmax, initialSoC, slope, pAuxEl);
-			const PowertrainPosition pos = PowertrainPosition.BatteryElectricB4;
+			const PowertrainPosition pos = PowertrainPosition.BatteryElectricE4;
 			var job = CreateEngineeringRun(
 				cycle, modFilename, initialSoC, pos, 2, 22.6, largeMotor: true, pAuxEl: pAuxEl);
 			var run = job.Runs.First().Run;
@@ -146,7 +146,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 			const bool largeMotor = true;
 
 			var modFilename = string.Format("SimpleBatteryElectric-B4_acc_{0}-{1}_{2}", vmax, initialSoC, slope);
-			const PowertrainPosition pos = PowertrainPosition.BatteryElectricB4;
+			const PowertrainPosition pos = PowertrainPosition.BatteryElectricE4;
 			var job = CreateEngineeringRun(
 				cycle, modFilename, initialSoC, pos, 2, 22.6, largeMotor: true);
 			var run = job.Runs.First().Run;
@@ -182,7 +182,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 			const bool largeMotor = true;
 
 			var modFilename = string.Format("SimpleParallelHybrid-B4_cycle_{0}-{1}_{2}_{3}", declarationMission, initialSoC, payload, pAuxEl);
-			const PowertrainPosition pos = PowertrainPosition.BatteryElectricB4;
+			const PowertrainPosition pos = PowertrainPosition.BatteryElectricE4;
 			var job = CreateEngineeringRun(
 				cycle, modFilename, initialSoC, pos, 2, 22.6, largeMotor: true);
 			var run = job.Runs.First().Run;
@@ -267,7 +267,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 			const bool largeMotor = true;
 
 			var modFilename = string.Format("SimpleBatteryElectric-B3_constant_{0}-{1}_{2}_{3}", vmax, initialSoC, slope, pAuxEl);
-			const PowertrainPosition pos = PowertrainPosition.BatteryElectricB3;
+			const PowertrainPosition pos = PowertrainPosition.BatteryElectricE3;
 			var job = CreateEngineeringRun(
 				cycle, modFilename, initialSoC, pos, 2, 22.6, largeMotor: true, pAuxEl: pAuxEl);
 			var run = job.Runs.First().Run;
@@ -303,7 +303,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 			const bool largeMotor = true;
 
 			var modFilename = string.Format("SimpleBatteryElectric-B3_acc_{0}-{1}_{2}", vmax, initialSoC, slope);
-			const PowertrainPosition pos = PowertrainPosition.BatteryElectricB3;
+			const PowertrainPosition pos = PowertrainPosition.BatteryElectricE3;
 			var job = CreateEngineeringRun(
 				cycle, modFilename, initialSoC, pos, 2, 22.6, largeMotor: true);
 			var run = job.Runs.First().Run;
@@ -339,7 +339,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 			const bool largeMotor = true;
 
 			var modFilename = string.Format("SimpleParallelHybrid-B3_cycle_{0}-{1}_{2}_{3}", declarationMission, initialSoC, payload, pAuxEl);
-			const PowertrainPosition pos = PowertrainPosition.BatteryElectricB3;
+			const PowertrainPosition pos = PowertrainPosition.BatteryElectricE3;
 			var job = CreateEngineeringRun(
 				cycle, modFilename, initialSoC, pos, 2, 22.6, largeMotor: true);
 
@@ -393,7 +393,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 			const bool largeMotor = true;
 
 			var modFilename = string.Format("SimpleBatteryElectric-B2_constant_{0}-{1}_{2}_{3}", vmax, initialSoC, slope, pAuxEl);
-			const PowertrainPosition pos = PowertrainPosition.BatteryElectricB2;
+			const PowertrainPosition pos = PowertrainPosition.BatteryElectricE2;
 			var job = CreateEngineeringRun(
 				cycle, modFilename, initialSoC, pos, 2, 2, largeMotor: true, pAuxEl: pAuxEl);
 			var run = job.Runs.First().Run;
@@ -431,7 +431,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 			const bool largeMotor = true;
 
 			var modFilename = string.Format("SimpleBatteryElectric-B2_stop_{0}-{1}_{2}", vmax, initialSoC, slope);
-			const PowertrainPosition pos = PowertrainPosition.BatteryElectricB2;
+			const PowertrainPosition pos = PowertrainPosition.BatteryElectricE2;
 			var job = CreateEngineeringRun(
 				cycle, modFilename, initialSoC, pos, 2, 2, largeMotor: true);
 			var run = job.Runs.First().Run;
@@ -461,7 +461,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 			const bool largeMotor = true;
 
 			var modFilename = string.Format("SimpleBatteryElectric-B2_acc_{0}-{1}_{2}", vmax, initialSoC, slope);
-			const PowertrainPosition pos = PowertrainPosition.BatteryElectricB2;
+			const PowertrainPosition pos = PowertrainPosition.BatteryElectricE2;
 			var job = CreateEngineeringRun(
 				cycle, modFilename, initialSoC, pos, 2, 2, largeMotor: true);
 			var run = job.Runs.First().Run;
@@ -497,7 +497,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 			const bool largeMotor = true;
 
 			var modFilename = string.Format("SimpleParallelHybrid-B2_cycle_{0}-{1}_{2}_{3}", declarationMission, initialSoC, payload, pAuxEl);
-			const PowertrainPosition pos = PowertrainPosition.BatteryElectricB2;
+			const PowertrainPosition pos = PowertrainPosition.BatteryElectricE2;
 			var job = CreateEngineeringRun(
 				cycle, modFilename, initialSoC, pos, 2, 2, largeMotor: true);
 			var run = job.Runs.First().Run;
@@ -603,7 +603,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 			var driverData = CreateDriverData(AccelerationFile, true);
 
 			var electricMotorData =
-				MockSimulationDataFactory.CreateElectricMotorData(MotorFile, count, pos, ratio / (pos == PowertrainPosition.BatteryElectricB3 ? 2.59 : 1.0), 0.97);
+				MockSimulationDataFactory.CreateElectricMotorData(MotorFile, count, pos, ratio / (pos == PowertrainPosition.BatteryElectricE3 ? 2.59 : 1.0), 0.97);
 
 			var batteryData = MockSimulationDataFactory.CreateBatteryData(BatFile, initialBatCharge);
 			
@@ -636,11 +636,11 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 			{
 				WriteModalResults = true,
 			};
-			if (pos == PowertrainPosition.BatteryElectricB3) {
+			if (pos == PowertrainPosition.BatteryElectricE3) {
 				runData.AxleGearData = axleGearData;
 			}
 
-			if (pos == PowertrainPosition.BatteryElectricB2) {
+			if (pos == PowertrainPosition.BatteryElectricE2) {
 				runData.AxleGearData = axleGearData;
 				runData.GearboxData = gearboxData;
 			}
@@ -682,22 +682,22 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 				case PowertrainPosition.HybridP3: 
 				case PowertrainPosition.HybridP4: 
 					throw new VectoException("testcase does not support parallel powertrain configurations");
-				case PowertrainPosition.BatteryElectricB4:
+				case PowertrainPosition.BatteryElectricE4:
 					powertrain.AddComponent(
-						GetElectricMachine(PowertrainPosition.BatteryElectricB4, runData.ElectricMachinesData, container, es, ctl));
+						GetElectricMachine(PowertrainPosition.BatteryElectricE4, runData.ElectricMachinesData, container, es, ctl));
 					new DummyGearboxInfo(container);
 					//new MockEngineInfo(container);
 					new ATClutchInfo(container);
 					break;
-				case PowertrainPosition.BatteryElectricB3:
+				case PowertrainPosition.BatteryElectricE3:
 					powertrain.AddComponent(new AxleGear(container, runData.AxleGearData))
 							.AddComponent(
-								GetElectricMachine(PowertrainPosition.BatteryElectricB3, runData.ElectricMachinesData, container, es, ctl));
+								GetElectricMachine(PowertrainPosition.BatteryElectricE3, runData.ElectricMachinesData, container, es, ctl));
 					new DummyGearboxInfo(container);
 					//new MockEngineInfo(container);
 					new ATClutchInfo(container);
 					break;
-				case PowertrainPosition.BatteryElectricB2:
+				case PowertrainPosition.BatteryElectricE2:
 					var strategy = new PEVAMTShiftStrategy(container);
 
 					foreach (var entry in gearboxData.Gears) {
@@ -708,7 +708,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 					powertrain.AddComponent(new AxleGear(container, runData.AxleGearData))
 						.AddComponent(new PEVGearbox(container, strategy))
 						.AddComponent(
-							GetElectricMachine(PowertrainPosition.BatteryElectricB2, runData.ElectricMachinesData, container, es, ctl));
+							GetElectricMachine(PowertrainPosition.BatteryElectricE2, runData.ElectricMachinesData, container, es, ctl));
 					new ATClutchInfo(container);
 					break;
 					//throw new VectoException("Battery Electric configuration B2 currently not supported");
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ElectricMotorEfficienyMapTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ElectricMotorEfficienyMapTest.cs
index d23702ed40..b8b8a666a4 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ElectricMotorEfficienyMapTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ElectricMotorEfficienyMapTest.cs
@@ -26,10 +26,10 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData {
 				JSONInputDataFactory.ReadElectricMotorData(@"TestData\Hybrids\ElectricMotor\GenericEMotor.vem", false);
 
 			var fld = inputProvider.FullLoadCurve;
-			var fldMap = ElectricFullLoadCurveReader.Create(fld, 1.0, 1, 1.0);
+			var fldMap = ElectricFullLoadCurveReader.Create(fld, 1);
 
 			var pwr = inputProvider.EfficiencyMap;
-			var pwrMap = ElectricMotorMapReader.Create(pwr, 1.0, 1, 1.0);
+			var pwrMap = ElectricMotorMapReader.Create(pwr, 1);
 
 			var maxEmPwr = batPwr < 0
 				? fldMap.FullLoadDriveTorque(emSpeed.RPMtoRad())
@@ -51,10 +51,10 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData {
 				JSONInputDataFactory.ReadElectricMotorData(@"TestData\Hybrids\ElectricMotor\GenericEMotor.vem", false);
 
 			var fld = inputProvider.FullLoadCurve;
-			var fldMap = ElectricFullLoadCurveReader.Create(fld, 1.0, 1, 1.0);
+			var fldMap = ElectricFullLoadCurveReader.Create(fld, 1);
 
 			var pwr = inputProvider.EfficiencyMap;
-			var pwrMap = ElectricMotorMapReader.Create(pwr, 1.0, 1, 1.0);
+			var pwrMap = ElectricMotorMapReader.Create(pwr, 1);
 
 			var maxEmPwr = batPwr < 0
 				? fldMap.FullLoadDriveTorque(emSpeed.RPMtoRad())
diff --git a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
index 23b5b02884..c1d923b5eb 100644
--- a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
@@ -281,6 +281,16 @@ namespace TUGraz.VectoCore.Tests.Utils
 			throw new NotImplementedException();
 		}
 
+		public WattSecond TotalElectricMotorMotWorkDrive(PowertrainPosition emPos)
+		{
+			throw new NotImplementedException();
+		}
+
+		public WattSecond TotalElectricMotorMotWorkRecuperate(PowertrainPosition emPos)
+		{
+			throw new NotImplementedException();
+		}
+
 		public PerSecond ElectricMotorAverageSpeed(PowertrainPosition emPos)
 		{
 			throw new NotImplementedException();
@@ -296,6 +306,16 @@ namespace TUGraz.VectoCore.Tests.Utils
 			throw new NotImplementedException();
 		}
 
+		public double ElectricMotorMotEfficiencyDrive(PowertrainPosition emPos)
+		{
+			throw new NotImplementedException();
+		}
+
+		public double ElectricMotorMotEfficiencyGenerate(PowertrainPosition emPos)
+		{
+			throw new NotImplementedException();
+		}
+
 		public WattSecond ElectricMotorOffLosses(PowertrainPosition emPos)
 		{
 			throw new NotImplementedException();
@@ -306,6 +326,11 @@ namespace TUGraz.VectoCore.Tests.Utils
 			throw new NotImplementedException();
 		}
 
+		public WattSecond ElectricMotorMotLosses(PowertrainPosition emPos)
+		{
+			throw new NotImplementedException();
+		}
+
 		public WattSecond ElectricMotorTransmissionLosses(PowertrainPosition emPos)
 		{
 			throw new NotImplementedException();
diff --git a/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs b/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs
index 27db481980..00b278ec31 100644
--- a/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs
@@ -161,6 +161,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 
 		public IHybridControllerInfo HybridControllerInfo { get; }
 		public IHybridControllerCtl HybridControllerCtl { get; }
+		public IAngledriveInfo AngledriveInfo { get; }
 
 		public Watt GearboxLoss()
 		{
@@ -350,8 +351,10 @@ namespace TUGraz.VectoCore.Tests.Utils
 		}
 
 		public Tuple<PerSecond, NewtonMeter> CurrentAxleDemand { get; }
+		public double Ratio { get; }
 
 		public Kilogram ReducedMassWheels { get; set; }
+		public Meter DynamicTyreRadius { get; }
 
 		#region Implementation of IEngineControl
 
-- 
GitLab