diff --git a/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricMotorMapReader.cs b/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricMotorMapReader.cs index 3147743e01eac91690ebbaed4f2221cdfad11772..adc6ebccdb51d95a635eaf588eda366228c470fb 100644 --- a/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricMotorMapReader.cs +++ b/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricMotorMapReader.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; @@ -33,16 +34,28 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData { data.Columns[1].ColumnName = Fields.Torque; data.Columns[2].ColumnName = Fields.PowerElectrical; } + + var entries = (from DataRow row in data.Rows select CreateEntry(row)).ToList(); + + var speeds = entries.Select(x => x.MotorSpeed).Distinct().Where(x => x.IsGreater(0)).ToList(); + var minSpeed = speeds.OrderBy(x => x).First(); + var torques = entries.Where(x => x.MotorSpeed.IsEqual(minSpeed)).ToList(); + var delaunayMap = new DelaunayMap("ElectricMotorEfficiencyMap Mechanical to Electric"); var retVal = new EfficiencyMapNew(delaunayMap); - foreach (DataRow row in data.Rows) { + foreach (var entry in torques) { + delaunayMap.AddPoint(-entry.Torque.Value() * count, + 0, retVal.GetDelaunayZValue(entry)); + } + + foreach (var entry in entries.Where(x => x.MotorSpeed.IsGreater(0)).OrderBy(x => x.MotorSpeed) + .ThenBy(x => x.Torque)) { try { - var entry = CreateEntry(row); delaunayMap.AddPoint(-entry.Torque.Value() * count, entry.MotorSpeed.Value(), retVal.GetDelaunayZValue(entry) * count); } catch (Exception e) { - throw new VectoException($"EfficiencyMap - Line {data.Rows.IndexOf(row)}: {e.Message}", e); + throw new VectoException($"EfficiencyMap - Entry {entry}: {e.Message}", e); } } diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/EfficiencyMap.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/EfficiencyMap.cs index bc3e3ec043b722e9bd3f6e50f489865b0aa8af24..d6f5cdc1164d2dcc14dcf7d115914fe53a4fc886 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/EfficiencyMap.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/EfficiencyMap.cs @@ -12,7 +12,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricMotor public class EfficiencyMapNew : EfficiencyMap { - private static readonly PerSecond speedOffset = 0.01.RPMtoRad(); + protected internal EfficiencyMapNew(DelaunayMap efficiencyMapMech2El) : base(efficiencyMapMech2El) { } public override EfficiencyResult LookupElectricPower(PerSecond angularSpeed, NewtonMeter torque, bool allowExtrapolation = false) @@ -22,12 +22,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricMotor result.Speed = angularSpeed; var value = _efficiencyMapMech2El.Interpolate(torque, angularSpeed); if (!value.IsNaN()) { - result.ElectricalPower = value.SI<NewtonMeter>() * (angularSpeed + speedOffset) + angularSpeed * torque; + result.ElectricalPower = value.SI<NewtonMeter>() * (angularSpeed) + angularSpeed * torque; return result; } if (allowExtrapolation) { value = _efficiencyMapMech2El.Extrapolate(torque, angularSpeed); - result.ElectricalPower = value.SI<NewtonMeter>() * (angularSpeed + speedOffset) + angularSpeed * torque; + result.ElectricalPower = value.SI<NewtonMeter>() * (angularSpeed) + angularSpeed * torque; result.Extrapolated = true; return result; } @@ -36,8 +36,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricMotor public double GetDelaunayZValue(Entry entry) { + if (entry.MotorSpeed.IsEqual(0)) { + throw new VectoException("Electric motor speed has to be greater than 0"); + } return - ((entry.PowerElectrical - entry.MotorSpeed * entry.Torque) / - (entry.MotorSpeed + EfficiencyMapNew.speedOffset)).Value(); + (entry.MotorSpeed)).Value(); } } @@ -108,6 +111,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricMotor public readonly PerSecond MotorSpeed; public readonly NewtonMeter Torque; public readonly Watt PowerElectrical; + + public override string ToString() + { + return $"{MotorSpeed.AsRPM} / {Torque} / {PowerElectrical}"; + } } public class EfficiencyResult diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ElectricMotorEfficienyMapTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ElectricMotorEfficienyMapTest.cs index 52e5fed8d3b78c39ae5a28e3db559903413a2251..a482fda433d96e2398191d96f522264ee1fc7ff9 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ElectricMotorEfficienyMapTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ElectricMotorEfficienyMapTest.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; @@ -71,53 +72,17 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData { } - [TestCase(@"E:\QUAM\Downloads\VECTO-1437_E2_EM-inv_Interpolation\VECTO_model\vem_P_inverter_DC_90.vemo")] - public void TestInterpolationMethod_Proposal(string filename) - { - var speedOffset = 0.01.RPMtoRad(); - - var tbl = VectoCSVFile.Read(filename); - var delaunayMap = new DelaunayMap("ElectricMotorEfficiencyMap Test"); - foreach (DataRow row in tbl.Rows) { - var entry = new EfficiencyMap.Entry( - speed: row.ParseDouble("n").RPMtoRad(), - torque: row.ParseDouble("T").SI<NewtonMeter>(), - powerElectrical: row.ParseDouble("P_el").SI(Unit.SI.Kilo.Watt).Cast<Watt>()); - - delaunayMap.AddPoint(-entry.Torque.Value(), - (entry.MotorSpeed).Value(), - -((entry.PowerElectrical - entry.MotorSpeed * entry.Torque) / (entry.MotorSpeed + speedOffset)).Value()); - } - - delaunayMap.Triangulate(); - var emMap = new EfficiencyMap(delaunayMap); - - for (var n = 10.RPMtoRad(); n < 4000.RPMtoRad(); n += 10.RPMtoRad()) { - for (var tq = -2800.SI<NewtonMeter>(); tq <= 2800.SI<NewtonMeter>(); tq += 100.SI<NewtonMeter>()) { - if (tq.IsEqual(0)) { - continue; - } - try { - var pwr = emMap.LookupElectricPower(n, tq); - if (pwr.ElectricalPower == null) { - continue; - } - Console.WriteLine($"{pwr.Speed.AsRPM}, {pwr.Torque.Value()}, {((pwr.ElectricalPower.Value() * (pwr.Speed + speedOffset).Value()).SI<Watt>() + pwr.Speed * pwr.Torque).Value()}, {pwr.Extrapolated}, {(n * tq).Value()}"); - } catch (Exception e) { - Console.WriteLine(e.Message); - } - } - } - } - - [TestCase(@"E:\QUAM\Downloads\VECTO-1437_E2_EM-inv_Interpolation\VECTO_model\vem_P_inverter_DC_90.vemo")] - public void TestInterpolationMethod_Proposal2(string filename) + [TestCase(@"TestData\Components\ElectricMotor\vem_P_inverter_DC_90_fine.vemo", 0.8999, 0.9001), + TestCase(@"TestData\Components\ElectricMotor\vem_P_inverter_DC_90_coarse.vemo", 0.8999, 0.9001), + TestCase(@"TestData\Components\ElectricMotor\vem_P_inverter_DC_std.vemo", 0, 1)] + public void TestInterpolationMethod_Proposal2(string filename, double etaMin, double etaMax) { EfficiencyMap emMap; using (var fs = File.OpenRead(filename)) { emMap = ElectricMotorMapReaderNew.Create(fs, 1); } + var efficiencies = new List<double>(); for (var n = 10.RPMtoRad(); n < 4000.RPMtoRad(); n += 10.RPMtoRad()) { for (var tq = -2800.SI<NewtonMeter>(); tq <= 2800.SI<NewtonMeter>(); tq += 100.SI<NewtonMeter>()) { if (tq.IsEqual(0)) { @@ -129,21 +94,31 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData { continue; } Console.WriteLine($"{pwr.Speed.AsRPM}, {pwr.Torque.Value()}, {pwr.ElectricalPower.Value()}, {pwr.Extrapolated}, {(n * tq).Value()}"); + var efficiency = tq < 0 + ? pwr.Speed * pwr.Torque / pwr.ElectricalPower + : pwr.ElectricalPower / (pwr.Speed * pwr.Torque); + // set efficiencies close to 0 to exactly 0 because later assertion uses sharp bounds without tolerance + efficiencies.Add(efficiency.IsEqual(0) ? 0.0 : efficiency); } catch (Exception e) { Console.WriteLine(e.Message); } } } + + Assert.IsTrue(efficiencies.All(x => x.IsBetween(etaMin, etaMax)), $"{efficiencies.Min()} - {efficiencies.Max()}"); } - [TestCase(@"E:\QUAM\Downloads\VECTO-1437_E2_EM-inv_Interpolation\VECTO_model\vem_P_inverter_DC_90.vemo")] - public void TestInterpolationMethod_Current(string filename) + [TestCase(@"TestData\Components\ElectricMotor\vem_P_inverter_DC_90_fine.vemo", 0.8999, 0.9001), + TestCase(@"TestData\Components\ElectricMotor\vem_P_inverter_DC_90_coarse.vemo", 0.8999, 0.9001), + TestCase(@"TestData\Components\ElectricMotor\vem_P_inverter_DC_std.vemo", 0, 1)] + public void TestInterpolationMethod_Current(string filename, double etaMin, double etaMax) { EfficiencyMap emMap; using (var fs = File.OpenRead(filename)) { emMap = ElectricMotorMapReader.Create(fs, 1); } + var efficiencies = new List<double>(); for (var n = 10.RPMtoRad(); n < 4000.RPMtoRad(); n += 10.RPMtoRad()) { for (var tq = -2800.SI<NewtonMeter>(); tq <= 2800.SI<NewtonMeter>(); tq += 100.SI<NewtonMeter>()) { if (tq.IsEqual(0)) { @@ -155,11 +130,17 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData { continue; } Console.WriteLine($"{pwr.Speed.AsRPM}, {pwr.Torque.Value()}, {pwr.ElectricalPower.Value()}, {pwr.Extrapolated}, {(n * tq).Value()}"); + var efficiency = tq < 0 + ? pwr.Speed * pwr.Torque / pwr.ElectricalPower + : pwr.ElectricalPower / (pwr.Speed * pwr.Torque); + // set efficiencies close to 0 to exactly 0 because later assertion uses sharp bounds without tolerance + efficiencies.Add(efficiency.IsEqual(0) ? 0.0 : efficiency); } catch (Exception e) { Console.WriteLine(e.Message); } } } + Assert.IsTrue(efficiencies.All(x => x.IsBetween(etaMin, etaMax)), $"{efficiencies.Min()} - {efficiencies.Max()}"); } } } \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Components/ElectricMotor/vem_P_inverter_DC_90_coarse.vemo b/VectoCore/VectoCoreTest/TestData/Components/ElectricMotor/vem_P_inverter_DC_90_coarse.vemo new file mode 100644 index 0000000000000000000000000000000000000000..b9a07a399d42cf058b8bbf59ce87128250c9ef0d --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Components/ElectricMotor/vem_P_inverter_DC_90_coarse.vemo @@ -0,0 +1,167 @@ +n [rpm] , T [Nm] , P_el [kW] +0 , -2800 , 0.000 +0 , -2400 , 0.000 +0 , -2000 , 0.000 +0 , -1600 , 0.000 +0 , -1200 , 0.000 +0 , -800 , 0.000 +0 , -400 , 0.000 +0 , 0 , 0.000 +0 , 400 , 0.000 +0 , 800 , 0.000 +0 , 1200 , 0.000 +0 , 1600 , 0.000 +0 , 2000 , 0.000 +0 , 2400 , 0.000 +0 , 2800 , 0.000 +400 , -2800 , -105.558 +400 , -2400 , -90.478 +400 , -2000 , -75.398 +400 , -1600 , -60.319 +400 , -1200 , -45.239 +400 , -800 , -30.159 +400 , -400 , -15.080 +400 , 0 , 0.000 +400 , 400 , 18.617 +400 , 800 , 37.234 +400 , 1200 , 55.851 +400 , 1600 , 74.467 +400 , 2000 , 93.084 +400 , 2400 , 111.701 +400 , 2800 , 130.318 +800 , -2800 , -211.115 +800 , -2400 , -180.956 +800 , -2000 , -150.796 +800 , -1600 , -120.637 +800 , -1200 , -90.478 +800 , -800 , -60.319 +800 , -400 , -30.159 +800 , 0 , 0.000 +800 , 400 , 37.234 +800 , 800 , 74.467 +800 , 1200 , 111.701 +800 , 1600 , 148.935 +800 , 2000 , 186.168 +800 , 2400 , 223.402 +800 , 2800 , 260.636 +1200 , -2800 , -316.673 +1200 , -2400 , -271.434 +1200 , -2000 , -226.195 +1200 , -1600 , -180.956 +1200 , -1200 , -135.717 +1200 , -800 , -90.478 +1200 , -400 , -45.239 +1200 , 0 , 0.000 +1200 , 400 , 55.851 +1200 , 800 , 111.701 +1200 , 1200 , 167.552 +1200 , 1600 , 223.402 +1200 , 2000 , 279.253 +1200 , 2400 , 335.103 +1200 , 2800 , 390.954 +1600 , -2800 , -422.230 +1600 , -2400 , -361.911 +1600 , -2000 , -301.593 +1600 , -1600 , -241.274 +1600 , -1200 , -180.956 +1600 , -800 , -120.637 +1600 , -400 , -60.319 +1600 , 0 , 0.000 +1600 , 400 , 74.467 +1600 , 800 , 148.935 +1600 , 1200 , 223.402 +1600 , 1600 , 297.870 +1600 , 2000 , 372.337 +1600 , 2400 , 446.804 +1600 , 2800 , 521.272 +2000 , -2800 , -527.788 +2000 , -2400 , -452.389 +2000 , -2000 , -376.991 +2000 , -1600 , -301.593 +2000 , -1200 , -226.195 +2000 , -800 , -150.796 +2000 , -400 , -75.398 +2000 , 0 , 0.000 +2000 , 400 , 93.084 +2000 , 800 , 186.168 +2000 , 1200 , 279.253 +2000 , 1600 , 372.337 +2000 , 2000 , 465.421 +2000 , 2400 , 558.505 +2000 , 2800 , 651.590 +2400 , -2800 , -633.345 +2400 , -2400 , -542.867 +2400 , -2000 , -452.389 +2400 , -1600 , -361.911 +2400 , -1200 , -271.434 +2400 , -800 , -180.956 +2400 , -400 , -90.478 +2400 , 0 , 0.000 +2400 , 400 , 111.701 +2400 , 800 , 223.402 +2400 , 1200 , 335.103 +2400 , 1600 , 446.804 +2400 , 2000 , 558.505 +2400 , 2400 , 670.206 +2400 , 2800 , 781.908 +2800 , -2800 , -738.903 +2800 , -2400 , -633.345 +2800 , -2000 , -527.788 +2800 , -1600 , -422.230 +2800 , -1200 , -316.673 +2800 , -800 , -211.115 +2800 , -400 , -105.558 +2800 , 0 , 0.000 +2800 , 400 , 130.318 +2800 , 800 , 260.636 +2800 , 1200 , 390.954 +2800 , 1600 , 521.272 +2800 , 2000 , 651.590 +2800 , 2400 , 781.908 +2800 , 2800 , 912.225 +3200 , -2800 , -844.460 +3200 , -2400 , -723.823 +3200 , -2000 , -603.186 +3200 , -1600 , -482.549 +3200 , -1200 , -361.911 +3200 , -800 , -241.274 +3200 , -400 , -120.637 +3200 , 0 , 0.000 +3200 , 400 , 148.935 +3200 , 800 , 297.870 +3200 , 1200 , 446.804 +3200 , 1600 , 595.739 +3200 , 2000 , 744.674 +3200 , 2400 , 893.609 +3200 , 2800 , 1042.543 +3600 , -2800 , -950.018 +3600 , -2400 , -814.301 +3600 , -2000 , -678.584 +3600 , -1600 , -542.867 +3600 , -1200 , -407.150 +3600 , -800 , -271.434 +3600 , -400 , -135.717 +3600 , 0 , 0.000 +3600 , 400 , 167.552 +3600 , 800 , 335.103 +3600 , 1200 , 502.655 +3600 , 1600 , 670.206 +3600 , 2000 , 837.758 +3600 , 2400 , 1005.310 +3600 , 2800 , 1172.861 +4000 , -2800 , -1055.575 +4000 , -2400 , -904.779 +4000 , -2000 , -753.982 +4000 , -1600 , -603.186 +4000 , -1200 , -452.389 +4000 , -800 , -301.593 +4000 , -400 , -150.796 +4000 , 0 , 0.000 +4000 , 400 , 186.168 +4000 , 800 , 372.337 +4000 , 1200 , 558.505 +4000 , 1600 , 744.674 +4000 , 2000 , 930.842 +4000 , 2400 , 1117.011 +4000 , 2800 , 1303.179 + diff --git a/VectoCore/VectoCoreTest/TestData/Components/ElectricMotor/vem_P_inverter_DC_90_fine.vemo b/VectoCore/VectoCoreTest/TestData/Components/ElectricMotor/vem_P_inverter_DC_90_fine.vemo new file mode 100644 index 0000000000000000000000000000000000000000..b9a07a399d42cf058b8bbf59ce87128250c9ef0d --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Components/ElectricMotor/vem_P_inverter_DC_90_fine.vemo @@ -0,0 +1,167 @@ +n [rpm] , T [Nm] , P_el [kW] +0 , -2800 , 0.000 +0 , -2400 , 0.000 +0 , -2000 , 0.000 +0 , -1600 , 0.000 +0 , -1200 , 0.000 +0 , -800 , 0.000 +0 , -400 , 0.000 +0 , 0 , 0.000 +0 , 400 , 0.000 +0 , 800 , 0.000 +0 , 1200 , 0.000 +0 , 1600 , 0.000 +0 , 2000 , 0.000 +0 , 2400 , 0.000 +0 , 2800 , 0.000 +400 , -2800 , -105.558 +400 , -2400 , -90.478 +400 , -2000 , -75.398 +400 , -1600 , -60.319 +400 , -1200 , -45.239 +400 , -800 , -30.159 +400 , -400 , -15.080 +400 , 0 , 0.000 +400 , 400 , 18.617 +400 , 800 , 37.234 +400 , 1200 , 55.851 +400 , 1600 , 74.467 +400 , 2000 , 93.084 +400 , 2400 , 111.701 +400 , 2800 , 130.318 +800 , -2800 , -211.115 +800 , -2400 , -180.956 +800 , -2000 , -150.796 +800 , -1600 , -120.637 +800 , -1200 , -90.478 +800 , -800 , -60.319 +800 , -400 , -30.159 +800 , 0 , 0.000 +800 , 400 , 37.234 +800 , 800 , 74.467 +800 , 1200 , 111.701 +800 , 1600 , 148.935 +800 , 2000 , 186.168 +800 , 2400 , 223.402 +800 , 2800 , 260.636 +1200 , -2800 , -316.673 +1200 , -2400 , -271.434 +1200 , -2000 , -226.195 +1200 , -1600 , -180.956 +1200 , -1200 , -135.717 +1200 , -800 , -90.478 +1200 , -400 , -45.239 +1200 , 0 , 0.000 +1200 , 400 , 55.851 +1200 , 800 , 111.701 +1200 , 1200 , 167.552 +1200 , 1600 , 223.402 +1200 , 2000 , 279.253 +1200 , 2400 , 335.103 +1200 , 2800 , 390.954 +1600 , -2800 , -422.230 +1600 , -2400 , -361.911 +1600 , -2000 , -301.593 +1600 , -1600 , -241.274 +1600 , -1200 , -180.956 +1600 , -800 , -120.637 +1600 , -400 , -60.319 +1600 , 0 , 0.000 +1600 , 400 , 74.467 +1600 , 800 , 148.935 +1600 , 1200 , 223.402 +1600 , 1600 , 297.870 +1600 , 2000 , 372.337 +1600 , 2400 , 446.804 +1600 , 2800 , 521.272 +2000 , -2800 , -527.788 +2000 , -2400 , -452.389 +2000 , -2000 , -376.991 +2000 , -1600 , -301.593 +2000 , -1200 , -226.195 +2000 , -800 , -150.796 +2000 , -400 , -75.398 +2000 , 0 , 0.000 +2000 , 400 , 93.084 +2000 , 800 , 186.168 +2000 , 1200 , 279.253 +2000 , 1600 , 372.337 +2000 , 2000 , 465.421 +2000 , 2400 , 558.505 +2000 , 2800 , 651.590 +2400 , -2800 , -633.345 +2400 , -2400 , -542.867 +2400 , -2000 , -452.389 +2400 , -1600 , -361.911 +2400 , -1200 , -271.434 +2400 , -800 , -180.956 +2400 , -400 , -90.478 +2400 , 0 , 0.000 +2400 , 400 , 111.701 +2400 , 800 , 223.402 +2400 , 1200 , 335.103 +2400 , 1600 , 446.804 +2400 , 2000 , 558.505 +2400 , 2400 , 670.206 +2400 , 2800 , 781.908 +2800 , -2800 , -738.903 +2800 , -2400 , -633.345 +2800 , -2000 , -527.788 +2800 , -1600 , -422.230 +2800 , -1200 , -316.673 +2800 , -800 , -211.115 +2800 , -400 , -105.558 +2800 , 0 , 0.000 +2800 , 400 , 130.318 +2800 , 800 , 260.636 +2800 , 1200 , 390.954 +2800 , 1600 , 521.272 +2800 , 2000 , 651.590 +2800 , 2400 , 781.908 +2800 , 2800 , 912.225 +3200 , -2800 , -844.460 +3200 , -2400 , -723.823 +3200 , -2000 , -603.186 +3200 , -1600 , -482.549 +3200 , -1200 , -361.911 +3200 , -800 , -241.274 +3200 , -400 , -120.637 +3200 , 0 , 0.000 +3200 , 400 , 148.935 +3200 , 800 , 297.870 +3200 , 1200 , 446.804 +3200 , 1600 , 595.739 +3200 , 2000 , 744.674 +3200 , 2400 , 893.609 +3200 , 2800 , 1042.543 +3600 , -2800 , -950.018 +3600 , -2400 , -814.301 +3600 , -2000 , -678.584 +3600 , -1600 , -542.867 +3600 , -1200 , -407.150 +3600 , -800 , -271.434 +3600 , -400 , -135.717 +3600 , 0 , 0.000 +3600 , 400 , 167.552 +3600 , 800 , 335.103 +3600 , 1200 , 502.655 +3600 , 1600 , 670.206 +3600 , 2000 , 837.758 +3600 , 2400 , 1005.310 +3600 , 2800 , 1172.861 +4000 , -2800 , -1055.575 +4000 , -2400 , -904.779 +4000 , -2000 , -753.982 +4000 , -1600 , -603.186 +4000 , -1200 , -452.389 +4000 , -800 , -301.593 +4000 , -400 , -150.796 +4000 , 0 , 0.000 +4000 , 400 , 186.168 +4000 , 800 , 372.337 +4000 , 1200 , 558.505 +4000 , 1600 , 744.674 +4000 , 2000 , 930.842 +4000 , 2400 , 1117.011 +4000 , 2800 , 1303.179 + diff --git a/VectoCore/VectoCoreTest/TestData/Components/ElectricMotor/vem_P_inverter_DC_std.vemo b/VectoCore/VectoCoreTest/TestData/Components/ElectricMotor/vem_P_inverter_DC_std.vemo new file mode 100644 index 0000000000000000000000000000000000000000..f84a72621a2804648ebee9052b332a2f033a302f --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Components/ElectricMotor/vem_P_inverter_DC_std.vemo @@ -0,0 +1,925 @@ +n [rpm] , T [Nm] , P_el [kW] +0, -1050, 0.000 +0, -998, 0.000 +0, -945, 0.000 +0, -893, 0.000 +0, -840, 0.000 +0, -788, 0.000 +0, -735, 0.000 +0, -683, 0.000 +0, -630, -0.069 +0, -578, -0.171 +0, -525, -0.253 +0, -473, -0.316 +0, -420, -0.358 +0, -367, -0.381 +0, -315, -0.383 +0, -262, -0.366 +0, -210, -0.328 +0, -157, -0.271 +0, -105, -0.194 +0, -52, -0.097 +0, -11, -0.005 +0, 11, 0.082 +0, 52, 0.331 +0, 105, 0.662 +0, 157, 1.015 +0, 210, 1.389 +0, 262, 1.785 +0, 315, 2.202 +0, 367, 2.641 +0, 420, 3.102 +0, 473, 3.584 +0, 525, 4.088 +0, 578, 4.614 +0, 630, 5.161 +0, 683, 5.730 +0, 735, 6.320 +0, 788, 6.932 +0, 840, 7.566 +0, 893, 8.221 +0, 945, 8.898 +0, 998, 9.597 +0, 1050, 10.317 +25, -1050, 0.000 +25, -998, 0.000 +25, -945, 0.000 +25, -893, 0.000 +25, -840, 0.000 +25, -788, 0.000 +25, -735, -0.050 +25, -683, -0.124 +25, -630, -0.186 +25, -578, -0.236 +25, -525, -0.274 +25, -473, -0.300 +25, -420, -0.314 +25, -367, -0.315 +25, -315, -0.305 +25, -262, -0.282 +25, -210, -0.247 +25, -157, -0.200 +25, -105, -0.141 +25, -52, -0.070 +25, -11, -0.004 +25, 11, 0.054 +25, 52, 0.216 +25, 105, 0.430 +25, 157, 0.658 +25, 210, 0.899 +25, 262, 1.153 +25, 315, 1.420 +25, 367, 1.700 +25, 420, 1.993 +25, 473, 2.299 +25, 525, 2.619 +25, 578, 2.952 +25, 630, 3.298 +25, 683, 3.657 +25, 735, 4.029 +25, 788, 4.414 +25, 840, 4.813 +25, 893, 5.224 +25, 945, 5.649 +25, 998, 6.087 +25, 1050, 6.538 +255, -1050, -23.221 +255, -998, -22.176 +255, -945, -21.119 +255, -893, -20.048 +255, -840, -18.964 +255, -788, -17.867 +255, -735, -16.757 +255, -683, -15.634 +255, -630, -14.498 +255, -578, -13.349 +255, -525, -12.187 +255, -473, -11.012 +255, -420, -9.824 +255, -367, -8.622 +255, -315, -7.408 +255, -262, -6.181 +255, -210, -4.941 +255, -157, -3.687 +255, -105, -2.421 +255, -52, -1.141 +255, -11, -0.108 +255, 11, 0.466 +255, 52, 1.678 +255, 105, 3.207 +255, 157, 4.749 +255, 210, 6.306 +255, 262, 7.877 +255, 315, 9.462 +255, 367, 11.061 +255, 420, 12.674 +255, 473, 14.302 +255, 525, 15.943 +255, 578, 17.599 +255, 630, 19.269 +255, 683, 20.953 +255, 735, 22.651 +255, 788, 24.363 +255, 840, 26.090 +255, 893, 27.830 +255, 945, 29.585 +255, 998, 31.354 +255, 1050, 33.137 +509, -1050, -49.393 +509, -998, -47.054 +509, -945, -44.700 +509, -893, -42.329 +509, -840, -39.944 +509, -788, -37.542 +509, -735, -35.125 +509, -683, -32.693 +509, -630, -30.245 +509, -578, -27.781 +509, -525, -25.302 +509, -473, -22.807 +509, -420, -20.297 +509, -367, -17.771 +509, -315, -15.229 +509, -262, -12.672 +509, -210, -10.099 +509, -157, -7.510 +509, -105, -4.906 +509, -52, -2.287 +509, -11, -0.180 +509, 11, 0.971 +509, 52, 3.352 +509, 105, 6.343 +509, 157, 9.351 +509, 210, 12.375 +509, 262, 15.417 +509, 315, 18.476 +509, 367, 21.551 +509, 420, 24.643 +509, 473, 27.753 +509, 525, 30.879 +509, 578, 34.022 +509, 630, 37.182 +509, 683, 40.359 +509, 735, 43.553 +509, 788, 46.764 +509, 840, 49.992 +509, 893, 53.236 +509, 945, 56.498 +509, 998, 59.776 +509, 1050, 63.072 +764, -1050, -75.177 +764, -998, -71.575 +764, -945, -67.954 +764, -893, -64.312 +764, -840, -60.651 +764, -788, -56.971 +764, -735, -53.270 +764, -683, -49.550 +764, -630, -45.810 +764, -578, -42.050 +764, -525, -38.271 +764, -473, -34.471 +764, -420, -30.652 +764, -367, -26.814 +764, -315, -22.955 +764, -262, -19.077 +764, -210, -15.179 +764, -157, -11.261 +764, -105, -7.323 +764, -52, -3.366 +764, -11, -0.186 +764, 11, 1.548 +764, 52, 5.098 +764, 105, 9.554 +764, 157, 14.031 +764, 210, 18.530 +764, 262, 23.050 +764, 315, 27.592 +764, 367, 32.155 +764, 420, 36.740 +764, 473, 41.346 +764, 525, 45.974 +764, 578, 50.623 +764, 630, 55.293 +764, 683, 59.985 +764, 735, 64.698 +764, 788, 69.433 +764, 840, 74.189 +764, 893, 78.966 +764, 945, 83.766 +764, 998, 88.586 +764, 1050, 93.428 +1019, -1050, -100.553 +1019, -998, -95.720 +1019, -945, -90.862 +1019, -893, -85.978 +1019, -840, -81.068 +1019, -788, -76.133 +1019, -735, -71.172 +1019, -683, -66.186 +1019, -630, -61.174 +1019, -578, -56.137 +1019, -525, -51.074 +1019, -473, -45.985 +1019, -420, -40.872 +1019, -367, -35.732 +1019, -315, -30.567 +1019, -262, -25.377 +1019, -210, -20.161 +1019, -157, -14.919 +1019, -105, -9.652 +1019, -52, -4.359 +1019, -11, -0.107 +1019, 11, 2.218 +1019, 52, 6.937 +1019, 105, 12.860 +1019, 157, 18.812 +1019, 210, 24.791 +1019, 262, 30.798 +1019, 315, 36.833 +1019, 367, 42.895 +1019, 420, 48.985 +1019, 473, 55.103 +1019, 525, 61.248 +1019, 578, 67.421 +1019, 630, 73.622 +1019, 683, 79.850 +1019, 735, 86.107 +1019, 788, 92.391 +1019, 840, 98.702 +1019, 893, 105.042 +1019, 945, 111.409 +1019, 998, 117.804 +1019, 1050, 124.226 +1273, -1050, -125.503 +1273, -998, -119.470 +1273, -945, -113.404 +1273, -893, -107.305 +1273, -840, -101.174 +1273, -788, -95.009 +1273, -735, -88.812 +1273, -683, -82.581 +1273, -630, -76.318 +1273, -578, -70.021 +1273, -525, -63.692 +1273, -473, -57.330 +1273, -420, -50.935 +1273, -367, -44.507 +1273, -315, -38.046 +1273, -262, -31.552 +1273, -210, -25.025 +1273, -157, -18.466 +1273, -105, -11.873 +1273, -52, -5.247 +1273, -11, 0.000 +1273, 11, 3.000 +1273, 52, 8.890 +1273, 105, 16.284 +1273, 157, 23.714 +1273, 210, 31.179 +1273, 262, 38.680 +1273, 315, 46.217 +1273, 367, 53.790 +1273, 420, 61.399 +1273, 473, 69.043 +1273, 525, 76.723 +1273, 578, 84.439 +1273, 630, 92.190 +1273, 683, 99.977 +1273, 735, 107.800 +1273, 788, 115.659 +1273, 840, 123.553 +1273, 893, 131.483 +1273, 945, 139.449 +1273, 998, 147.450 +1273, 1050, 155.488 +1528, -1050, -150.006 +1528, -998, -142.805 +1528, -945, -135.561 +1528, -893, -128.276 +1528, -840, -120.949 +1528, -788, -113.580 +1528, -735, -106.169 +1528, -683, -98.716 +1528, -630, -91.222 +1528, -578, -83.685 +1528, -525, -76.106 +1528, -473, -68.486 +1528, -420, -60.823 +1528, -367, -53.119 +1528, -315, -45.372 +1528, -262, -37.584 +1528, -210, -29.753 +1528, -157, -21.881 +1528, -105, -13.967 +1528, -52, -6.011 +1528, -11, 0.000 +1528, 11, 3.917 +1528, 52, 10.978 +1528, 105, 19.845 +1528, 157, 28.757 +1528, 210, 37.715 +1528, 262, 46.719 +1528, 315, 55.768 +1528, 367, 64.863 +1528, 420, 74.003 +1528, 473, 83.188 +1528, 525, 92.420 +1528, 578, 101.696 +1528, 630, 111.018 +1528, 683, 120.386 +1528, 735, 129.799 +1528, 788, 139.258 +1528, 840, 148.762 +1528, 893, 158.311 +1528, 945, 167.906 +1528, 998, 177.547 +1528, 1050, 187.233 +1783, -1050, -174.044 +1783, -998, -165.705 +1783, -945, -157.315 +1783, -893, -148.871 +1783, -840, -140.375 +1783, -788, -131.827 +1783, -735, -123.226 +1783, -683, -114.572 +1783, -630, -105.866 +1783, -578, -97.108 +1783, -525, -88.296 +1783, -473, -79.433 +1783, -420, -70.516 +1783, -367, -61.548 +1783, -315, -52.526 +1783, -262, -43.452 +1783, -210, -34.326 +1783, -157, -25.147 +1783, -105, -15.915 +1783, -52, -6.631 +1783, -11, 0.000 +1783, 11, 4.988 +1783, 52, 13.222 +1783, 105, 23.564 +1783, 157, 33.964 +1783, 210, 44.421 +1783, 262, 54.935 +1783, 315, 65.505 +1783, 367, 76.133 +1783, 420, 86.818 +1783, 473, 97.560 +1783, 525, 108.359 +1783, 578, 119.215 +1783, 630, 130.128 +1783, 683, 141.098 +1783, 735, 152.125 +1783, 788, 163.209 +1783, 840, 174.350 +1783, 893, 185.548 +1783, 945, 196.803 +1783, 998, 208.115 +1783, 1050, 219.484 +2037, -1050, -197.596 +2037, -998, -188.153 +2037, -945, -178.644 +2037, -893, -169.071 +2037, -840, -159.433 +2037, -788, -149.730 +2037, -735, -139.962 +2037, -683, -130.130 +2037, -630, -120.233 +2037, -578, -110.271 +2037, -525, -100.244 +2037, -473, -90.152 +2037, -420, -79.996 +2037, -367, -69.775 +2037, -315, -59.489 +2037, -262, -49.138 +2037, -210, -38.723 +2037, -157, -28.243 +2037, -105, -17.698 +2037, -52, -7.088 +2037, -11, 0.000 +2037, 11, 6.237 +2037, 52, 15.643 +2037, 105, 27.464 +2037, 157, 39.355 +2037, 210, 51.316 +2037, 262, 63.348 +2037, 315, 75.450 +2037, 367, 87.623 +2037, 420, 99.865 +2037, 473, 112.179 +2037, 525, 124.562 +2037, 578, 137.015 +2037, 630, 149.539 +2037, 683, 162.133 +2037, 735, 174.798 +2037, 788, 187.533 +2037, 840, 200.338 +2037, 893, 213.213 +2037, 945, 226.159 +2037, 998, 239.175 +2037, 1050, 252.261 +2292, -1050, -220.645 +2292, -998, -210.127 +2292, -945, -199.531 +2292, -893, -188.856 +2292, -840, -178.102 +2292, -788, -167.270 +2292, -735, -156.359 +2292, -683, -145.369 +2292, -630, -134.301 +2292, -578, -123.154 +2292, -525, -111.929 +2292, -473, -100.625 +2292, -420, -89.242 +2292, -367, -77.781 +2292, -315, -66.241 +2292, -262, -54.622 +2292, -210, -42.925 +2292, -157, -31.149 +2292, -105, -19.295 +2292, -52, -7.362 +2292, -11, 0.000 +2292, 11, 7.682 +2292, 52, 18.262 +2292, 105, 31.564 +2292, 157, 44.951 +2292, 210, 58.423 +2292, 262, 71.981 +2292, 315, 85.624 +2292, 367, 99.352 +2292, 420, 113.166 +2292, 473, 127.065 +2292, 525, 141.049 +2292, 578, 155.119 +2292, 630, 169.274 +2292, 683, 183.514 +2292, 735, 197.840 +2292, 788, 212.251 +2292, 840, 226.747 +2292, 893, 241.328 +2292, 945, 255.995 +2292, 998, 270.747 +2292, 1050, 285.585 +2546, -1050, -243.170 +2546, -998, -231.610 +2546, -945, -219.955 +2546, -893, -208.206 +2546, -840, -196.364 +2546, -788, -184.427 +2546, -735, -172.396 +2546, -683, -160.271 +2546, -630, -148.052 +2546, -578, -135.739 +2546, -525, -123.332 +2546, -473, -110.831 +2546, -420, -98.236 +2546, -367, -85.546 +2546, -315, -72.763 +2546, -262, -59.885 +2546, -210, -46.914 +2546, -157, -33.848 +2546, -105, -20.688 +2546, -52, -7.434 +2546, -11, 0.000 +2546, 11, 9.345 +2546, 52, 21.100 +2546, 105, 35.885 +2546, 157, 50.773 +2546, 210, 65.762 +2546, 262, 80.854 +2546, 315, 96.047 +2546, 367, 111.343 +2546, 420, 126.741 +2546, 473, 142.241 +2546, 525, 157.843 +2546, 578, 173.547 +2546, 630, 189.353 +2546, 683, 205.261 +2546, 735, 221.271 +2546, 788, 237.384 +2546, 840, 253.598 +2546, 893, 269.915 +2546, 945, 286.334 +2546, 998, 302.854 +2546, 1050, 319.477 +2801, -1050, -265.152 +2801, -998, -252.580 +2801, -945, -239.898 +2801, -893, -227.104 +2801, -840, -214.199 +2801, -788, -201.182 +2801, -735, -188.055 +2801, -683, -174.817 +2801, -630, -161.467 +2801, -578, -148.006 +2801, -525, -134.434 +2801, -473, -120.751 +2801, -420, -106.957 +2801, -367, -93.052 +2801, -315, -79.035 +2801, -262, -64.908 +2801, -210, -50.669 +2801, -157, -36.319 +2801, -105, -21.858 +2801, -52, -7.285 +2801, -11, 0.000 +2801, 11, 11.248 +2801, 52, 24.178 +2801, 105, 40.449 +2801, 157, 56.842 +2801, 210, 73.354 +2801, 262, 89.987 +2801, 315, 106.741 +2801, 367, 123.616 +2801, 420, 140.611 +2801, 473, 157.726 +2801, 525, 174.963 +2801, 578, 192.320 +2801, 630, 209.797 +2801, 683, 227.395 +2801, 735, 245.114 +2801, 788, 262.953 +2801, 840, 280.913 +2801, 893, 298.993 +2801, 945, 317.195 +2801, 998, 335.516 +2801, 1050, 353.959 +3056, -1050, -286.571 +3056, -998, -273.020 +3056, -945, -259.339 +3056, -893, -245.528 +3056, -840, -231.587 +3056, -788, -217.517 +3056, -735, -203.316 +3056, -683, -188.986 +3056, -630, -174.526 +3056, -578, -159.936 +3056, -525, -145.216 +3056, -473, -130.367 +3056, -420, -115.387 +3056, -367, -100.278 +3056, -315, -85.039 +3056, -262, -69.670 +3056, -210, -54.171 +3056, -157, -38.543 +3056, -105, -22.784 +3056, -52, -6.896 +3056, -11, 0.000 +3056, 11, 13.411 +3056, 52, 27.517 +3056, 105, 45.277 +3056, 157, 63.178 +3056, 210, 81.220 +3056, 262, 99.403 +3056, 315, 117.727 +3056, 367, 136.191 +3056, 420, 154.797 +3056, 473, 173.543 +3056, 525, 192.430 +3056, 578, 211.458 +3056, 630, 230.627 +3056, 683, 249.937 +3056, 735, 269.388 +3056, 788, 288.979 +3056, 840, 308.712 +3056, 893, 328.585 +3056, 945, 348.599 +3056, 998, 368.754 +3056, 1050, 389.050 +3310, -1050, -307.409 +3310, -998, -292.910 +3310, -945, -278.260 +3310, -893, -263.460 +3310, -840, -248.510 +3310, -788, -233.410 +3310, -735, -218.160 +3310, -683, -202.760 +3310, -630, -187.210 +3310, -578, -171.509 +3310, -525, -155.658 +3310, -473, -139.658 +3310, -420, -123.507 +3310, -367, -107.206 +3310, -315, -90.754 +3310, -262, -74.153 +3310, -210, -57.402 +3310, -157, -40.500 +3310, -105, -23.448 +3310, -52, -6.247 +3310, -11, 0.000 +3310, 11, 15.855 +3310, 52, 31.139 +3310, 105, 50.390 +3310, 157, 69.805 +3310, 210, 89.382 +3310, 262, 109.122 +3310, 315, 129.025 +3310, 367, 149.091 +3310, 420, 169.320 +3310, 473, 189.712 +3310, 525, 210.267 +3310, 578, 230.984 +3310, 630, 251.865 +3310, 683, 272.908 +3310, 735, 294.114 +3310, 788, 315.484 +3310, 840, 337.016 +3310, 893, 358.711 +3310, 945, 380.568 +3310, 998, 402.589 +3310, 1050, 424.773 +3565, -1050, -327.646 +3565, -998, -312.230 +3565, -945, -296.641 +3565, -893, -280.881 +3565, -840, -264.949 +3565, -788, -248.844 +3565, -735, -232.568 +3565, -683, -216.119 +3565, -630, -199.499 +3565, -578, -182.706 +3565, -525, -165.741 +3565, -473, -148.605 +3565, -420, -131.296 +3565, -367, -113.815 +3565, -315, -96.162 +3565, -262, -78.338 +3565, -210, -60.341 +3565, -157, -42.172 +3565, -105, -23.831 +3565, -52, -5.318 +3565, -11, 0.000 +3565, 11, 18.601 +3565, 52, 35.063 +3565, 105, 55.808 +3565, 157, 76.741 +3565, 210, 97.859 +3565, 262, 119.165 +3565, 315, 140.657 +3565, 367, 162.336 +3565, 420, 184.202 +3565, 473, 206.254 +3565, 525, 228.493 +3565, 578, 250.918 +3565, 630, 273.530 +3565, 683, 296.329 +3565, 735, 319.315 +3565, 788, 342.487 +3565, 840, 365.846 +3565, 893, 389.391 +3565, 945, 413.123 +3565, 998, 437.042 +3565, 1050, 461.148 +3820, -1050, -347.263 +3820, -998, -330.961 +3820, -945, -314.464 +3820, -893, -297.771 +3820, -840, -280.883 +3820, -788, -263.799 +3820, -735, -246.519 +3820, -683, -229.044 +3820, -630, -211.374 +3820, -578, -193.507 +3820, -525, -175.446 +3820, -473, -157.189 +3820, -420, -138.736 +3820, -367, -120.087 +3820, -315, -101.244 +3820, -262, -82.204 +3820, -210, -62.969 +3820, -157, -43.539 +3820, -105, -23.912 +3820, -52, -4.091 +3820, -11, 0.000 +3820, 11, 21.670 +3820, 52, 39.311 +3820, 105, 61.553 +3820, 157, 84.008 +3820, 210, 106.674 +3820, 262, 129.553 +3820, 315, 152.644 +3820, 367, 175.947 +3820, 420, 199.462 +3820, 473, 223.190 +3820, 525, 247.129 +3820, 578, 271.281 +3820, 630, 295.645 +3820, 683, 320.221 +3820, 735, 345.010 +3820, 788, 370.010 +3820, 840, 395.223 +3820, 893, 420.648 +3820, 945, 446.285 +3820, 998, 472.134 +3820, 1050, 498.196 +4074, -1050, -366.239 +4074, -998, -349.084 +4074, -945, -331.708 +4074, -893, -314.111 +4074, -840, -296.293 +4074, -788, -278.255 +4074, -735, -259.995 +4074, -683, -241.516 +4074, -630, -222.815 +4074, -578, -203.894 +4074, -525, -184.752 +4074, -473, -165.390 +4074, -420, -145.807 +4074, -367, -126.003 +4074, -315, -105.978 +4074, -262, -85.733 +4074, -210, -65.267 +4074, -157, -44.581 +4074, -105, -23.673 +4074, -52, -2.546 +4074, -11, 0.000 +4074, 11, 25.084 +4074, 52, 43.905 +4074, 105, 67.646 +4074, 157, 91.627 +4074, 210, 115.847 +4074, 262, 140.307 +4074, 315, 165.006 +4074, 367, 189.945 +4074, 420, 215.123 +4074, 473, 240.540 +4074, 525, 266.197 +4074, 578, 292.094 +4074, 630, 318.230 +4074, 683, 344.605 +4074, 735, 371.220 +4074, 788, 398.075 +4074, 840, 425.168 +4074, 893, 452.502 +4074, 945, 480.074 +4074, 998, 507.886 +4074, 1050, 535.938 +4329, -1050, -384.557 +4329, -998, -366.579 +4329, -945, -348.354 +4329, -893, -329.881 +4329, -840, -311.160 +4329, -788, -292.192 +4329, -735, -272.977 +4329, -683, -253.514 +4329, -630, -233.804 +4329, -578, -213.847 +4329, -525, -193.642 +4329, -473, -173.190 +4329, -420, -152.490 +4329, -367, -131.542 +4329, -315, -110.348 +4329, -262, -88.906 +4329, -210, -67.216 +4329, -157, -45.279 +4329, -105, -23.095 +4329, -52, -0.663 +4329, -11, 0.000 +4329, 11, 28.863 +4329, 52, 48.864 +4329, 105, 74.107 +4329, 157, 99.619 +4329, 210, 125.399 +4329, 262, 151.448 +4329, 315, 177.765 +4329, 367, 204.351 +4329, 420, 231.205 +4329, 473, 258.327 +4329, 525, 285.718 +4329, 578, 313.378 +4329, 630, 341.306 +4329, 683, 369.503 +4329, 735, 397.968 +4329, 788, 426.701 +4329, 840, 455.703 +4329, 893, 484.973 +4329, 945, 514.512 +4329, 998, 544.320 +4329, 1050, 574.396 +4584, -1050, -402.196 +4584, -998, -383.427 +4584, -945, -364.382 +4584, -893, -345.062 +4584, -840, -325.465 +4584, -788, -305.593 +4584, -735, -285.445 +4584, -683, -265.021 +4584, -630, -244.321 +4584, -578, -223.346 +4584, -525, -202.095 +4584, -473, -180.568 +4584, -420, -158.765 +4584, -367, -136.687 +4584, -315, -114.332 +4584, -262, -91.702 +4584, -210, -68.796 +4584, -157, -45.614 +4584, -105, -22.157 +4584, -52, 0.000 +4584, -11, 0.000 +4584, 11, 33.028 +4584, 52, 54.210 +4584, 105, 80.958 +4584, 157, 108.005 +4584, 210, 135.351 +4584, 262, 162.997 +4584, 315, 190.942 +4584, 367, 219.186 +4584, 420, 247.729 +4584, 473, 276.571 +4584, 525, 305.713 +4584, 578, 335.154 +4584, 630, 364.894 +4584, 683, 394.934 +4584, 735, 425.272 +4584, 788, 455.910 +4584, 840, 486.848 +4584, 893, 518.084 +4584, 945, 549.620 +4584, 998, 581.455 +4584, 1050, 613.589 +4838, -1050, -419.138 +4838, -998, -399.609 +4838, -945, -379.775 +4838, -893, -359.634 +4838, -840, -339.189 +4838, -788, -318.437 +4838, -735, -297.379 +4838, -683, -276.016 +4838, -630, -254.347 +4838, -578, -232.372 +4838, -525, -210.092 +4838, -473, -187.506 +4838, -420, -164.614 +4838, -367, -141.416 +4838, -315, -117.912 +4838, -262, -94.103 +4838, -210, -69.988 +4838, -157, -45.567 +4838, -105, -20.841 +4838, -52, 0.000 +4838, -11, 0.000 +4838, 11, 37.600 +4838, 52, 59.965 +4838, 105, 88.220 +4838, 157, 116.806 +4838, 210, 145.725 +4838, 262, 174.975 +4838, 315, 204.557 +4838, 367, 234.471 +4838, 420, 264.716 +4838, 473, 295.293 +4838, 525, 326.202 +4838, 578, 357.443 +4838, 630, 389.016 +4838, 683, 420.920 +4838, 735, 453.156 +4838, 788, 485.724 +4838, 840, 518.624 +4838, 893, 551.855 +4838, 945, 585.418 +4838, 998, 619.313 +4838, 1050, 653.540 +5093, -1050, -435.362 +5093, -998, -415.105 +5093, -945, -394.511 +5093, -893, -373.580 +5093, -840, -352.311 +5093, -788, -330.705 +5093, -735, -308.761 +5093, -683, -286.480 +5093, -630, -263.862 +5093, -578, -240.907 +5093, -525, -217.614 +5093, -473, -193.984 +5093, -420, -170.016 +5093, -367, -145.711 +5093, -315, -121.069 +5093, -262, -96.089 +5093, -210, -70.772 +5093, -157, -45.118 +5093, -105, -19.126 +5093, -52, 0.000 +5093, -11, 0.000 +5093, 11, 42.600 +5093, 52, 66.149 +5093, 105, 95.913 +5093, 157, 126.044 +5093, 210, 156.540 +5093, 262, 187.403 +5093, 315, 218.632 +5093, 367, 250.227 +5093, 420, 282.187 +5093, 473, 314.514 +5093, 525, 347.207 +5093, 578, 380.266 +5093, 630, 413.691 +5093, 683, 447.482 +5093, 735, 481.639 +5093, 788, 516.163 +5093, 840, 551.052 +5093, 893, 586.307 +5093, 945, 621.928 +5093, 998, 657.915 +5093, 1050, 694.269