From 355dba598af028dd3febd5a83a7616a949d4dcba Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <quaritsch@ivt.tugraz.at>
Date: Thu, 23 Feb 2023 14:24:57 +0100
Subject: [PATCH] read em torque limits for each voltage level

---
 .../InputData/FileIO/JSON/JSONVehicleData.cs  | 41 +++++++++++++++++--
 .../Models/Simulation/Impl/VectoRun.cs        |  2 -
 .../FileIO/JsonReadHybridTest.cs              |  2 +-
 .../HybridStrategyDataAdapterTest.cs          | 11 -----
 4 files changed, 38 insertions(+), 18 deletions(-)

diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
index 3573f8d5bc..abd3efa2f9 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
@@ -211,10 +211,25 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		//public override Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits =>
 		//	throw new NotImplementedException();
-		public override IDictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits =>
-			Body["EMTorqueLimits"] == null
-				? null
-				: new Dictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>>() {
+		public override IDictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits
+		{
+			get
+			{
+				if (Body["EMTorqueLimits"] == null) {
+					return null;
+				}
+
+				if (Body["EMTorqueLimits"].HasValues) {
+					var entries = Body["EMTorqueLimits"].Select(x => Tuple.Create((x as JProperty)?.Name.ToDouble().SI<Volt>(),
+						ReadTableData(
+							Path.Combine(BasePath, (x as JProperty)?.Value.Value<string>() ?? ""),
+							"ElectricMotorTorqueLimits")
+					)).ToList();
+					return new Dictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>>()
+						{{ GetElectricMachines().Entries.First().Position, entries }};
+				}
+
+				return new Dictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>>() {
 					{
 						GetElectricMachines().Entries.First().Position,
 						new List<Tuple<Volt, TableData>>() {
@@ -224,6 +239,24 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 						}
 					}
 				};
+			}
+		}
+		//=>
+			//Body["EMTorqueLimits"] == null
+			//	? null
+			//	: Body["EMTorqueLimits"].HasValues ?
+   //         Body["EMTorqueLimits"].Select(x => Tuple.Create(x.GetEx<double>("Voltage").SI<Volt>(), ReadTableData(Path.Combine(BasePath, x.GetEx<string>("EMTorqueLimits")),
+			//	"ElectricMotorTorqueLimits")))) 
+			//	: new Dictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>>() {
+			//		{
+			//			GetElectricMachines().Entries.First().Position,
+			//			new List<Tuple<Volt, TableData>>() {
+			//				Tuple.Create((Volt)null, ReadTableData(
+			//					Path.Combine(BasePath, Body.GetEx<string>("EMTorqueLimits")),
+			//					"ElectricMotorTorqueLimits"))
+			//			}
+			//		}
+			//	};
 
         public override TableData BoostingLimitations =>
 			Body["MaxPropulsionTorque"] == null
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs
index 82ab4d36c0..792c0135f3 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs
@@ -186,8 +186,6 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				Container.RunStatus = Status.Success;
 			}
 
-
-
 			var runAgain = _followUpCreator?.RunAgain((data) => {
 					
 					Container.ModalData.Reset(true);
diff --git a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
index 1474f3cf3d..5b71148cb1 100644
--- a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
+++ b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
@@ -105,7 +105,7 @@ namespace TUGraz.VectoCore.Tests.FileIO
 			// var pwrLow = inputProvider.VoltageLevels.First().EfficiencyMap;
 			Assert.AreEqual("0", pwrLow.Rows[0][ElectricMotorMapReader.Fields.MotorSpeed]);
 			Assert.AreEqual("-800", pwrLow.Rows[0][ElectricMotorMapReader.Fields.Torque]);
-			Assert.AreEqual("9.8449", pwrLow.Rows[0][ElectricMotorMapReader.Fields.PowerElectrical]);
+			Assert.AreEqual("9844.9", pwrLow.Rows[0][ElectricMotorMapReader.Fields.PowerElectrical]);
 
 			var pwrMapLow = ElectricMotorMapReader.Create(pwrLow, 1);
 			Assert.AreEqual(-0, pwrMapLow.LookupElectricPower(-0.RPMtoRad(), -800.SI<NewtonMeter>()).ElectricalPower.Value(), 1e-3);
diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/HybridStrategyDataAdapterTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/HybridStrategyDataAdapterTest.cs
index 40a14f5808..7e368295fb 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/HybridStrategyDataAdapterTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/HybridStrategyDataAdapterTest.cs
@@ -59,13 +59,6 @@ public class HybridStrategyDataAdapterTest
 			}
 		};
 
-
-
-
-
-
-
-
 		HybridStrategyParameters parameters = null;
 		try {
 			parameters = dataAdapter.CreateHybridStrategyParameters(batterySystemData, null, mass,
@@ -77,10 +70,6 @@ public class HybridStrategyDataAdapterTest
 		Assert.IsTrue(parameters!.TargetSoC.IsEqual(expected_target_soc));
 		Assert.IsTrue(parameters.MinSoC.IsEqual(expected_min_soc));
 
-
-
-
-
 	}
 
 	[TestCase(1000.00000000000000 	,10.00000000000000	,1000.00000000000000	,1.00000000000000	,0.61496863314570	,0.78861497592102	,0.70714213564177	,1.00000000000000	,false)]
-- 
GitLab