From 77e6a76b48b2afa8b7c5b73a3d660dbb74b50b82 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Fri, 25 Jun 2021 08:05:25 +0200
Subject: [PATCH] adding testcase and model for electric motor with 2 voltage
 levels

---
 VECTO/GUI/ElectricMotorForm.vb                |    8 +
 .../Data/ElectricMotor/EfficiencyMap.cs       |    2 +-
 .../Data/ElectricMotor/ElectricMotorData.cs   |   15 +-
 .../SimulationComponent/Impl/ElectricMotor.cs |    6 +-
 .../Strategies/HybridStrategy.cs              |    2 +-
 .../FileIO/JsonReadHybridTest.cs              |   90 +-
 .../Integration/Hybrid/ParallelHybridTest.cs  |    2 +-
 .../Hybrids/ElectricMotor/GenericDragHV.vemd  |    3 +
 .../ElectricMotor/GenericEMotorHV.vemp        |   74 +
 .../Hybrids/ElectricMotor/GenericEMotorV2.vem |   22 +
 .../Hybrids/ElectricMotor/GenericEMotorV3.vem |   33 +
 .../Hybrids/ElectricMotor/GenericMapHV.vemo   | 2016 +++++++++++++++++
 VectoCore/VectoCoreTest/VectoCoreTest.csproj  |   12 +
 13 files changed, 2273 insertions(+), 12 deletions(-)
 create mode 100644 VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericDragHV.vemd
 create mode 100644 VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotorHV.vemp
 create mode 100644 VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotorV2.vem
 create mode 100644 VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotorV3.vem
 create mode 100644 VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericMapHV.vemo

diff --git a/VECTO/GUI/ElectricMotorForm.vb b/VECTO/GUI/ElectricMotorForm.vb
index 4873dd8eb5..a61e3edd79 100644
--- a/VECTO/GUI/ElectricMotorForm.vb
+++ b/VECTO/GUI/ElectricMotorForm.vb
@@ -186,12 +186,14 @@ Public Class ElectricMotorForm
         tbDragTorqueHi.Text = GetRelativePath(voltageLevelHigh.DragCurve.Source, basePath)
         tbMaxTorqueHi.Text = GetRelativePath(voltageLevelHigh.FullLoadCurve.Source, basePath)
         tbMapHi.Text = GetRelativePath(voltageLevelHigh.EfficiencyMap.Source, basePath)
+        tbVoltageHi.Text = voltageLevelHigh.VoltageLevel.Value().ToGUIFormat()
 
         Dim voltageLevelLow As IElectricMotorVoltageLevel = engine.VoltageLevels.MinBy(function(level) level.VoltageLevel.Value())
 
         tbDragTorqueLow.Text = GetRelativePath(voltageLevelLow.DragCurve.Source, basePath)
         tbMaxTorqueLow.Text = GetRelativePath(voltageLevelLow.FullLoadCurve.Source, basePath)
         tbMapLow.Text = GetRelativePath(voltageLevelLow.EfficiencyMap.Source, basePath)
+        tbVoltageLow.Text = voltageLevelLow.VoltageLevel.Value().ToGUIFormat()
         
         DeclInit()
 
@@ -234,9 +236,15 @@ Public Class ElectricMotorForm
         em.ContTq = tbContTq.Text.ToDouble(0)
         em.OverloadRecoveryFactor = tbOverloadRecoveryFactor.Text.ToDouble(0)
 
+        em.PathMaxTorqueLow = tbMaxTorqueLow.Text
+        em.PathDragLow = tbDragTorqueLow.Text
+        em.PathMapLow = tbMapLow.Text
+        em.VoltageLevelLow = tbVoltageLow.Text.ToDouble(0)
+
         em.PathMaxTorqueHi = tbMaxTorqueHi.Text
         em.PathDragHi = tbDragTorqueHi.Text
         em.PathMapHi = tbMapHi.Text
+        em.VoltageLevelHigh = tbVoltageHi.Text.ToDouble(0)
 
         If Not em.SaveFile Then
             MsgBox("Cannot save to " & file, MsgBoxStyle.Critical)
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/EfficiencyMap.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/EfficiencyMap.cs
index 92fb6d5839..6499786445 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/EfficiencyMap.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/EfficiencyMap.cs
@@ -173,7 +173,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricMotor
 			return null;
 		}
 
-		protected PerSecond MaxSpeed
+		public PerSecond MaxSpeed
 		{
 			get { return _maxSpeed ?? (_maxSpeed = _efficiencyMapMech2El.Entries.Select(x => x.Y).Max().SI<PerSecond>()); }
 		}
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs
index b2429dfc56..56c6427664 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs
@@ -5,6 +5,7 @@ using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricMotor;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
 using TUGraz.VectoCore.Models.SimulationComponent.Impl;
+using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 {
@@ -54,7 +55,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 			get
 			{
 				return _maxSpeed ?? (_maxSpeed = VoltageLevels
-					.Min(v => v.FullLoadCurve.FullLoadEntries.MaxBy(x => x.MotorSpeed).MotorSpeed));
+					.Min(v => v.EfficiencyMap.MaxSpeed));
 			}
 		}
 
@@ -83,12 +84,20 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 			var retVal = VectoMath.Interpolate(tuple.Item1.Voltage, tuple.Item2.Voltage,
 				r1, r2, voltage);
 			var elPwr = LookupElectricPower(voltage, avgSpeed, retVal, true);
-			if (elPwr.ElectricalPower != null && electricPower.IsEqual(elPwr.ElectricalPower)) {
+			if (elPwr.ElectricalPower != null && electricPower.IsEqual(elPwr.ElectricalPower, 1e-3.SI<Watt>())) {
 				return retVal;
 			}
 
+			var searchResult = SearchAlgorithm.Search(retVal, electricPower - elPwr.ElectricalPower,
+				interval: 10.SI<NewtonMeter>(), 
+				getYValue: x => (Watt)x,
+				evaluateFunction: x => LookupElectricPower(voltage, avgSpeed, x, true).ElectricalPower,
+				criterion: x => ((Watt)x).Value()
+			);
+
+			return searchResult;
 			//return null;
-			throw new NotImplementedException("EfficientyMapLookupTorque");
+			//throw new NotImplementedException("EfficientyMapLookupTorque");
 		}
 
 		public EfficiencyMap.EfficiencyResult LookupElectricPower(Volt voltage, PerSecond avgSpeed, NewtonMeter torque, bool allowExtrapolation = false)
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
index 427d74d382..564b82d298 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
@@ -30,8 +30,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		protected internal Joule ThermalBuffer = 0.SI<Joule>();
 		protected internal bool DeRatingActive = false;
-		private bool BatteryElectricPowertrain;
-
+		
 		public Joule OverloadBuffer { get; }
 		public NewtonMeter ContinuousTorque { get; }
 
@@ -117,9 +116,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			PreviousState.DrivetrainSpeed = outAngularVelocity;
 			PreviousState.DrivetrainOutTorque = outTorque;
 
-			BatteryElectricPowertrain = !DataBus.PowertrainInfo.HasCombustionEngine &&
-										DataBus.PowertrainInfo.ElectricMotorPositions.All(x => x.IsBatteryElectric());
-
 			if (NextComponent == null) {
 				return new ResponseSuccess(this) {
 					Engine = {
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
index 4e9109d40f..4adacfdaaf 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
@@ -1936,7 +1936,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 				for (var u = stepSize; u <= 1.0; u += stepSize) {
 					var emTorque = firstResponse.ElectricMotor.MaxRecuperationTorque * u;
 					if (!(emTorque).IsBetween(
-						firstResponse.ElectricMotor.MaxRecuperationTorque, firstResponse.ElectricMotor.MaxDriveTorque)) {
+						firstResponse.ElectricMotor.MaxRecuperationTorque, firstResponse.ElectricMotor.MaxDriveTorque ?? 0.SI<NewtonMeter>())) {
 						continue;
 					}
 
diff --git a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
index 6658c7cb48..48e4e1fdeb 100644
--- a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
+++ b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
@@ -6,6 +6,7 @@ using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.FileIO.JSON;
 using TUGraz.VectoCore.InputData.Reader.ComponentData;
+using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Impl;
 using TUGraz.VectoCore.OutputData;
@@ -80,7 +81,94 @@ namespace TUGraz.VectoCore.Tests.FileIO
 
         }
 
-        [TestCase()]
+		[TestCase()]
+		public void TestReadElectricMotorV3()
+		{
+			var inputProvider =
+				JSONInputDataFactory.ReadElectricMotorData(@"TestData\Hybrids\ElectricMotor\GenericEMotorV3.vem", false);
+
+			Assert.AreEqual(0.15, inputProvider.Inertia.Value(), 1e-6);
+
+			Assert.AreEqual(400, inputProvider.VoltageLevels[0].VoltageLevel.Value());
+
+			var fldLow = inputProvider.VoltageLevels.First().FullLoadCurve;
+			Assert.AreEqual("0", fldLow.Rows[0][ElectricFullLoadCurveReader.Fields.MotorSpeed]);
+			Assert.AreEqual("401.07", fldLow.Rows[0][ElectricFullLoadCurveReader.Fields.DrivingTorque]);
+			Assert.AreEqual("-401.07", fldLow.Rows[0][ElectricFullLoadCurveReader.Fields.GenerationTorque]);
+
+			var fldMapLow = ElectricFullLoadCurveReader.Create(fldLow, 1);
+			Assert.AreEqual(-401.07, fldMapLow.FullLoadDriveTorque(0.RPMtoRad()).Value());
+			Assert.AreEqual(401.07, fldMapLow.FullGenerationTorque(0.RPMtoRad()).Value());
+
+			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]);
+
+			var pwrMapLow = ElectricMotorMapReader.Create(pwrLow, 1);
+			Assert.AreEqual(-10171.0, pwrMapLow.LookupElectricPower(-0.RPMtoRad(), -800.SI<NewtonMeter>()).ElectricalPower.Value());
+
+			Assert.AreEqual(-20430.186, pwrMapLow.LookupElectricPower(120.RPMtoRad(), -800.SI<NewtonMeter>()).ElectricalPower.Value(), 1e-3);
+
+
+
+			Assert.AreEqual(600, inputProvider.VoltageLevels[1].VoltageLevel.Value());
+
+			var fldHi = inputProvider.VoltageLevels.Last().FullLoadCurve;
+			Assert.AreEqual("0", fldHi.Rows[0][ElectricFullLoadCurveReader.Fields.MotorSpeed]);
+			Assert.AreEqual("476.284", fldHi.Rows[0][ElectricFullLoadCurveReader.Fields.DrivingTorque]);
+			Assert.AreEqual("-486.284", fldHi.Rows[0][ElectricFullLoadCurveReader.Fields.GenerationTorque]);
+
+			var fldMapHi = ElectricFullLoadCurveReader.Create(fldHi, 1);
+			Assert.AreEqual(-476.284, fldMapHi.FullLoadDriveTorque(0.RPMtoRad()).Value());
+			Assert.AreEqual(486.284, fldMapHi.FullGenerationTorque(0.RPMtoRad()).Value());
+
+			var pwrHi = inputProvider.VoltageLevels.Last().EfficiencyMap;
+			Assert.AreEqual("0", pwrHi.Rows[0][ElectricMotorMapReader.Fields.MotorSpeed]);
+			Assert.AreEqual("-800", pwrHi.Rows[0][ElectricMotorMapReader.Fields.Torque]);
+			Assert.AreEqual("8.86041", pwrHi.Rows[0][ElectricMotorMapReader.Fields.PowerElectrical]);
+
+			var pwrMap = ElectricMotorMapReader.Create(pwrHi, 1);
+			Assert.AreEqual(-9153.9, pwrMap.LookupElectricPower(-0.RPMtoRad(), -800.SI<NewtonMeter>()).ElectricalPower.Value());
+
+			Assert.AreEqual(-18387.16730, pwrMap.LookupElectricPower(120.RPMtoRad(), -800.SI<NewtonMeter>()).ElectricalPower.Value(), 1e-3);
+		}
+
+		[TestCase()]
+		public void TestElectricMotorV3_Lookup()
+		{
+			var inputProvider =
+				new JSONComponentInputData(@"TestData\Hybrids\ElectricMotor\GenericEMotorV3.vem", null,
+					false);
+			var daa = new EngineeringDataAdapter();
+			var emData = daa.CreateElectricMachines(inputProvider.ElectricMachines, null).First().Item2;
+
+			var em = emData.EfficiencyData;
+
+			Assert.AreEqual(-334.2300, em.FullLoadDriveTorque(400.SI<Volt>(), 2000.RPMtoRad()).Value());
+			Assert.AreEqual(-396.076, em.FullLoadDriveTorque(600.SI<Volt>(), 2000.RPMtoRad()).Value());
+			Assert.AreEqual(-365.153, em.FullLoadDriveTorque(500.SI<Volt>(), 2000.RPMtoRad()).Value());
+			Assert.AreEqual(-380.6145, em.FullLoadDriveTorque(550.SI<Volt>(), 2000.RPMtoRad()).Value());
+
+			Assert.AreEqual(334.2300, em.FullGenerationTorque(400.SI<Volt>(), 2000.RPMtoRad()).Value());
+			Assert.AreEqual(406.076, em.FullGenerationTorque(600.SI<Volt>(), 2000.RPMtoRad()).Value());
+			Assert.AreEqual(370.153, em.FullGenerationTorque(500.SI<Volt>(), 2000.RPMtoRad()).Value());
+			Assert.AreEqual(388.1145, em.FullGenerationTorque(550.SI<Volt>(), 2000.RPMtoRad()).Value());
+
+			Assert.AreEqual(26, em.LookupDragTorque(400.SI<Volt>(), 2000.RPMtoRad()).Value());
+			Assert.AreEqual(33, em.LookupDragTorque(600.SI<Volt>(), 2000.RPMtoRad()).Value());
+			Assert.AreEqual(29.5, em.LookupDragTorque(500.SI<Volt>(), 2000.RPMtoRad()).Value());
+			Assert.AreEqual(31.25, em.LookupDragTorque(550.SI<Volt>(), 2000.RPMtoRad()).Value());
+
+			Assert.AreEqual(-101.760, em.EfficiencyMapLookupTorque(400.SI<Volt>(), -25000.SI<Watt>(), 2000.RPMtoRad(), -300.SI<NewtonMeter>()).Value(), 1e-3);
+            Assert.AreEqual(-115.1818, em.EfficiencyMapLookupTorque(600.SI<Volt>(), -25000.SI<Watt>(), 2000.RPMtoRad(), -300.SI<NewtonMeter>()).Value(), 1e-3);
+            Assert.AreEqual(14.5383, em.EfficiencyMapLookupTorque(500.SI<Volt>(), -25000.SI<Watt>(), 2000.RPMtoRad(), -300.SI<NewtonMeter>()).Value(), 1e-3);
+            Assert.AreEqual(14.5383, em.EfficiencyMapLookupTorque(550.SI<Volt>(), -25000.SI<Watt>(), 2000.RPMtoRad(), -300.SI<NewtonMeter>()).Value(), 1e-3);
+
+		}
+
+
+		[TestCase()]
 		public void TestReadElectricMotorAggregation()
 		{
 			var inputProvider =
diff --git a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
index ccfa911ea3..6c5a098241 100644
--- a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
@@ -1182,7 +1182,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 			TestCase(80, 0.5, -5, 0, TestName = "P4 Hybrid ConstantSpeed 80km/h SoC: 0.5, DH 5%"),
 
 			TestCase(30, 0.25, 0, 1000, TestName = "P4 Hybrid ConstantSpeed 30km/h SoC: 0.25, level P_auxEl: 1kW"),
-			TestCase(30, 0.25, 0, 5000, TestName = "P4 Hybrid ConstantSpeed 30km/h SoC: 0.25, level P_auxEl: 5kW"),
+			TestCase(30, 0.25, 0, 3000, TestName = "P4 Hybrid ConstantSpeed 30km/h SoC: 0.25, level P_auxEl: 3kW"),
 		]
 		public void P4HybridConstantSpeed(double vmax, double initialSoC, double slope, double pAuxEl)
 		{
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericDragHV.vemd b/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericDragHV.vemd
new file mode 100644
index 0000000000..61247d8547
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericDragHV.vemd
@@ -0,0 +1,3 @@
+n [rpm] , T_drag [Nm]
+0       , -15
+5000    , -60
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotorHV.vemp b/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotorHV.vemp
new file mode 100644
index 0000000000..bb99514d32
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotorHV.vemp
@@ -0,0 +1,74 @@
+n [rpm] , T_drive [Nm] , T_recuperation [Nm]
+0       , 476.284      , -486.284
+1600    , 476.284      , -486.284
+1665    , 476.284      , -486.284
+1675    , 473.896      , -483.896
+1685    , 471.052      , -481.052
+1695    , 468.244      , -478.244
+1700    , 466.852      , -476.852
+1750    , 453.364      , -463.364
+1800    , 440.632      , -450.632
+1850    , 428.584      , -438.584
+1900    , 417.184      , -427.184
+1950    , 406.36       , -416.36
+2000    , 396.076      , -406.076
+2050    , 386.284      , -396.284
+2100    , 376.972      , -386.972
+2150    , 368.092      , -378.092
+2200    , 359.608      , -369.608
+2250    , 351.508      , -361.508
+2300    , 343.756      , -353.756
+2350    , 336.34       , -346.34
+2400    , 329.224      , -339.224
+2450    , 322.408      , -332.408
+2500    , 315.856      , -325.856
+2550    , 309.568      , -319.568
+2600    , 303.52       , -313.52
+2650    , 297.7        , -307.7
+2700    , 292.084      , -302.084
+2750    , 286.684      , -296.684
+2800    , 281.476      , -291.476
+2850    , 276.448      , -286.448
+2900    , 271.6        , -281.6
+2950    , 266.908      , -276.908
+3000    , 262.384      , -272.384
+3050    , 257.992      , -267.992
+3100    , 253.756      , -263.756
+3150    , 249.652      , -259.652
+3200    , 245.668      , -255.668
+3250    , 241.816      , -251.816
+3300    , 238.072      , -248.072
+3350    , 234.448      , -244.448
+3400    , 230.92       , -240.92
+3450    , 227.5        , -237.5
+3500    , 224.188      , -234.188
+3550    , 220.96       , -230.96
+3600    , 217.816      , -227.816
+3650    , 214.768      , -224.768
+3700    , 211.792      , -221.792
+3750    , 208.9        , -218.9
+3800    , 206.092      , -216.092
+3850    , 203.344      , -213.344
+3900    , 200.68       , -210.68
+3950    , 198.076      , -208.076
+4000    , 195.532      , -205.532
+4050    , 193.06       , -203.06
+4100    , 190.648      , -200.648
+4150    , 188.284      , -198.284
+4200    , 185.98       , -195.98
+4250    , 183.736      , -193.736
+4300    , 181.54       , -191.54
+4350    , 179.404      , -189.404
+4400    , 177.304      , -187.304
+4450    , 175.252      , -185.252
+4500    , 173.248      , -183.248
+4550    , 171.292      , -181.292
+4600    , 169.384      , -179.384
+4650    , 167.5        , -177.5
+4700    , 165.664      , -175.664
+4750    , 163.876      , -173.876
+4800    , 162.112      , -172.112
+4850    , 160.384      , -170.384
+4900    , 158.704      , -168.704
+4950    , 157.048      , -167.048
+5000    , 155.428      , -165.428
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotorV2.vem b/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotorV2.vem
new file mode 100644
index 0000000000..c3529cda62
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotorV2.vem
@@ -0,0 +1,22 @@
+{
+  "Header": {
+    "CreatedBy": " ()",
+    "Date": "2016-10-13T08:54:28.7387223Z",
+    "AppVersion": "3",
+    "FileVersion": 2
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "Model": "Generic Electric Motor",
+    "FullLoadCurve": "GenericEMotor.vemp",
+    "DragCurve": "GenericDrag.vemd",
+    "EfficiencyMap": "GenericMap.vemo",
+    "Inertia": 0.15,
+    "ContinuousTorque": 100,
+    "ContinuousTorqueSpeed": 2000,
+    "OverloadTorque":  300,
+    "OverloadTorqueSpeed": 2000, 
+    "OverloadTime": 10,
+    "ThermalOverloadRecoveryFactor": 0.9
+  }
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotorV3.vem b/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotorV3.vem
new file mode 100644
index 0000000000..06ff52d781
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotorV3.vem
@@ -0,0 +1,33 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2021-06-24T12:10:33.6353304Z",
+    "AppVersion": "3",
+    "FileVersion": 3
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "Model": "Generic Electric Motor",
+    "Inertia": 0.15,
+    "ContinuousTorque": 100.0,
+    "ContinuousTorqueSpeed": 1999.9999999999998,
+    "OverloadTorque": 300.0,
+    "OverloadTorqueSpeed": 1999.9999999999998,
+    "OverloadTime": 10.0,
+    "ThermalOverloadRecoveryFactor": 0.9,
+    "VoltageLevels": [
+      {
+        "Voltage": 400.0,
+        "FullLoadCurve": "GenericEMotor.vemp",
+        "DragCurve": "GenericDrag.vemd",
+        "EfficiencyMap": "GenericMap.vemo"
+      },
+      {
+        "Voltage": 600.0,
+        "FullLoadCurve": "GenericEMotorHV.vemp",
+        "DragCurve": "GenericDragHV.vemd",
+        "EfficiencyMap": "GenericMapHV.vemo"
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericMapHV.vemo b/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericMapHV.vemo
new file mode 100644
index 0000000000..d95517620e
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericMapHV.vemo
@@ -0,0 +1,2016 @@
+n [rpm] , T [Nm] , P_el [kW]
+0       , -800   , 8.86041
+0       , -775   , 8.34471
+0       , -750   , 7.84449
+0       , -725   , 7.35957
+0       , -700   , 6.89022
+0       , -675   , 6.43626
+0       , -650   , 5.99769
+0       , -625   , 5.5746
+0       , -600   , 5.1669
+0       , -575   , 4.77468
+0       , -550   , 4.39794
+0       , -525   , 4.03659
+0       , -500   , 3.69063
+0       , -475   , 3.36015
+0       , -450   , 3.04506
+0       , -425   , 2.74545
+0       , -400   , 2.46132
+0       , -375   , 2.19258
+0       , -350   , 1.93923
+0       , -325   , 1.70136
+0       , -300   , 1.47897
+0       , -275   , 1.27197
+0       , -250   , 1.08036
+0       , -225   , 0.90423
+0       , -200   , 0.743553
+0       , -175   , 0.598302
+0       , -150   , 0.468477
+0       , -125   , 0.354096
+0       , -100   , 0.255141
+0       , -75    , 0.17163
+0       , -50    , 0.103554
+0       , -25    , 0.0509094
+0       , 0      , 0.03249
+0       , 25     , 0.0782811
+0       , 50     , 0.139509
+0       , 75     , 0.216171
+0       , 100    , 0.308268
+0       , 125    , 0.4158
+0       , 150    , 0.538776
+0       , 175    , 0.677178
+0       , 200    , 0.831015
+0       , 225    , 1.00026
+0       , 250    , 1.18503
+0       , 275    , 1.38519
+0       , 300    , 1.60074
+0       , 325    , 1.83177
+0       , 350    , 2.07819
+0       , 375    , 2.34009
+0       , 400    , 2.61747
+0       , 425    , 2.91024
+0       , 450    , 3.2184
+0       , 475    , 3.54204
+0       , 500    , 3.88107
+0       , 525    , 4.23558
+0       , 550    , 4.60557
+0       , 575    , 4.99095
+0       , 600    , 5.39172
+0       , 625    , 5.80797
+0       , 650    , 6.2397
+0       , 675    , 6.68682
+0       , 700    , 7.14933
+0       , 725    , 7.62732
+0       , 750    , 8.12079
+0       , 775    , 8.62965
+0       , 800    , 9.1539
+47.746  , -800   , 5.25303
+47.746  , -775   , 4.85109
+47.746  , -750   , 4.46454
+47.746  , -725   , 4.09338
+47.746  , -700   , 3.7377
+47.746  , -675   , 3.3975
+47.746  , -650   , 3.07269
+47.746  , -625   , 2.76336
+47.746  , -600   , 2.46942
+47.746  , -575   , 2.19096
+47.746  , -550   , 1.92789
+47.746  , -525   , 1.68021
+47.746  , -500   , 1.4481
+47.746  , -475   , 1.23129
+47.746  , -450   , 1.03005
+47.746  , -425   , 0.844137
+47.746  , -400   , 0.673695
+47.746  , -375   , 0.519561
+47.746  , -350   , 0.38124
+47.746  , -325   , 0.258894
+47.746  , -300   , 0.151677
+47.746  , -275   , 0.0595953
+47.746  , -250   , -0.0173574
+47.746  , -225   , -0.0791811
+47.746  , -200   , -0.125874
+47.746  , -175   , -0.157437
+47.746  , -150   , -0.173871
+47.746  , -125   , -0.175176
+47.746  , -100   , -0.161343
+47.746  , -75    , -0.13239
+47.746  , -50    , -0.088299
+47.746  , -25    , -0.0290817
+47.746  , 0      , 0.065205
+47.746  , 25     , 0.224739
+47.746  , 50     , 0.399699
+47.746  , 75     , 0.590103
+47.746  , 100    , 0.795933
+47.746  , 125    , 1.01718
+47.746  , 150    , 1.25388
+47.746  , 175    , 1.50606
+47.746  , 200    , 1.77363
+47.746  , 225    , 2.05668
+47.746  , 250    , 2.35512
+47.746  , 275    , 2.66895
+47.746  , 300    , 2.99835
+47.746  , 325    , 3.34305
+47.746  , 350    , 3.70323
+47.746  , 375    , 4.07889
+47.746  , 400    , 4.46994
+47.746  , 425    , 4.87647
+47.746  , 450    , 5.29839
+47.746  , 475    , 5.73579
+47.746  , 500    , 6.18858
+47.746  , 525    , 6.65685
+47.746  , 550    , 7.14051
+47.746  , 575    , 7.63965
+47.746  , 600    , 8.15418
+47.746  , 625    , 8.68419
+47.746  , 650    , 9.2295
+47.746  , 675    , 9.7902
+47.746  , 700    , 10.3671
+47.746  , 725    , 10.9584
+47.746  , 750    , 11.5659
+47.746  , 775    , 12.1878
+47.746  , 800    , 12.8259
+95.493  , -800   , 1.64727
+95.493  , -775   , 1.35909
+95.493  , -750   , 1.08675
+95.493  , -725   , 0.832113
+95.493  , -700   , 0.594306
+95.493  , -675   , 0.371628
+95.493  , -650   , 0.164079
+95.493  , -625   , -0.0283437
+95.493  , -600   , -0.205632
+95.493  , -575   , -0.367794
+95.493  , -550   , -0.514818
+95.493  , -525   , -0.646722
+95.493  , -500   , -0.763488
+95.493  , -475   , -0.865125
+95.493  , -450   , -0.95166
+95.493  , -425   , -1.02303
+95.493  , -400   , -1.07928
+95.493  , -375   , -1.12041
+95.493  , -350   , -1.14633
+95.493  , -325   , -1.15722
+95.493  , -300   , -1.15299
+95.493  , -275   , -1.13355
+95.493  , -250   , -1.09899
+95.493  , -225   , -1.04931
+95.493  , -200   , -0.98451
+95.493  , -175   , -0.90459
+95.493  , -150   , -0.809577
+95.493  , -125   , -0.69939
+95.493  , -100   , -0.574083
+95.493  , -75    , -0.433638
+95.493  , -50    , -0.278064
+95.493  , -25    , -0.107361
+95.493  , 0      , 0.099585
+95.493  , 25     , 0.372852
+95.493  , 50     , 0.661563
+95.493  , 75     , 0.9657
+95.493  , 100    , 1.28529
+95.493  , 125    , 1.62027
+95.493  , 150    , 1.97073
+95.493  , 175    , 2.33658
+95.493  , 200    , 2.71791
+95.493  , 225    , 3.11472
+95.493  , 250    , 3.52692
+95.493  , 275    , 3.95451
+95.493  , 300    , 4.39758
+95.493  , 325    , 4.85604
+95.493  , 350    , 5.32998
+95.493  , 375    , 5.8194
+95.493  , 400    , 6.32421
+95.493  , 425    , 6.84441
+95.493  , 450    , 7.38009
+95.493  , 475    , 7.93116
+95.493  , 500    , 8.49771
+95.493  , 525    , 9.0801
+95.493  , 550    , 9.6768
+95.493  , 575    , 10.2897
+95.493  , 600    , 10.9179
+95.493  , 625    , 11.5623
+95.493  , 650    , 12.2211
+95.493  , 675    , 12.8961
+95.493  , 700    , 13.5855
+95.493  , 725    , 14.2911
+95.493  , 750    , 15.012
+95.493  , 775    , 15.7482
+95.493  , 800    , 16.5006
+143.24  , -800   , -1.89639
+143.24  , -775   , -2.06811
+143.24  , -750   , -2.22471
+143.24  , -725   , -2.3661
+143.24  , -700   , -2.49246
+143.24  , -675   , -2.60361
+143.24  , -650   , -2.69973
+143.24  , -625   , -2.78064
+143.24  , -600   , -2.84643
+143.24  , -575   , -2.8971
+143.24  , -550   , -2.93265
+143.24  , -525   , -2.95308
+143.24  , -500   , -2.95839
+143.24  , -475   , -2.94849
+143.24  , -450   , -2.92356
+143.24  , -425   , -2.88342
+143.24  , -400   , -2.82816
+143.24  , -375   , -2.75778
+143.24  , -350   , -2.67228
+143.24  , -325   , -2.57166
+143.24  , -300   , -2.45592
+143.24  , -275   , -2.32506
+143.24  , -250   , -2.17899
+143.24  , -225   , -2.01789
+143.24  , -200   , -1.84158
+143.24  , -175   , -1.65015
+143.24  , -150   , -1.4436
+143.24  , -125   , -1.22193
+143.24  , -100   , -0.98514
+143.24  , -75    , -0.733239
+143.24  , -50    , -0.466182
+143.24  , -25    , -0.183996
+143.24  , 0      , 0.135648
+143.24  , 25     , 0.522648
+143.24  , 50     , 0.92511
+143.24  , 75     , 1.34298
+143.24  , 100    , 1.77633
+143.24  , 125    , 2.22507
+143.24  , 150    , 2.6892
+143.24  , 175    , 3.16881
+143.24  , 200    , 3.6639
+143.24  , 225    , 4.17438
+143.24  , 250    , 4.70034
+143.24  , 275    , 5.24169
+143.24  , 300    , 5.79852
+143.24  , 325    , 6.37074
+143.24  , 350    , 6.95835
+143.24  , 375    , 7.56153
+143.24  , 400    , 8.18001
+143.24  , 425    , 8.81406
+143.24  , 450    , 9.4635
+143.24  , 475    , 10.1286
+143.24  , 500    , 10.809
+143.24  , 525    , 11.5047
+143.24  , 550    , 12.2157
+143.24  , 575    , 12.942
+143.24  , 600    , 13.6845
+143.24  , 625    , 14.4414
+143.24  , 650    , 15.2145
+143.24  , 675    , 16.0029
+143.24  , 700    , 16.8066
+143.24  , 725    , 17.6256
+143.24  , 750    , 18.4608
+143.24  , 775    , 19.3104
+143.24  , 800    , 20.1762
+190.99  , -800   , -5.42745
+190.99  , -775   , -5.48766
+190.99  , -750   , -5.53275
+190.99  , -725   , -5.56272
+190.99  , -700   , -5.57757
+190.99  , -675   , -5.5773
+190.99  , -650   , -5.56191
+190.99  , -625   , -5.53131
+190.99  , -600   , -5.48559
+190.99  , -575   , -5.42484
+190.99  , -550   , -5.34888
+190.99  , -525   , -5.2578
+190.99  , -500   , -5.1516
+190.99  , -475   , -5.03028
+190.99  , -450   , -4.89384
+190.99  , -425   , -4.74219
+190.99  , -400   , -4.57551
+190.99  , -375   , -4.39362
+190.99  , -350   , -4.19661
+190.99  , -325   , -3.98448
+190.99  , -300   , -3.75732
+190.99  , -275   , -3.51486
+190.99  , -250   , -3.25737
+190.99  , -225   , -2.98476
+190.99  , -200   , -2.69703
+190.99  , -175   , -2.39409
+190.99  , -150   , -2.07603
+190.99  , -125   , -1.74294
+190.99  , -100   , -1.39464
+190.99  , -75    , -1.03122
+190.99  , -50    , -0.652671
+190.99  , -25    , -0.258993
+190.99  , 0      , 0.173376
+190.99  , 25     , 0.674118
+190.99  , 50     , 1.19034
+190.99  , 75     , 1.72188
+190.99  , 100    , 2.26899
+190.99  , 125    , 2.83149
+190.99  , 150    , 3.40938
+190.99  , 175    , 4.00275
+190.99  , 200    , 4.61151
+190.99  , 225    , 5.23575
+190.99  , 250    , 5.87547
+190.99  , 275    , 6.53049
+190.99  , 300    , 7.20108
+190.99  , 325    , 7.88706
+190.99  , 350    , 8.58843
+190.99  , 375    , 9.3051
+190.99  , 400    , 10.0377
+190.99  , 425    , 10.7856
+190.99  , 450    , 11.5488
+190.99  , 475    , 12.3273
+190.99  , 500    , 13.1211
+190.99  , 525    , 13.9302
+190.99  , 550    , 14.7555
+190.99  , 575    , 15.5961
+190.99  , 600    , 16.4511
+190.99  , 625    , 17.3223
+190.99  , 650    , 18.2097
+190.99  , 675    , 19.1115
+190.99  , 700    , 20.0286
+190.99  , 725    , 20.9619
+190.99  , 750    , 21.9105
+190.99  , 775    , 22.8744
+190.99  , 800    , 23.8536
+238.73  , -800   , -8.95689
+238.73  , -775   , -8.90559
+238.73  , -750   , -8.83926
+238.73  , -725   , -8.75772
+238.73  , -700   , -8.66106
+238.73  , -675   , -8.54928
+238.73  , -650   , -8.42238
+238.73  , -625   , -8.28036
+238.73  , -600   , -8.12322
+238.73  , -575   , -7.95087
+238.73  , -550   , -7.7634
+238.73  , -525   , -7.5609
+238.73  , -500   , -7.34319
+238.73  , -475   , -7.11036
+238.73  , -450   , -6.86241
+238.73  , -425   , -6.59934
+238.73  , -400   , -6.32115
+238.73  , -375   , -6.02775
+238.73  , -350   , -5.71932
+238.73  , -325   , -5.39568
+238.73  , -300   , -5.05701
+238.73  , -275   , -4.70313
+238.73  , -250   , -4.33413
+238.73  , -225   , -3.95001
+238.73  , -200   , -3.55077
+238.73  , -175   , -3.13641
+238.73  , -150   , -2.70684
+238.73  , -125   , -2.26224
+238.73  , -100   , -1.80243
+238.73  , -75    , -1.3275
+238.73  , -50    , -0.837513
+238.73  , -25    , -0.332352
+238.73  , 0      , 0.212769
+238.73  , 25     , 0.827253
+238.73  , 50     , 1.45719
+238.73  , 75     , 2.10249
+238.73  , 100    , 2.76336
+238.73  , 125    , 3.43953
+238.73  , 150    , 4.13118
+238.73  , 175    , 4.83831
+238.73  , 200    , 5.56083
+238.73  , 225    , 6.29883
+238.73  , 250    , 7.05222
+238.73  , 275    , 7.82109
+238.73  , 300    , 8.60535
+238.73  , 325    , 9.405
+238.73  , 350    , 10.2204
+238.73  , 375    , 11.0511
+238.73  , 400    , 11.8971
+238.73  , 425    , 12.7584
+238.73  , 450    , 13.635
+238.73  , 475    , 14.5278
+238.73  , 500    , 15.435
+238.73  , 525    , 16.3584
+238.73  , 550    , 17.2971
+238.73  , 575    , 18.2511
+238.73  , 600    , 19.2204
+238.73  , 625    , 20.2059
+238.73  , 650    , 21.2058
+238.73  , 675    , 22.2219
+238.73  , 700    , 23.2533
+238.73  , 725    , 24.3
+238.73  , 750    , 25.362
+238.73  , 775    , 26.4393
+238.73  , 800    , 27.5328
+286.48  , -800   , -12.4848
+286.48  , -775   , -12.3219
+286.48  , -750   , -12.1437
+286.48  , -725   , -11.9511
+286.48  , -700   , -11.7432
+286.48  , -675   , -11.52
+286.48  , -650   , -11.2815
+286.48  , -625   , -11.0277
+286.48  , -600   , -10.7595
+286.48  , -575   , -10.4751
+286.48  , -550   , -10.1763
+286.48  , -525   , -9.8622
+286.48  , -500   , -9.5328
+286.48  , -475   , -9.189
+286.48  , -450   , -8.82945
+286.48  , -425   , -8.45487
+286.48  , -400   , -8.06517
+286.48  , -375   , -7.66035
+286.48  , -350   , -7.24032
+286.48  , -325   , -6.80526
+286.48  , -300   , -6.35508
+286.48  , -275   , -5.88969
+286.48  , -250   , -5.40927
+286.48  , -225   , -4.91364
+286.48  , -200   , -4.40289
+286.48  , -175   , -3.87702
+286.48  , -150   , -3.33603
+286.48  , -125   , -2.77992
+286.48  , -100   , -2.2086
+286.48  , -75    , -1.62225
+286.48  , -50    , -1.02069
+286.48  , -25    , -0.404064
+286.48  , 0      , 0.253845
+286.48  , 25     , 0.98208
+286.48  , 50     , 1.72575
+286.48  , 75     , 2.48481
+286.48  , 100    , 3.25935
+286.48  , 125    , 4.04928
+286.48  , 150    , 4.85469
+286.48  , 175    , 5.67558
+286.48  , 200    , 6.51186
+286.48  , 225    , 7.36353
+286.48  , 250    , 8.23068
+286.48  , 275    , 9.1134
+286.48  , 300    , 10.0116
+286.48  , 325    , 10.9251
+286.48  , 350    , 11.8539
+286.48  , 375    , 12.798
+286.48  , 400    , 13.7574
+286.48  , 425    , 14.733
+286.48  , 450    , 15.7239
+286.48  , 475    , 16.7292
+286.48  , 500    , 17.7507
+286.48  , 525    , 18.7884
+286.48  , 550    , 19.8405
+286.48  , 575    , 20.9079
+286.48  , 600    , 21.9915
+286.48  , 625    , 23.0904
+286.48  , 650    , 24.2046
+286.48  , 675    , 25.3341
+286.48  , 700    , 26.4789
+286.48  , 725    , 27.639
+286.48  , 750    , 28.8153
+286.48  , 775    , 30.006
+286.48  , 800    , 31.2129
+334.23  , -800   , -16.011
+334.23  , -775   , -15.7365
+334.23  , -750   , -15.4476
+334.23  , -725   , -15.1425
+334.23  , -700   , -14.823
+334.23  , -675   , -14.4882
+334.23  , -650   , -14.1381
+334.23  , -625   , -13.7736
+334.23  , -600   , -13.3929
+334.23  , -575   , -12.9978
+334.23  , -550   , -12.5874
+334.23  , -525   , -12.1617
+334.23  , -500   , -11.7216
+334.23  , -475   , -11.2653
+334.23  , -450   , -10.7946
+334.23  , -425   , -10.3086
+334.23  , -400   , -9.8073
+334.23  , -375   , -9.2916
+334.23  , -350   , -8.75979
+334.23  , -325   , -8.21322
+334.23  , -300   , -7.65144
+334.23  , -275   , -7.07463
+334.23  , -250   , -6.4827
+334.23  , -225   , -5.87556
+334.23  , -200   , -5.25339
+334.23  , -175   , -4.61601
+334.23  , -150   , -3.96351
+334.23  , -125   , -3.29589
+334.23  , -100   , -2.61315
+334.23  , -75    , -1.91529
+334.23  , -50    , -1.20231
+334.23  , -25    , -0.474147
+334.23  , 0      , 0.296586
+334.23  , 25     , 1.13859
+334.23  , 50     , 1.99593
+334.23  , 75     , 2.86875
+334.23  , 100    , 3.75705
+334.23  , 125    , 4.66074
+334.23  , 150    , 5.57991
+334.23  , 175    , 6.51447
+334.23  , 200    , 7.46451
+334.23  , 225    , 8.42994
+334.23  , 250    , 9.4104
+334.23  , 275    , 10.4067
+334.23  , 300    , 11.4192
+334.23  , 325    , 12.4461
+334.23  , 350    , 13.4883
+334.23  , 375    , 14.5467
+334.23  , 400    , 15.6204
+334.23  , 425    , 16.7094
+334.23  , 450    , 17.8137
+334.23  , 475    , 18.9333
+334.23  , 500    , 20.0682
+334.23  , 525    , 21.2193
+334.23  , 550    , 22.3857
+334.23  , 575    , 23.5665
+334.23  , 600    , 24.7635
+334.23  , 625    , 25.9767
+334.23  , 650    , 27.2043
+334.23  , 675    , 28.4472
+334.23  , 700    , 29.7063
+334.23  , 725    , 30.9807
+334.23  , 750    , 32.2704
+334.23  , 775    , 33.5754
+334.23  , 800    , 34.8957
+381.97  , -800   , -19.5354
+381.97  , -775   , -19.1493
+381.97  , -750   , -18.7488
+381.97  , -725   , -18.333
+381.97  , -700   , -17.9019
+381.97  , -675   , -17.4555
+381.97  , -650   , -16.9938
+381.97  , -625   , -16.5177
+381.97  , -600   , -16.0263
+381.97  , -575   , -15.5196
+381.97  , -550   , -14.9976
+381.97  , -525   , -14.4603
+381.97  , -500   , -13.9086
+381.97  , -475   , -13.3407
+381.97  , -450   , -12.7584
+381.97  , -425   , -12.1608
+381.97  , -400   , -11.5479
+381.97  , -375   , -10.9206
+381.97  , -350   , -10.2771
+381.97  , -325   , -9.6192
+381.97  , -300   , -8.94627
+381.97  , -275   , -8.25795
+381.97  , -250   , -7.55451
+381.97  , -225   , -6.83595
+381.97  , -200   , -6.10218
+381.97  , -175   , -5.35338
+381.97  , -150   , -4.58937
+381.97  , -125   , -3.81033
+381.97  , -100   , -3.01608
+381.97  , -75    , -2.20671
+381.97  , -50    , -1.38222
+381.97  , -25    , -0.542592
+381.97  , 0      , 0.341001
+381.97  , 25     , 1.29672
+381.97  , 50     , 2.26782
+381.97  , 75     , 3.2544
+381.97  , 100    , 4.25637
+381.97  , 125    , 5.27382
+381.97  , 150    , 6.30675
+381.97  , 175    , 7.35507
+381.97  , 200    , 8.41878
+381.97  , 225    , 9.4977
+381.97  , 250    , 10.593
+381.97  , 275    , 11.7027
+381.97  , 300    , 12.8286
+381.97  , 325    , 13.9689
+381.97  , 350    , 15.1254
+381.97  , 375    , 16.2972
+381.97  , 400    , 17.4843
+381.97  , 425    , 18.6876
+381.97  , 450    , 19.9053
+381.97  , 475    , 21.1392
+381.97  , 500    , 22.3875
+381.97  , 525    , 23.652
+381.97  , 550    , 24.9318
+381.97  , 575    , 26.2269
+381.97  , 600    , 27.5382
+381.97  , 625    , 28.8639
+381.97  , 650    , 30.2058
+381.97  , 675    , 31.563
+381.97  , 700    , 32.9355
+381.97  , 725    , 34.3233
+381.97  , 750    , 35.7264
+381.97  , 775    , 37.1457
+381.97  , 800    , 38.5794
+429.72  , -800   , -23.058
+429.72  , -775   , -22.5612
+429.72  , -750   , -22.0491
+429.72  , -725   , -21.5208
+429.72  , -700   , -20.979
+429.72  , -675   , -20.421
+429.72  , -650   , -19.8477
+429.72  , -625   , -19.26
+429.72  , -600   , -18.657
+429.72  , -575   , -18.0387
+429.72  , -550   , -17.4051
+429.72  , -525   , -16.7571
+429.72  , -500   , -16.0929
+429.72  , -475   , -15.4143
+429.72  , -450   , -14.7204
+429.72  , -425   , -14.0112
+429.72  , -400   , -13.2876
+429.72  , -375   , -12.5478
+429.72  , -350   , -11.7936
+429.72  , -325   , -11.0241
+429.72  , -300   , -10.2393
+429.72  , -275   , -9.4392
+429.72  , -250   , -8.6247
+429.72  , -225   , -7.79463
+429.72  , -200   , -6.94944
+429.72  , -175   , -6.08913
+429.72  , -150   , -5.21361
+429.72  , -125   , -4.32306
+429.72  , -100   , -3.4173
+429.72  , -75    , -2.49651
+429.72  , -50    , -1.56051
+429.72  , -25    , -0.609399
+429.72  , 0      , 0.38709
+429.72  , 25     , 1.45656
+429.72  , 50     , 2.54142
+429.72  , 75     , 3.64167
+429.72  , 100    , 4.75749
+429.72  , 125    , 5.88861
+429.72  , 150    , 7.03521
+429.72  , 175    , 8.19729
+429.72  , 200    , 9.3744
+429.72  , 225    , 10.5678
+429.72  , 250    , 11.7765
+429.72  , 275    , 12.9996
+429.72  , 300    , 14.2389
+429.72  , 325    , 15.4935
+429.72  , 350    , 16.7643
+429.72  , 375    , 18.0495
+429.72  , 400    , 19.35
+429.72  , 425    , 20.6667
+429.72  , 450    , 21.9987
+429.72  , 475    , 23.346
+429.72  , 500    , 24.7086
+429.72  , 525    , 26.0865
+429.72  , 550    , 27.4806
+429.72  , 575    , 28.8891
+429.72  , 600    , 30.3138
+429.72  , 625    , 31.7538
+429.72  , 650    , 33.2091
+429.72  , 675    , 34.6797
+429.72  , 700    , 36.1665
+429.72  , 725    , 37.6677
+429.72  , 750    , 39.1851
+429.72  , 775    , 40.7169
+429.72  , 800    , 42.2649
+477.46  , -800   , -26.5797
+477.46  , -775   , -25.9704
+477.46  , -750   , -25.3467
+477.46  , -725   , -24.7077
+477.46  , -700   , -24.0543
+477.46  , -675   , -23.3847
+477.46  , -650   , -22.7007
+477.46  , -625   , -22.0005
+477.46  , -600   , -21.2859
+477.46  , -575   , -20.5569
+477.46  , -550   , -19.8117
+477.46  , -525   , -19.0521
+477.46  , -500   , -18.2763
+477.46  , -475   , -17.4861
+477.46  , -450   , -16.6806
+477.46  , -425   , -15.8607
+477.46  , -400   , -15.0246
+477.46  , -375   , -14.1741
+477.46  , -350   , -13.3083
+477.46  , -325   , -12.4272
+477.46  , -300   , -11.5308
+477.46  , -275   , -10.62
+477.46  , -250   , -9.693
+477.46  , -225   , -8.75169
+477.46  , -200   , -7.79499
+477.46  , -175   , -6.82317
+477.46  , -150   , -5.83623
+477.46  , -125   , -4.83417
+477.46  , -100   , -3.81699
+477.46  , -75    , -2.7846
+477.46  , -50    , -1.73718
+477.46  , -25    , -0.674559
+477.46  , 0      , 0.434853
+477.46  , 25     , 1.61802
+477.46  , 50     , 2.81664
+477.46  , 75     , 4.03065
+477.46  , 100    , 5.26014
+477.46  , 125    , 6.50511
+477.46  , 150    , 7.76547
+477.46  , 175    , 9.0414
+477.46  , 200    , 10.3329
+477.46  , 225    , 11.6388
+477.46  , 250    , 12.9609
+477.46  , 275    , 14.2992
+477.46  , 300    , 15.6519
+477.46  , 325    , 17.0199
+477.46  , 350    , 18.4041
+477.46  , 375    , 19.8036
+477.46  , 400    , 21.2184
+477.46  , 425    , 22.6485
+477.46  , 450    , 24.0939
+477.46  , 475    , 25.5546
+477.46  , 500    , 27.0315
+477.46  , 525    , 28.5228
+477.46  , 550    , 30.0303
+477.46  , 575    , 31.5531
+477.46  , 600    , 33.0912
+477.46  , 625    , 34.6446
+477.46  , 650    , 36.2142
+477.46  , 675    , 37.7982
+477.46  , 700    , 39.3984
+477.46  , 725    , 41.0139
+477.46  , 750    , 42.6447
+477.46  , 775    , 44.2908
+477.46  , 800    , 45.9522
+525.21  , -800   , -30.0987
+525.21  , -775   , -29.3787
+525.21  , -750   , -28.6434
+525.21  , -725   , -27.8928
+525.21  , -700   , -27.1278
+525.21  , -675   , -26.3466
+525.21  , -650   , -25.551
+525.21  , -625   , -24.7401
+525.21  , -600   , -23.9139
+525.21  , -575   , -23.0724
+525.21  , -550   , -22.2165
+525.21  , -525   , -21.3453
+525.21  , -500   , -20.4588
+525.21  , -475   , -19.557
+525.21  , -450   , -18.6399
+525.21  , -425   , -17.7075
+525.21  , -400   , -16.7607
+525.21  , -375   , -15.7986
+525.21  , -350   , -14.8212
+525.21  , -325   , -13.8285
+525.21  , -300   , -12.8205
+525.21  , -275   , -11.7981
+525.21  , -250   , -10.7604
+525.21  , -225   , -9.7074
+525.21  , -200   , -8.63892
+525.21  , -175   , -7.55559
+525.21  , -150   , -6.45723
+525.21  , -125   , -5.34366
+525.21  , -100   , -4.21497
+525.21  , -75    , -3.07116
+525.21  , -50    , -1.91214
+525.21  , -25    , -0.738081
+525.21  , 0      , 0.484281
+525.21  , 25     , 1.78119
+525.21  , 50     , 3.09357
+525.21  , 75     , 4.42134
+525.21  , 100    , 5.76459
+525.21  , 125    , 7.12323
+525.21  , 150    , 8.49726
+525.21  , 175    , 9.8865
+525.21  , 200    , 11.2914
+525.21  , 225    , 12.7125
+525.21  , 250    , 14.148
+525.21  , 275    , 15.5997
+525.21  , 300    , 17.0658
+525.21  , 325    , 18.5481
+525.21  , 350    , 20.0457
+525.21  , 375    , 21.5586
+525.21  , 400    , 23.0868
+525.21  , 425    , 24.6312
+525.21  , 450    , 26.19
+525.21  , 475    , 27.765
+525.21  , 500    , 29.3553
+525.21  , 525    , 30.9609
+525.21  , 550    , 32.5818
+525.21  , 575    , 34.2189
+525.21  , 600    , 35.8704
+525.21  , 625    , 37.5381
+525.21  , 650    , 39.2211
+525.21  , 675    , 40.9185
+525.21  , 700    , 42.633
+525.21  , 725    , 44.3619
+525.21  , 750    , 46.1061
+525.21  , 775    , 47.8665
+525.21  , 800    , 49.6413
+572.96  , -800   , -33.6168
+572.96  , -775   , -32.7852
+572.96  , -750   , -31.9383
+572.96  , -725   , -31.077
+572.96  , -700   , -30.1995
+572.96  , -675   , -29.3076
+572.96  , -650   , -28.4004
+572.96  , -625   , -27.4779
+572.96  , -600   , -26.5401
+572.96  , -575   , -25.587
+572.96  , -550   , -24.6195
+572.96  , -525   , -23.6367
+572.96  , -500   , -22.6386
+572.96  , -475   , -21.6252
+572.96  , -450   , -20.5965
+572.96  , -425   , -19.5534
+572.96  , -400   , -18.495
+572.96  , -375   , -17.4213
+572.96  , -350   , -16.3323
+572.96  , -325   , -15.228
+572.96  , -300   , -14.1093
+572.96  , -275   , -12.9744
+572.96  , -250   , -11.8251
+572.96  , -225   , -10.6605
+572.96  , -200   , -9.4815
+572.96  , -175   , -8.28639
+572.96  , -150   , -7.07652
+572.96  , -125   , -5.85144
+572.96  , -100   , -4.61124
+572.96  , -75    , -3.35601
+572.96  , -50    , -2.08557
+572.96  , -25    , -0.799974
+572.96  , 0      , 0.535383
+572.96  , 25     , 1.94607
+572.96  , 50     , 3.37212
+572.96  , 75     , 4.81365
+572.96  , 100    , 6.27057
+572.96  , 125    , 7.74297
+572.96  , 150    , 9.2304
+572.96  , 175    , 10.7343
+572.96  , 200    , 12.2526
+572.96  , 225    , 13.7871
+572.96  , 250    , 15.3369
+572.96  , 275    , 16.9011
+572.96  , 300    , 18.4824
+572.96  , 325    , 20.0781
+572.96  , 350    , 21.6891
+572.96  , 375    , 23.3163
+572.96  , 400    , 24.9579
+572.96  , 425    , 26.6157
+572.96  , 450    , 28.2888
+572.96  , 475    , 29.9772
+572.96  , 500    , 31.6809
+572.96  , 525    , 33.4008
+572.96  , 550    , 35.1351
+572.96  , 575    , 36.8856
+572.96  , 600    , 38.6514
+572.96  , 625    , 40.4325
+572.96  , 650    , 42.2289
+572.96  , 675    , 44.0406
+572.96  , 700    , 45.8685
+572.96  , 725    , 47.7108
+572.96  , 750    , 49.5693
+572.96  , 775    , 51.4431
+572.96  , 800    , 53.3322
+954.93  , -800   , -61.7013
+954.93  , -775   , -59.9778
+954.93  , -750   , -58.2399
+954.93  , -725   , -56.4858
+954.93  , -700   , -54.7164
+954.93  , -675   , -52.9326
+954.93  , -650   , -51.1335
+954.93  , -625   , -49.3191
+954.93  , -600   , -47.4894
+954.93  , -575   , -45.6453
+954.93  , -550   , -43.785
+954.93  , -525   , -41.9103
+954.93  , -500   , -40.0203
+954.93  , -475   , -38.115
+954.93  , -450   , -36.1953
+954.93  , -425   , -34.2594
+954.93  , -400   , -32.3091
+954.93  , -375   , -30.3435
+954.93  , -350   , -28.3626
+954.93  , -325   , -26.3673
+954.93  , -300   , -24.3558
+954.93  , -275   , -22.3299
+954.93  , -250   , -20.2887
+954.93  , -225   , -18.2322
+954.93  , -200   , -16.1604
+954.93  , -175   , -14.0742
+954.93  , -150   , -11.9718
+954.93  , -125   , -9.855
+954.93  , -100   , -7.72308
+954.93  , -75    , -5.57586
+954.93  , -50    , -3.41352
+954.93  , -25    , -1.23606
+954.93  , 0      , 1.0044
+954.93  , 25     , 3.32496
+954.93  , 50     , 5.661
+954.93  , 75     , 8.01243
+954.93  , 100    , 10.3797
+954.93  , 125    , 12.762
+954.93  , 150    , 15.1596
+954.93  , 175    , 17.5725
+954.93  , 200    , 20.0007
+954.93  , 225    , 22.4451
+954.93  , 250    , 24.9048
+954.93  , 275    , 27.3798
+954.93  , 300    , 29.8701
+954.93  , 325    , 32.3757
+954.93  , 350    , 34.8966
+954.93  , 375    , 37.4337
+954.93  , 400    , 39.9861
+954.93  , 425    , 42.5529
+954.93  , 450    , 45.1359
+954.93  , 475    , 47.7342
+954.93  , 500    , 50.3487
+954.93  , 525    , 52.9776
+954.93  , 550    , 55.6227
+954.93  , 575    , 58.2822
+954.93  , 600    , 60.9579
+954.93  , 625    , 63.6489
+954.93  , 650    , 66.3552
+954.93  , 675    , 69.0777
+954.93  , 700    , 71.8146
+954.93  , 725    , 74.5677
+954.93  , 750    , 77.3361
+954.93  , 775    , 80.1198
+954.93  , 800    , 82.9188
+1193.7  , -800   , -79.2018
+1193.7  , -775   , -76.9203
+1193.7  , -750   , -74.6244
+1193.7  , -725   , -72.3132
+1193.7  , -700   , -69.9867
+1193.7  , -675   , -67.6449
+1193.7  , -650   , -65.2887
+1193.7  , -625   , -62.9172
+1193.7  , -600   , -60.5295
+1193.7  , -575   , -58.1274
+1193.7  , -550   , -55.7109
+1193.7  , -525   , -53.2782
+1193.7  , -500   , -50.8311
+1193.7  , -475   , -48.3687
+1193.7  , -450   , -45.891
+1193.7  , -425   , -43.398
+1193.7  , -400   , -40.8897
+1193.7  , -375   , -38.367
+1193.7  , -350   , -35.829
+1193.7  , -325   , -33.2757
+1193.7  , -300   , -30.7071
+1193.7  , -275   , -28.1232
+1193.7  , -250   , -25.5249
+1193.7  , -225   , -22.9104
+1193.7  , -200   , -20.2815
+1193.7  , -175   , -17.6373
+1193.7  , -150   , -14.9787
+1193.7  , -125   , -12.3039
+1193.7  , -100   , -9.6147
+1193.7  , -75    , -6.91002
+1193.7  , -50    , -4.19022
+1193.7  , -25    , -1.45539
+1193.7  , 0      , 1.35189
+1193.7  , 25     , 4.24116
+1193.7  , 50     , 7.14582
+1193.7  , 75     , 10.0656
+1193.7  , 100    , 13.0014
+1193.7  , 125    , 15.9525
+1193.7  , 150    , 18.9189
+1193.7  , 175    , 21.9006
+1193.7  , 200    , 24.8985
+1193.7  , 225    , 27.9108
+1193.7  , 250    , 30.9393
+1193.7  , 275    , 33.9822
+1193.7  , 300    , 37.0413
+1193.7  , 325    , 40.1166
+1193.7  , 350    , 43.2063
+1193.7  , 375    , 46.3113
+1193.7  , 400    , 49.4325
+1193.7  , 425    , 52.5681
+1193.7  , 450    , 55.7199
+1193.7  , 475    , 58.887
+1193.7  , 500    , 62.0694
+1193.7  , 525    , 65.268
+1193.7  , 550    , 68.481
+1193.7  , 575    , 71.7102
+1193.7  , 600    , 74.9538
+1193.7  , 625    , 78.2136
+1193.7  , 650    , 81.4887
+1193.7  , 675    , 84.78
+1193.7  , 700    , 88.0857
+1193.7  , 725    , 91.404
+1193.7  , 750    , 94.743
+1193.7  , 775    , 98.1
+1193.7  , 800    , 101.466
+1432.4  , -800   , -96.66
+1432.4  , -775   , -93.825
+1432.4  , -750   , -90.972
+1432.4  , -725   , -88.0992
+1432.4  , -700   , -85.2156
+1432.4  , -675   , -82.3167
+1432.4  , -650   , -79.4025
+1432.4  , -625   , -76.473
+1432.4  , -600   , -73.5291
+1432.4  , -575   , -70.5699
+1432.4  , -550   , -67.5954
+1432.4  , -525   , -64.6056
+1432.4  , -500   , -61.6005
+1432.4  , -475   , -58.5801
+1432.4  , -450   , -55.5453
+1432.4  , -425   , -52.4952
+1432.4  , -400   , -49.4298
+1432.4  , -375   , -46.3491
+1432.4  , -350   , -43.254
+1432.4  , -325   , -40.1427
+1432.4  , -300   , -37.017
+1432.4  , -275   , -33.876
+1432.4  , -250   , -30.7197
+1432.4  , -225   , -27.549
+1432.4  , -200   , -24.3621
+1432.4  , -175   , -21.1608
+1432.4  , -150   , -17.9442
+1432.4  , -125   , -14.7123
+1432.4  , -100   , -11.4651
+1432.4  , -75    , -8.20323
+1432.4  , -50    , -4.92606
+1432.4  , -25    , -1.63368
+1432.4  , 0      , 1.74114
+1432.4  , 25     , 5.19912
+1432.4  , 50     , 8.67249
+1432.4  , 75     , 12.1617
+1432.4  , 100    , 15.6654
+1432.4  , 125    , 19.1853
+1432.4  , 150    , 22.7205
+1432.4  , 175    , 26.271
+1432.4  , 200    , 29.8368
+1432.4  , 225    , 33.4179
+1432.4  , 250    , 37.0152
+1432.4  , 275    , 40.6278
+1432.4  , 300    , 44.2557
+1432.4  , 325    , 47.898
+1432.4  , 350    , 51.5574
+1432.4  , 375    , 55.2312
+1432.4  , 400    , 58.9203
+1432.4  , 425    , 62.6256
+1432.4  , 450    , 66.3462
+1432.4  , 475    , 70.0812
+1432.4  , 500    , 73.8333
+1432.4  , 525    , 77.5998
+1432.4  , 550    , 81.3816
+1432.4  , 575    , 85.1796
+1432.4  , 600    , 88.992
+1432.4  , 625    , 92.817
+1432.4  , 650    , 96.66
+1432.4  , 675    , 100.521
+1432.4  , 700    , 104.4
+1432.4  , 725    , 108.288
+1432.4  , 750    , 112.194
+1432.4  , 775    , 116.118
+1432.4  , 800    , 120.051
+1671.1  , -800   , -114.075
+1671.1  , -775   , -110.682
+1671.1  , -750   , -107.271
+1671.1  , -725   , -103.842
+1671.1  , -700   , -100.404
+1671.1  , -675   , -96.948
+1671.1  , -650   , -93.474
+1671.1  , -625   , -89.9892
+1671.1  , -600   , -86.4873
+1671.1  , -575   , -82.9701
+1671.1  , -550   , -79.4385
+1671.1  , -525   , -75.8916
+1671.1  , -500   , -72.3294
+1671.1  , -475   , -68.7519
+1671.1  , -450   , -65.1591
+1671.1  , -425   , -61.5519
+1671.1  , -400   , -57.9285
+1671.1  , -375   , -54.2907
+1671.1  , -350   , -50.6376
+1671.1  , -325   , -46.9692
+1671.1  , -300   , -43.2864
+1671.1  , -275   , -39.5874
+1671.1  , -250   , -35.874
+1671.1  , -225   , -32.1453
+1671.1  , -200   , -28.4013
+1671.1  , -175   , -24.6429
+1671.1  , -150   , -20.8683
+1671.1  , -125   , -17.0793
+1671.1  , -100   , -13.275
+1671.1  , -75    , -9.4554
+1671.1  , -50    , -5.62077
+1671.1  , -25    , -1.77102
+1671.1  , 0      , 2.17224
+1671.1  , 25     , 6.19884
+1671.1  , 50     , 10.2411
+1671.1  , 75     , 14.2983
+1671.1  , 100    , 18.3717
+1671.1  , 125    , 22.4595
+1671.1  , 150    , 26.5635
+1671.1  , 175    , 30.6828
+1671.1  , 200    , 34.8174
+1671.1  , 225    , 38.9673
+1671.1  , 250    , 43.1334
+1671.1  , 275    , 47.3139
+1671.1  , 300    , 51.5106
+1671.1  , 325    , 55.7226
+1671.1  , 350    , 59.9499
+1671.1  , 375    , 64.1925
+1671.1  , 400    , 68.4504
+1671.1  , 425    , 72.7245
+1671.1  , 450    , 77.013
+1671.1  , 475    , 81.3177
+1671.1  , 500    , 85.6377
+1671.1  , 525    , 89.973
+1671.1  , 550    , 94.32
+1671.1  , 575    , 98.694
+1671.1  , 600    , 103.068
+1671.1  , 625    , 107.469
+1671.1  , 650    , 111.879
+1671.1  , 675    , 116.307
+1671.1  , 700    , 120.753
+1671.1  , 725    , 125.208
+1671.1  , 750    , 129.69
+1671.1  , 775    , 134.172
+1671.1  , 800    , 138.681
+1909.9  , -800   , -131.454
+1909.9  , -775   , -127.503
+1909.9  , -750   , -123.534
+1909.9  , -725   , -119.547
+1909.9  , -700   , -115.551
+1909.9  , -675   , -111.537
+1909.9  , -650   , -107.505
+1909.9  , -625   , -103.464
+1909.9  , -600   , -99.405
+1909.9  , -575   , -95.328
+1909.9  , -550   , -91.242
+1909.9  , -525   , -87.1362
+1909.9  , -500   , -83.0169
+1909.9  , -475   , -78.8814
+1909.9  , -450   , -74.7315
+1909.9  , -425   , -70.5663
+1909.9  , -400   , -66.3867
+1909.9  , -375   , -62.1909
+1909.9  , -350   , -57.9807
+1909.9  , -325   , -53.7552
+1909.9  , -300   , -49.5144
+1909.9  , -275   , -45.2583
+1909.9  , -250   , -40.9878
+1909.9  , -225   , -36.7011
+1909.9  , -200   , -32.4
+1909.9  , -175   , -28.0836
+1909.9  , -150   , -23.7519
+1909.9  , -125   , -19.4058
+1909.9  , -100   , -15.0435
+1909.9  , -75    , -10.6668
+1909.9  , -50    , -6.27462
+1909.9  , -25    , -1.86741
+1909.9  , 0      , 2.6451
+1909.9  , 25     , 7.24041
+1909.9  , 50     , 11.8512
+1909.9  , 75     , 16.4772
+1909.9  , 100    , 21.1194
+1909.9  , 125    , 25.776
+1909.9  , 150    , 30.4488
+1909.9  , 175    , 35.1369
+1909.9  , 200    , 39.8403
+1909.9  , 225    , 44.559
+1909.9  , 250    , 49.293
+1909.9  , 275    , 54.0423
+1909.9  , 300    , 58.8078
+1909.9  , 325    , 63.5886
+1909.9  , 350    , 68.3847
+1909.9  , 375    , 73.1961
+1909.9  , 400    , 78.0228
+1909.9  , 425    , 82.8648
+1909.9  , 450    , 87.723
+1909.9  , 475    , 92.592
+1909.9  , 500    , 97.488
+1909.9  , 525    , 102.393
+1909.9  , 550    , 107.307
+1909.9  , 575    , 112.239
+1909.9  , 600    , 117.189
+1909.9  , 625    , 122.157
+1909.9  , 650    , 127.143
+1909.9  , 675    , 132.138
+1909.9  , 700    , 137.151
+1909.9  , 725    , 142.173
+1909.9  , 750    , 147.222
+1909.9  , 775    , 152.28
+1909.9  , 800    , 157.356
+2148.6  , -800   , -148.788
+2148.6  , -775   , -144.279
+2148.6  , -750   , -139.752
+2148.6  , -725   , -135.216
+2148.6  , -700   , -130.653
+2148.6  , -675   , -126.09
+2148.6  , -650   , -121.5
+2148.6  , -625   , -116.901
+2148.6  , -600   , -112.284
+2148.6  , -575   , -107.649
+2148.6  , -550   , -103.005
+2148.6  , -525   , -98.343
+2148.6  , -500   , -93.663
+2148.6  , -475   , -88.9713
+2148.6  , -450   , -84.2634
+2148.6  , -425   , -79.5411
+2148.6  , -400   , -74.8035
+2148.6  , -375   , -70.0506
+2148.6  , -350   , -65.2824
+2148.6  , -325   , -60.4998
+2148.6  , -300   , -55.7019
+2148.6  , -275   , -50.8878
+2148.6  , -250   , -46.0593
+2148.6  , -225   , -41.2164
+2148.6  , -200   , -36.3573
+2148.6  , -175   , -31.4838
+2148.6  , -150   , -26.595
+2148.6  , -125   , -21.6909
+2148.6  , -100   , -16.7715
+2148.6  , -75    , -11.8368
+2148.6  , -50    , -6.88752
+2148.6  , -25    , -1.92285
+2148.6  , 0      , 3.15972
+2148.6  , 25     , 8.32374
+2148.6  , 50     , 13.5036
+2148.6  , 75     , 18.6984
+2148.6  , 100    , 23.9085
+2148.6  , 125    , 29.1339
+2148.6  , 150    , 34.3755
+2148.6  , 175    , 39.6324
+2148.6  , 200    , 44.9037
+2148.6  , 225    , 50.1912
+2148.6  , 250    , 55.4949
+2148.6  , 275    , 60.813
+2148.6  , 300    , 66.1464
+2148.6  , 325    , 71.496
+2148.6  , 350    , 76.8609
+2148.6  , 375    , 82.2411
+2148.6  , 400    , 87.6366
+2148.6  , 425    , 93.051
+2148.6  , 450    , 98.478
+2148.6  , 475    , 103.914
+2148.6  , 500    , 109.377
+2148.6  , 525    , 114.849
+2148.6  , 550    , 120.33
+2148.6  , 575    , 125.838
+2148.6  , 600    , 131.355
+2148.6  , 625    , 136.89
+2148.6  , 650    , 142.443
+2148.6  , 675    , 148.005
+2148.6  , 700    , 153.585
+2148.6  , 725    , 159.183
+2148.6  , 750    , 164.799
+2148.6  , 775    , 170.424
+2148.6  , 800    , 176.067
+2387.3  , -800   , -166.086
+2387.3  , -775   , -161.019
+2387.3  , -750   , -155.934
+2387.3  , -725   , -150.831
+2387.3  , -700   , -145.719
+2387.3  , -675   , -140.589
+2387.3  , -650   , -135.45
+2387.3  , -625   , -130.293
+2387.3  , -600   , -125.118
+2387.3  , -575   , -119.925
+2387.3  , -550   , -114.723
+2387.3  , -525   , -109.503
+2387.3  , -500   , -104.265
+2387.3  , -475   , -99.018
+2387.3  , -450   , -93.753
+2387.3  , -425   , -88.4745
+2387.3  , -400   , -83.1789
+2387.3  , -375   , -77.8689
+2387.3  , -350   , -72.5436
+2387.3  , -325   , -67.203
+2387.3  , -300   , -61.848
+2387.3  , -275   , -56.4768
+2387.3  , -250   , -51.0912
+2387.3  , -225   , -45.6903
+2387.3  , -200   , -40.2741
+2387.3  , -175   , -34.8426
+2387.3  , -150   , -29.3958
+2387.3  , -125   , -23.9346
+2387.3  , -100   , -18.4581
+2387.3  , -75    , -12.9663
+2387.3  , -50    , -7.45938
+2387.3  , -25    , -1.93734
+2387.3  , 0      , 3.71619
+2387.3  , 25     , 9.4491
+2387.3  , 50     , 15.1974
+2387.3  , 75     , 20.961
+2387.3  , 100    , 26.7399
+2387.3  , 125    , 32.5341
+2387.3  , 150    , 38.3436
+2387.3  , 175    , 44.1693
+2387.3  , 200    , 50.0103
+2387.3  , 225    , 55.8666
+2387.3  , 250    , 61.7382
+2387.3  , 275    , 67.6251
+2387.3  , 300    , 73.5273
+2387.3  , 325    , 79.4457
+2387.3  , 350    , 85.3785
+2387.3  , 375    , 91.332
+2387.3  , 400    , 97.29
+2387.3  , 425    , 103.275
+2387.3  , 450    , 109.269
+2387.3  , 475    , 115.281
+2387.3  , 500    , 121.302
+2387.3  , 525    , 127.341
+2387.3  , 550    , 133.398
+2387.3  , 575    , 139.473
+2387.3  , 600    , 145.566
+2387.3  , 625    , 151.668
+2387.3  , 650    , 157.779
+2387.3  , 675    , 163.917
+2387.3  , 700    , 170.064
+2387.3  , 725    , 176.229
+2387.3  , 750    , 182.412
+2387.3  , 775    , 188.604
+2387.3  , 800    , 194.823
+2626.1  , -800   , -183.339
+2626.1  , -775   , -177.714
+2626.1  , -750   , -172.071
+2626.1  , -725   , -166.419
+2626.1  , -700   , -160.749
+2626.1  , -675   , -155.061
+2626.1  , -650   , -149.355
+2626.1  , -625   , -143.64
+2626.1  , -600   , -137.907
+2626.1  , -575   , -132.165
+2626.1  , -550   , -126.405
+2626.1  , -525   , -120.627
+2626.1  , -500   , -114.831
+2626.1  , -475   , -109.026
+2626.1  , -450   , -103.203
+2626.1  , -425   , -97.371
+2626.1  , -400   , -91.512
+2626.1  , -375   , -85.6467
+2626.1  , -350   , -79.7634
+2626.1  , -325   , -73.8657
+2626.1  , -300   , -67.9527
+2626.1  , -275   , -62.0244
+2626.1  , -250   , -56.0817
+2626.1  , -225   , -50.1228
+2626.1  , -200   , -44.1495
+2626.1  , -175   , -38.1609
+2626.1  , -150   , -32.157
+2626.1  , -125   , -26.1378
+2626.1  , -100   , -20.1042
+2626.1  , -75    , -14.0544
+2626.1  , -50    , -7.99029
+2626.1  , -25    , -1.91079
+2626.1  , 0      , 4.31442
+2626.1  , 25     , 10.6155
+2626.1  , 50     , 16.9326
+2626.1  , 75     , 23.265
+2626.1  , 100    , 29.6127
+2626.1  , 125    , 35.9757
+2626.1  , 150    , 42.354
+2626.1  , 175    , 48.7485
+2626.1  , 200    , 55.1583
+2626.1  , 225    , 61.5825
+2626.1  , 250    , 68.0229
+2626.1  , 275    , 74.4786
+2626.1  , 300    , 80.9505
+2626.1  , 325    , 87.4368
+2626.1  , 350    , 93.942
+2626.1  , 375    , 100.458
+2626.1  , 400    , 106.992
+2626.1  , 425    , 113.535
+2626.1  , 450    , 120.105
+2626.1  , 475    , 126.684
+2626.1  , 500    , 133.272
+2626.1  , 525    , 139.887
+2626.1  , 550    , 146.511
+2626.1  , 575    , 153.153
+2626.1  , 600    , 159.813
+2626.1  , 625    , 166.482
+2626.1  , 650    , 173.169
+2626.1  , 675    , 179.874
+2626.1  , 700    , 186.588
+2626.1  , 725    , 193.32
+2626.1  , 750    , 200.07
+2626.1  , 775    , 206.838
+2626.1  , 800    , 213.615
+2864.8  , -800   , -200.556
+2864.8  , -775   , -194.373
+2864.8  , -750   , -188.172
+2864.8  , -725   , -181.962
+2864.8  , -700   , -175.725
+2864.8  , -675   , -169.488
+2864.8  , -650   , -163.224
+2864.8  , -625   , -156.951
+2864.8  , -600   , -150.66
+2864.8  , -575   , -144.36
+2864.8  , -550   , -138.042
+2864.8  , -525   , -131.706
+2864.8  , -500   , -125.361
+2864.8  , -475   , -118.989
+2864.8  , -450   , -112.617
+2864.8  , -425   , -106.218
+2864.8  , -400   , -99.81
+2864.8  , -375   , -93.384
+2864.8  , -350   , -86.9427
+2864.8  , -325   , -80.4879
+2864.8  , -300   , -74.0169
+2864.8  , -275   , -67.5315
+2864.8  , -250   , -61.0308
+2864.8  , -225   , -54.5148
+2864.8  , -200   , -47.9835
+2864.8  , -175   , -41.4378
+2864.8  , -150   , -34.8768
+2864.8  , -125   , -28.3005
+2864.8  , -100   , -21.7089
+2864.8  , -75    , -15.102
+2864.8  , -50    , -8.48025
+2864.8  , -25    , -1.84329
+2864.8  , 0      , 4.9545
+2864.8  , 25     , 11.8242
+2864.8  , 50     , 18.7101
+2864.8  , 75     , 25.6113
+2864.8  , 100    , 32.5278
+2864.8  , 125    , 39.4596
+2864.8  , 150    , 46.4067
+2864.8  , 175    , 53.3691
+2864.8  , 200    , 60.3477
+2864.8  , 225    , 67.3407
+2864.8  , 250    , 74.3499
+2864.8  , 275    , 81.3744
+2864.8  , 300    , 88.4142
+2864.8  , 325    , 95.472
+2864.8  , 350    , 102.537
+2864.8  , 375    , 109.629
+2864.8  , 400    , 116.73
+2864.8  , 425    , 123.849
+2864.8  , 450    , 130.977
+2864.8  , 475    , 138.123
+2864.8  , 500    , 145.287
+2864.8  , 525    , 152.469
+2864.8  , 550    , 159.66
+2864.8  , 575    , 166.869
+2864.8  , 600    , 174.096
+2864.8  , 625    , 181.341
+2864.8  , 650    , 188.595
+2864.8  , 675    , 195.867
+2864.8  , 700    , 203.148
+2864.8  , 725    , 210.456
+2864.8  , 750    , 217.773
+2864.8  , 775    , 225.108
+2864.8  , 800    , 232.452
+3103.5  , -800   , -217.728
+3103.5  , -775   , -210.987
+3103.5  , -750   , -204.228
+3103.5  , -725   , -197.46
+3103.5  , -700   , -190.674
+3103.5  , -675   , -183.87
+3103.5  , -650   , -177.057
+3103.5  , -625   , -170.226
+3103.5  , -600   , -163.377
+3103.5  , -575   , -156.519
+3103.5  , -550   , -149.643
+3103.5  , -525   , -142.749
+3103.5  , -500   , -135.837
+3103.5  , -475   , -128.916
+3103.5  , -450   , -121.977
+3103.5  , -425   , -115.029
+3103.5  , -400   , -108.063
+3103.5  , -375   , -101.079
+3103.5  , -350   , -94.077
+3103.5  , -325   , -87.0687
+3103.5  , -300   , -80.0406
+3103.5  , -275   , -72.9972
+3103.5  , -250   , -65.9394
+3103.5  , -225   , -58.8663
+3103.5  , -200   , -51.7779
+3103.5  , -175   , -44.6742
+3103.5  , -150   , -37.5552
+3103.5  , -125   , -30.4218
+3103.5  , -100   , -23.2722
+3103.5  , -75    , -16.1082
+3103.5  , -50    , -8.92917
+3103.5  , -25    , -1.73484
+3103.5  , 0      , 5.63634
+3103.5  , 25     , 13.0752
+3103.5  , 50     , 20.529
+3103.5  , 75     , 27.999
+3103.5  , 100    , 35.4843
+3103.5  , 125    , 42.9849
+3103.5  , 150    , 50.5008
+3103.5  , 175    , 58.032
+3103.5  , 200    , 65.5785
+3103.5  , 225    , 73.1412
+3103.5  , 250    , 80.7192
+3103.5  , 275    , 88.3125
+3103.5  , 300    , 95.922
+3103.5  , 325    , 103.545
+3103.5  , 350    , 111.186
+3103.5  , 375    , 118.836
+3103.5  , 400    , 126.513
+3103.5  , 425    , 134.199
+3103.5  , 450    , 141.894
+3103.5  , 475    , 149.616
+3103.5  , 500    , 157.347
+3103.5  , 525    , 165.096
+3103.5  , 550    , 172.854
+3103.5  , 575    , 180.63
+3103.5  , 600    , 188.424
+3103.5  , 625    , 196.236
+3103.5  , 650    , 204.066
+3103.5  , 675    , 211.905
+3103.5  , 700    , 219.753
+3103.5  , 725    , 227.628
+3103.5  , 750    , 235.512
+3103.5  , 775    , 243.414
+3103.5  , 800    , 251.334
+3342.3  , -800   , -234.855
+3342.3  , -775   , -227.556
+3342.3  , -750   , -220.248
+3342.3  , -725   , -212.913
+3342.3  , -700   , -205.569
+3342.3  , -675   , -198.216
+3342.3  , -650   , -190.845
+3342.3  , -625   , -183.456
+3342.3  , -600   , -176.049
+3342.3  , -575   , -168.633
+3342.3  , -550   , -161.199
+3342.3  , -525   , -153.747
+3342.3  , -500   , -146.286
+3342.3  , -475   , -138.798
+3342.3  , -450   , -131.31
+3342.3  , -425   , -123.795
+3342.3  , -400   , -116.271
+3342.3  , -375   , -108.729
+3342.3  , -350   , -101.178
+3342.3  , -325   , -93.609
+3342.3  , -300   , -86.0229
+3342.3  , -275   , -78.4224
+3342.3  , -250   , -70.8066
+3342.3  , -225   , -63.1755
+3342.3  , -200   , -55.53
+3342.3  , -175   , -47.8692
+3342.3  , -150   , -40.1931
+3342.3  , -125   , -32.5017
+3342.3  , -100   , -24.795
+3342.3  , -75    , -17.0739
+3342.3  , -50    , -9.3375
+3342.3  , -25    , -1.58544
+3342.3  , 0      , 6.36003
+3342.3  , 25     , 14.3676
+3342.3  , 50     , 22.3902
+3342.3  , 75     , 30.429
+3342.3  , 100    , 38.4822
+3342.3  , 125    , 46.5516
+3342.3  , 150    , 54.6363
+3342.3  , 175    , 62.7363
+3342.3  , 200    , 70.8525
+3342.3  , 225    , 78.9831
+3342.3  , 250    , 87.1299
+3342.3  , 275    , 95.292
+3342.3  , 300    , 103.473
+3342.3  , 325    , 111.663
+3342.3  , 350    , 119.871
+3342.3  , 375    , 128.097
+3342.3  , 400    , 136.332
+3342.3  , 425    , 144.585
+3342.3  , 450    , 152.856
+3342.3  , 475    , 161.145
+3342.3  , 500    , 169.443
+3342.3  , 525    , 177.759
+3342.3  , 550    , 186.093
+3342.3  , 575    , 194.436
+3342.3  , 600    , 202.797
+3342.3  , 625    , 211.176
+3342.3  , 650    , 219.573
+3342.3  , 675    , 227.979
+3342.3  , 700    , 236.403
+3342.3  , 725    , 244.845
+3342.3  , 750    , 253.296
+3342.3  , 775    , 261.774
+3342.3  , 800    , 270.252
+3581    , -800   , -251.946
+3581    , -775   , -244.089
+3581    , -750   , -236.223
+3581    , -725   , -228.33
+3581    , -700   , -220.437
+3581    , -675   , -212.517
+3581    , -650   , -204.588
+3581    , -625   , -196.641
+3581    , -600   , -188.676
+3581    , -575   , -180.702
+3581    , -550   , -172.71
+3581    , -525   , -164.7
+3581    , -500   , -156.681
+3581    , -475   , -148.644
+3581    , -450   , -140.598
+3581    , -425   , -132.525
+3581    , -400   , -124.443
+3581    , -375   , -116.343
+3581    , -350   , -108.234
+3581    , -325   , -100.107
+3581    , -300   , -91.962
+3581    , -275   , -83.8062
+3581    , -250   , -75.6333
+3581    , -225   , -67.4451
+3581    , -200   , -59.2416
+3581    , -175   , -51.0237
+3581    , -150   , -42.7896
+3581    , -125   , -34.5411
+3581    , -100   , -26.2773
+3581    , -75    , -17.9982
+3581    , -50    , -9.7038
+3581    , -25    , -1.395
+3581    , 0      , 7.12548
+3581    , 25     , 15.7014
+3581    , 50     , 24.2937
+3581    , 75     , 32.9004
+3581    , 100    , 41.5224
+3581    , 125    , 50.1606
+3581    , 150    , 58.8141
+3581    , 175    , 67.4829
+3581    , 200    , 76.167
+3581    , 225    , 84.8664
+3581    , 250    , 93.582
+3581    , 275    , 102.312
+3581    , 300    , 111.06
+3581    , 325    , 119.817
+3581    , 350    , 128.601
+3581    , 375    , 137.385
+3581    , 400    , 146.196
+3581    , 425    , 155.016
+3581    , 450    , 163.854
+3581    , 475    , 172.71
+3581    , 500    , 181.584
+3581    , 525    , 190.467
+3581    , 550    , 199.368
+3581    , 575    , 208.287
+3581    , 600    , 217.215
+3581    , 625    , 226.161
+3581    , 650    , 235.125
+3581    , 675    , 244.098
+3581    , 700    , 253.089
+3581    , 725    , 262.098
+3581    , 750    , 271.125
+3581    , 775    , 280.161
+3581    , 800    , 289.215
+3819.7  , -800   , -268.992
+3819.7  , -775   , -260.577
+3819.7  , -750   , -252.153
+3819.7  , -725   , -243.711
+3819.7  , -700   , -235.251
+3819.7  , -675   , -226.782
+3819.7  , -650   , -218.286
+3819.7  , -625   , -209.79
+3819.7  , -600   , -201.267
+3819.7  , -575   , -192.735
+3819.7  , -550   , -184.185
+3819.7  , -525   , -175.626
+3819.7  , -500   , -167.04
+3819.7  , -475   , -158.445
+3819.7  , -450   , -149.841
+3819.7  , -425   , -141.21
+3819.7  , -400   , -132.57
+3819.7  , -375   , -123.921
+3819.7  , -350   , -115.254
+3819.7  , -325   , -106.569
+3819.7  , -300   , -97.866
+3819.7  , -275   , -89.1495
+3819.7  , -250   , -80.4186
+3819.7  , -225   , -71.6733
+3819.7  , -200   , -62.9127
+3819.7  , -175   , -54.1368
+3819.7  , -150   , -45.3456
+3819.7  , -125   , -36.5391
+3819.7  , -100   , -27.7182
+3819.7  , -75    , -18.882
+3819.7  , -50    , -10.0305
+3819.7  , -25    , -1.16361
+3819.7  , 0      , 7.93269
+3819.7  , 25     , 17.0775
+3819.7  , 50     , 26.2377
+3819.7  , 75     , 35.4132
+3819.7  , 100    , 44.6049
+3819.7  , 125    , 53.811
+3819.7  , 150    , 63.0333
+3819.7  , 175    , 72.2709
+3819.7  , 200    , 81.5238
+3819.7  , 225    , 90.792
+3819.7  , 250    , 100.08
+3819.7  , 275    , 109.377
+3819.7  , 300    , 118.692
+3819.7  , 325    , 128.016
+3819.7  , 350    , 137.367
+3819.7  , 375    , 146.727
+3819.7  , 400    , 156.105
+3819.7  , 425    , 165.492
+3819.7  , 450    , 174.906
+3819.7  , 475    , 184.329
+3819.7  , 500    , 193.761
+3819.7  , 525    , 203.22
+3819.7  , 550    , 212.688
+3819.7  , 575    , 222.174
+3819.7  , 600    , 231.669
+3819.7  , 625    , 241.182
+3819.7  , 650    , 250.713
+3819.7  , 675    , 260.262
+3819.7  , 700    , 269.82
+3819.7  , 725    , 279.405
+3819.7  , 750    , 288.99
+3819.7  , 775    , 298.602
+3819.7  , 800    , 308.223
+4058.5  , -800   , -286.002
+4058.5  , -775   , -277.029
+4058.5  , -750   , -268.047
+4058.5  , -725   , -259.047
+4058.5  , -700   , -250.029
+4058.5  , -675   , -241.002
+4058.5  , -650   , -231.957
+4058.5  , -625   , -222.894
+4058.5  , -600   , -213.813
+4058.5  , -575   , -204.723
+4058.5  , -550   , -195.615
+4058.5  , -525   , -186.498
+4058.5  , -500   , -177.363
+4058.5  , -475   , -168.21
+4058.5  , -450   , -159.039
+4058.5  , -425   , -149.859
+4058.5  , -400   , -140.661
+4058.5  , -375   , -131.454
+4058.5  , -350   , -122.22
+4058.5  , -325   , -112.977
+4058.5  , -300   , -103.725
+4058.5  , -275   , -94.455
+4058.5  , -250   , -85.1634
+4058.5  , -225   , -75.8601
+4058.5  , -200   , -66.5424
+4058.5  , -175   , -57.2085
+4058.5  , -150   , -47.8602
+4058.5  , -125   , -38.4966
+4058.5  , -100   , -29.1177
+4058.5  , -75    , -19.7244
+4058.5  , -50    , -10.3158
+4058.5  , -25    , -0.891288
+4058.5  , 0      , 8.78175
+4058.5  , 25     , 18.495
+4058.5  , 50     , 28.224
+4058.5  , 75     , 37.9692
+4058.5  , 100    , 47.7288
+4058.5  , 125    , 57.5037
+4058.5  , 150    , 67.2948
+4058.5  , 175    , 77.1012
+4058.5  , 200    , 86.9229
+4058.5  , 225    , 96.759
+4058.5  , 250    , 106.614
+4058.5  , 275    , 116.478
+4058.5  , 300    , 126.36
+4058.5  , 325    , 136.26
+4058.5  , 350    , 146.178
+4058.5  , 375    , 156.105
+4058.5  , 400    , 166.05
+4058.5  , 425    , 176.013
+4058.5  , 450    , 185.985
+4058.5  , 475    , 195.975
+4058.5  , 500    , 205.983
+4058.5  , 525    , 216.009
+4058.5  , 550    , 226.044
+4058.5  , 575    , 236.097
+4058.5  , 600    , 246.168
+4058.5  , 625    , 256.248
+4058.5  , 650    , 266.355
+4058.5  , 675    , 276.462
+4058.5  , 700    , 286.596
+4058.5  , 725    , 296.739
+4058.5  , 750    , 306.9
+4058.5  , 775    , 317.079
+4058.5  , 800    , 327.276
+4297.2  , -800   , -302.967
+4297.2  , -775   , -293.445
+4297.2  , -750   , -283.896
+4297.2  , -725   , -274.338
+4297.2  , -700   , -264.771
+4297.2  , -675   , -255.177
+4297.2  , -650   , -245.574
+4297.2  , -625   , -235.962
+4297.2  , -600   , -226.323
+4297.2  , -575   , -216.675
+4297.2  , -550   , -207.009
+4297.2  , -525   , -197.334
+4297.2  , -500   , -187.641
+4297.2  , -475   , -177.93
+4297.2  , -450   , -168.21
+4297.2  , -425   , -158.463
+4297.2  , -400   , -148.716
+4297.2  , -375   , -138.942
+4297.2  , -350   , -129.159
+4297.2  , -325   , -119.358
+4297.2  , -300   , -109.539
+4297.2  , -275   , -99.711
+4297.2  , -250   , -89.8668
+4297.2  , -225   , -80.0064
+4297.2  , -200   , -70.1307
+4297.2  , -175   , -60.2397
+4297.2  , -150   , -50.3343
+4297.2  , -125   , -40.4136
+4297.2  , -100   , -30.4767
+4297.2  , -75    , -20.5254
+4297.2  , -50    , -10.5597
+4297.2  , -25    , -0.577971
+4297.2  , 0      , 9.6723
+4297.2  , 25     , 19.9548
+4297.2  , 50     , 30.2526
+4297.2  , 75     , 40.5657
+4297.2  , 100    , 50.8941
+4297.2  , 125    , 61.2387
+4297.2  , 150    , 71.5977
+4297.2  , 175    , 81.9729
+4297.2  , 200    , 92.367
+4297.2  , 225    , 102.771
+4297.2  , 250    , 113.193
+4297.2  , 275    , 123.624
+4297.2  , 300    , 134.082
+4297.2  , 325    , 144.549
+4297.2  , 350    , 155.025
+4297.2  , 375    , 165.528
+4297.2  , 400    , 176.04
+4297.2  , 425    , 186.57
+4297.2  , 450    , 197.118
+4297.2  , 475    , 207.675
+4297.2  , 500    , 218.25
+4297.2  , 525    , 228.843
+4297.2  , 550    , 239.445
+4297.2  , 575    , 250.074
+4297.2  , 600    , 260.703
+4297.2  , 625    , 271.359
+4297.2  , 650    , 282.024
+4297.2  , 675    , 292.707
+4297.2  , 700    , 303.408
+4297.2  , 725    , 314.127
+4297.2  , 750    , 324.855
+4297.2  , 775    , 335.601
+4297.2  , 800    , 346.365
+4535.9  , -800   , -319.896
+4535.9  , -775   , -309.807
+4535.9  , -750   , -299.709
+4535.9  , -725   , -289.593
+4535.9  , -700   , -279.468
+4535.9  , -675   , -269.316
+4535.9  , -650   , -259.155
+4535.9  , -625   , -248.985
+4535.9  , -600   , -238.788
+4535.9  , -575   , -228.582
+4535.9  , -550   , -218.367
+4535.9  , -525   , -208.125
+4535.9  , -500   , -197.874
+4535.9  , -475   , -187.605
+4535.9  , -450   , -177.327
+4535.9  , -425   , -167.031
+4535.9  , -400   , -156.717
+4535.9  , -375   , -146.394
+4535.9  , -350   , -136.053
+4535.9  , -325   , -125.694
+4535.9  , -300   , -115.317
+4535.9  , -275   , -104.931
+4535.9  , -250   , -94.527
+4535.9  , -225   , -84.1113
+4535.9  , -200   , -73.6785
+4535.9  , -175   , -63.2304
+4535.9  , -150   , -52.767
+4535.9  , -125   , -42.2883
+4535.9  , -100   , -31.7952
+4535.9  , -75    , -21.2868
+4535.9  , -50    , -10.7622
+4535.9  , -25    , -0.223695
+4535.9  , 0      , 10.6056
+4535.9  , 25     , 21.456
+4535.9  , 50     , 32.3226
+4535.9  , 75     , 43.2045
+4535.9  , 100    , 54.1017
+4535.9  , 125    , 65.0142
+4535.9  , 150    , 75.9429
+4535.9  , 175    , 86.886
+4535.9  , 200    , 97.848
+4535.9  , 225    , 108.819
+4535.9  , 250    , 119.808
+4535.9  , 275    , 130.815
+4535.9  , 300    , 141.831
+4535.9  , 325    , 152.874
+4535.9  , 350    , 163.926
+4535.9  , 375    , 174.987
+4535.9  , 400    , 186.075
+4535.9  , 425    , 197.172
+4535.9  , 450    , 208.287
+4535.9  , 475    , 219.411
+4535.9  , 500    , 230.553
+4535.9  , 525    , 241.713
+4535.9  , 550    , 252.891
+4535.9  , 575    , 264.078
+4535.9  , 600    , 275.292
+4535.9  , 625    , 286.506
+4535.9  , 650    , 297.747
+4535.9  , 675    , 308.997
+4535.9  , 700    , 320.265
+4535.9  , 725    , 331.551
+4535.9  , 750    , 342.846
+4535.9  , 775    , 354.159
+4535.9  , 800    , 365.49
+4774.6  , -800   , -336.78
+4774.6  , -775   , -326.142
+4774.6  , -750   , -315.477
+4774.6  , -725   , -304.803
+4774.6  , -700   , -294.12
+4774.6  , -675   , -283.419
+4774.6  , -650   , -272.7
+4774.6  , -625   , -261.963
+4774.6  , -600   , -251.217
+4774.6  , -575   , -240.453
+4774.6  , -550   , -229.671
+4774.6  , -525   , -218.88
+4774.6  , -500   , -208.071
+4774.6  , -475   , -197.244
+4774.6  , -450   , -186.408
+4774.6  , -425   , -175.554
+4774.6  , -400   , -164.682
+4774.6  , -375   , -153.801
+4774.6  , -350   , -142.902
+4774.6  , -325   , -131.985
+4774.6  , -300   , -121.059
+4774.6  , -275   , -110.115
+4774.6  , -250   , -99.153
+4774.6  , -225   , -88.1757
+4774.6  , -200   , -77.1849
+4774.6  , -175   , -66.1797
+4774.6  , -150   , -55.1592
+4774.6  , -125   , -44.1234
+4774.6  , -100   , -33.0723
+4774.6  , -75    , -22.0059
+4774.6  , -50    , -10.9251
+4774.6  , -25    , 0.175491
+4774.6  , 0      , 11.5794
+4774.6  , 25     , 22.9995
+4774.6  , 50     , 34.434
+4774.6  , 75     , 45.8847
+4774.6  , 100    , 57.3507
+4774.6  , 125    , 68.832
+4774.6  , 150    , 80.3295
+4774.6  , 175    , 91.845
+4774.6  , 200    , 103.365
+4774.6  , 225    , 114.912
+4774.6  , 250    , 126.468
+4774.6  , 275    , 138.042
+4774.6  , 300    , 149.634
+4774.6  , 325    , 161.235
+4774.6  , 350    , 172.863
+4774.6  , 375    , 184.491
+4774.6  , 400    , 196.146
+4774.6  , 425    , 207.81
+4774.6  , 450    , 219.492
+4774.6  , 475    , 231.192
+4774.6  , 500    , 242.901
+4774.6  , 525    , 254.637
+4774.6  , 550    , 266.373
+4774.6  , 575    , 278.136
+4774.6  , 600    , 289.908
+4774.6  , 625    , 301.698
+4774.6  , 650    , 313.506
+4774.6  , 675    , 325.332
+4774.6  , 700    , 337.167
+4774.6  , 725    , 349.02
+4774.6  , 750    , 360.882
+4774.6  , 775    , 372.762
+4774.6  , 800    , 384.66
+4994.3  , -800   , -352.278
+4994.3  , -775   , -341.127
+4994.3  , -750   , -329.949
+4994.3  , -725   , -318.771
+4994.3  , -700   , -307.566
+4994.3  , -675   , -296.352
+4994.3  , -650   , -285.12
+4994.3  , -625   , -273.87
+4994.3  , -600   , -262.611
+4994.3  , -575   , -251.334
+4994.3  , -550   , -240.048
+4994.3  , -525   , -228.735
+4994.3  , -500   , -217.413
+4994.3  , -475   , -206.082
+4994.3  , -450   , -194.724
+4994.3  , -425   , -183.357
+4994.3  , -400   , -171.981
+4994.3  , -375   , -160.578
+4994.3  , -350   , -149.166
+4994.3  , -325   , -137.736
+4994.3  , -300   , -126.297
+4994.3  , -275   , -114.84
+4994.3  , -250   , -103.365
+4994.3  , -225   , -91.881
+4994.3  , -200   , -80.3754
+4994.3  , -175   , -68.8572
+4994.3  , -150   , -57.3237
+4994.3  , -125   , -45.7749
+4994.3  , -100   , -34.2108
+4994.3  , -75    , -22.6323
+4994.3  , -50    , -11.0376
+4994.3  , -25    , 0.585693
+4994.3  , 0      , 12.5127
+4994.3  , 25     , 24.4557
+4994.3  , 50     , 36.414
+4994.3  , 75     , 48.3876
+4994.3  , 100    , 60.3774
+4994.3  , 125    , 72.3816
+4994.3  , 150    , 84.402
+4994.3  , 175    , 96.435
+4994.3  , 200    , 108.486
+4994.3  , 225    , 120.555
+4994.3  , 250    , 132.633
+4994.3  , 275    , 144.729
+4994.3  , 300    , 156.843
+4994.3  , 325    , 168.975
+4994.3  , 350    , 181.116
+4994.3  , 375    , 193.275
+4994.3  , 400    , 205.452
+4994.3  , 425    , 217.638
+4994.3  , 450    , 229.842
+4994.3  , 475    , 242.064
+4994.3  , 500    , 254.304
+4994.3  , 525    , 266.553
+4994.3  , 550    , 278.82
+4994.3  , 575    , 291.105
+4994.3  , 600    , 303.399
+4994.3  , 625    , 315.711
+4994.3  , 650    , 328.041
+4994.3  , 675    , 340.389
+4994.3  , 700    , 352.746
+4994.3  , 725    , 365.121
+4994.3  , 750    , 377.514
+4994.3  , 775    , 389.916
+4994.3  , 800    , 402.336
diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
index 7cf855a0fa..c60edb48e0 100644
--- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
@@ -634,6 +634,12 @@
     <None Include="TestData\Hybrids\ElectricMotor\GenericDrag.vemd">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="TestData\Hybrids\ElectricMotor\GenericDragHV.vemd">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\ElectricMotor\GenericEMotorHV.vemp">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
     <None Include="TestData\Hybrids\ElectricMotor\GenericEMotorV2.vem">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
@@ -649,6 +655,9 @@
     <None Include="TestData\Hybrids\ElectricMotor\GenericEMotor240kW.vemp">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="TestData\Hybrids\ElectricMotor\GenericEMotorV3.vem">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
     <None Include="TestData\Hybrids\ElectricMotor\GenericMap.vemo">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
@@ -712,6 +721,9 @@
     <None Include="TestData\Hybrids\BusAuxEngineeringMode\MT_6_Bus.vgbx">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="TestData\Hybrids\ElectricMotor\GenericMapHV.vemo">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
     <None Include="TestData\Hybrids\GenericVehicle_Group2_P2\175kW.vfld">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-- 
GitLab