From 1a9a5b4722d4b467e9e1bc9e65532a7d3b3da298 Mon Sep 17 00:00:00 2001 From: "VKMTHD\\haraldmartini" <harald.martini@student.tugraz.at> Date: Fri, 20 Jan 2023 16:31:16 +0100 Subject: [PATCH] extrapolate iepc map with factor 1.2 from fld entry --- .../Reader/ComponentData/IEPCMapReader.cs | 118 ++- .../ElectricMachinesDataAdapter.cs | 6 +- .../SimulationComponents/EngineDataAdapter.cs | 9 + .../ElectricMotorRatedSpeedHelper.cs | 71 ++ .../InputData/IEPCMapReaderTest.cs | 245 +++++ .../ElectricMotorRatedSpeedHelperTest.cs | 177 ++++ ...C_Gbx3_1_different_number_of_points.viepco | 909 ++++++++++++++++++ .../IEPC_Gbx3_1_following_curve.viepco | 837 ++++++++++++++++ .../IEPCMapReader/IEPC_Gbx3_FLD_max.viepcp | 24 + VectoCore/VectoCoreTest/VectoCoreTest.csproj | 9 + 10 files changed, 2396 insertions(+), 9 deletions(-) create mode 100644 VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricComponents/ElectricMotor/ElectricMotorRatedSpeedHelper.cs create mode 100644 VectoCore/VectoCoreTest/InputData/IEPCMapReaderTest.cs create mode 100644 VectoCore/VectoCoreTest/Models/Declaration/ElectricMotorRatedSpeedHelperTest.cs create mode 100644 VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_1_different_number_of_points.viepco create mode 100644 VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_1_following_curve.viepco create mode 100644 VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_FLD_max.viepcp diff --git a/VectoCore/VectoCore/InputData/Reader/ComponentData/IEPCMapReader.cs b/VectoCore/VectoCore/InputData/Reader/ComponentData/IEPCMapReader.cs index ee3b46524f..f6db8cf4b0 100644 --- a/VectoCore/VectoCore/InputData/Reader/ComponentData/IEPCMapReader.cs +++ b/VectoCore/VectoCore/InputData/Reader/ComponentData/IEPCMapReader.cs @@ -1,24 +1,31 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Data; using System.IO; using System.Linq; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Configuration; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricComponents.ElectricMotor; using TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricMotor; +using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.Reader.ComponentData { public class IEPCMapReader { - public static EfficiencyMap Create(Stream data, int count, double ratio) + public static EfficiencyMap Create(Stream data, int count, double ratio, + ElectricMotorFullLoadCurve fullLoadCurve) { - return Create(VectoCSVFile.ReadStream(data), count, ratio); + return Create(VectoCSVFile.ReadStream(data), count, ratio, fullLoadCurve); } - public static EfficiencyMap Create(DataTable data, int count, double ratio) + public static EfficiencyMap Create(DataTable data, int count, double ratio, + ElectricMotorFullLoadCurve fullLoadCurve) { var headerValid = HeaderIsValid(data.Columns); if (!headerValid) { @@ -33,7 +40,8 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData data.Columns[2].ColumnName = Fields.PowerElectrical; } - var entries = (from DataRow row in data.Rows select CreateEntry(row, ratio)).ToList(); + var entries = GetEntries(data, ratio); + entries = ExtendEfficiencyMap(entries, fullLoadCurve); var entriesZero = GetEntriesAtZeroRpm(entries); var delaunayMap = new DelaunayMap("ElectricMotorEfficiencyMap Mechanical to Electric"); @@ -64,7 +72,7 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData return retVal; } - private static List<EfficiencyMap.Entry> GetEntriesAtZeroRpm(List<EfficiencyMap.Entry> entries) + private static List<EfficiencyMap.Entry> GetEntriesAtZeroRpm(IList<EfficiencyMap.Entry> entries) { // find entries at first grid point above 0. em-speed might vary slightly, // so apply clustering, and use distance between first clusters to select all entries at lowest speed grid point @@ -125,6 +133,98 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData return entriesZero; } + private static IList<EfficiencyMap.Entry> ExtendEfficiencyMap( + IList<EfficiencyMap.Entry> entries, ElectricMotorFullLoadCurve fullLoadCurve) + { + var clusterer = new MeanShiftClustering(); + var clusterTolerance = 1e-1; + var extrapolationfactor = Constants.PowerMapSettings.EfficiencyMapExtrapolationFactor; + + //ignore entries where speed is 0, added manually to speed bucket (clustering doesn't work because the distance is too small) + var cluster = clusterer.FindClusters(entries.Where(x => x.MotorSpeed.IsGreater(0)).Select(x => x.MotorSpeed.Value()).ToArray(), clusterTolerance); + var minDistance = cluster.Pairwise((x, y) => Math.Abs(y - x)).Min(); + + var speedBuckets = new Dictionary<PerSecond, List<EfficiencyMap.Entry>>(cluster.Length + 1); + + foreach (var c in cluster) + { + speedBuckets.Add(c.SI<PerSecond>(), new List<EfficiencyMap.Entry>()); + } + foreach (var entry in entries.Where(x => x.MotorSpeed.IsGreater(0))) + { + foreach (var speed in speedBuckets.Keys.ToDouble()) + { + if (Math.Abs(speed - entry.MotorSpeed.Value()) < minDistance / 2.0) { + speedBuckets[speed.SI<PerSecond>()].Add(entry); + } + } + } + + //Add zero rpm entries + speedBuckets.Add(0.SI<PerSecond>(), new List<EfficiencyMap.Entry>()); + foreach (var entry in entries.Where(x => x.MotorSpeed.IsEqual(0))) { + speedBuckets[0.SI<PerSecond>()].Add(entry); + } + + + + var maxTargetTorque = fullLoadCurve.MaxGenerationTorque * extrapolationfactor; + var minTargetTorque = fullLoadCurve.MaxDriveTorque * extrapolationfactor; + var ratedSpeed = ElectricMotorRatedSpeedHelper.GetRatedSpeed(fullLoadCurve.FullLoadEntries, + e => e.MotorSpeed, e => e.FullDriveTorque); + PerSecond prevSpeed = null; + foreach (var speedBucket in speedBuckets.OrderBy(x => x.Key)) + { + var maxRecuperationEntry = speedBucket.Value.MaxBy(x => x.Torque); + var maxDriveEntry = speedBucket.Value.MinBy(x => x.Torque); //drive torque < 0 + var recuperationFactor = maxTargetTorque / maxRecuperationEntry.Torque; + var driveFactor = minTargetTorque / maxDriveEntry.Torque; + + if (!recuperationFactor.IsSmallerOrEqual(1)) { + var nrExtrapolationPointsRecuperation = (uint)Math.Ceiling(speedBucket.Value.Count(x => x.Torque.IsGreater(0)) * (recuperationFactor - 1)); + for (var i = 1; i <= nrExtrapolationPointsRecuperation; i++) + { + var factor = CalculateExtrapolationFactor(recuperationFactor, i, nrExtrapolationPointsRecuperation); + + entries.Add(new EfficiencyMap.Entry(speedBucket.Key, maxRecuperationEntry.Torque * factor, maxRecuperationEntry.PowerElectrical * factor)); + } + } + + if (!driveFactor.IsSmallerOrEqual(1)) { + var nrExtrapolationPointsDrive = (uint)Math.Ceiling(speedBucket.Value.Count(x => x.Torque.IsSmaller(0)) * (driveFactor - 1)); + + for (var i = 1; i <= nrExtrapolationPointsDrive; i++) + { + var factor = CalculateExtrapolationFactor(driveFactor, i, nrExtrapolationPointsDrive); + + entries.Add(new EfficiencyMap.Entry(speedBucket.Key, maxDriveEntry.Torque * factor, maxDriveEntry.PowerElectrical * factor)); + } + } + + + if (prevSpeed != null && prevSpeed.IsGreaterOrEqual(ratedSpeed)) + { + //update target values for next speed entry, 1 entry after rated speed should still be extrapolated to maxtorque * 1.2 + maxTargetTorque = fullLoadCurve.FullGenerationTorque(speedBucket.Key) * extrapolationfactor; + minTargetTorque = fullLoadCurve.FullLoadDriveTorque(speedBucket.Key) * extrapolationfactor; + } + prevSpeed = speedBucket.Key; + } + + return entries; + } + + private static Scalar CalculateExtrapolationFactor(Scalar targetFactor, int currentStep, + uint nrOfSteps) + { + if (currentStep < 1) { + throw new ArgumentException($"{nameof(currentStep)} must be >= 1"); + } + var factor = 1 + ((targetFactor - 1)) * (currentStep / (double)nrOfSteps); + return factor; + } + + private static EfficiencyMap.Entry CreateEntry(DataRow row, double ratio) { return new EfficiencyMap.Entry( @@ -133,6 +233,10 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData powerElectrical: row.ParseDouble(Fields.PowerElectrical).SI<Watt>()); } + internal static IList<EfficiencyMap.Entry> GetEntries(DataTable data, double ratio) + { + return (from DataRow row in data.Rows select CreateEntry(row, ratio)).ToList(); + } private static bool HeaderIsValid(DataColumnCollection columns) { @@ -142,8 +246,8 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData public static class Fields { - public const string MotorSpeed = "n_out"; - public const string Torque = "T_out"; + public const string MotorSpeed = "n";// = "n_out"; + public const string Torque = "T";// "_out"; public const string PowerElectrical = "P_el"; } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs index 0c37935c79..0486765ef3 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs @@ -282,16 +282,18 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen foreach (var entry in iepc.VoltageLevels.OrderBy(x => x.VoltageLevel)) { var effMap = new Dictionary<uint, EfficiencyMap>(); + var fldCurve = + IEPCFullLoadCurveReader.Create(entry.FullLoadCurve, count, gearRatioUsedForMeasurement.Ratio); for (var i = 0u; i < entry.PowerMap.Count; i++) { var ratio = iepc.Gears.First(x => x.GearNumber == i + 1).Ratio; - effMap.Add(i + 1, IEPCMapReader.Create(entry.PowerMap[(int)i].PowerMap, count, ratio)); + effMap.Add(i + 1, IEPCMapReader.Create(entry.PowerMap[(int)i].PowerMap, count, ratio, fldCurve)); //fullLoadCurves.Add(i + 1, IEPCFullLoadCurveReader.Create(entry.FullLoadCurve, count, ratio)); } voltageLevels.Add(new IEPCVoltageLevelData() { Voltage = entry.VoltageLevel, - FullLoadCurve = IEPCFullLoadCurveReader.Create(entry.FullLoadCurve, count, gearRatioUsedForMeasurement.Ratio), + FullLoadCurve = fldCurve, EfficiencyMaps = effMap, }); } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/EngineDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/EngineDataAdapter.cs index 39c0521b2b..78dedc1c91 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/EngineDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/EngineDataAdapter.cs @@ -208,6 +208,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen var fullLoadCurves = new Dictionary<uint, EngineFullLoadCurve>(numGears + 1); fullLoadCurves[0] = FullLoadCurveReader.Create(mode.FullLoadCurve, true); fullLoadCurves[0].EngineData = retVal; + foreach (var gear in gearbox?.Gears ?? new List<ITransmissionInputData>(0)) { var maxTorque = VectoMath.Min( @@ -216,6 +217,14 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen fullLoadCurves[(uint)gear.Gear] = IntersectFullLoadCurves(fullLoadCurves[0], maxTorque); } + //Add first full load curve for every gear present in iepc + + if (vehicle.Components.IEPC?.Gears != null) + foreach (var gear in vehicle.Components.IEPC.Gears) { + fullLoadCurves[(uint)gear.GearNumber] = fullLoadCurves[0]; + } + + retVal.FullLoadCurves = fullLoadCurves; retVal.WHRType = engine.WHRType; diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricComponents/ElectricMotor/ElectricMotorRatedSpeedHelper.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricComponents/ElectricMotor/ElectricMotorRatedSpeedHelper.cs new file mode 100644 index 0000000000..2f6d96c5bb --- /dev/null +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricComponents/ElectricMotor/ElectricMotorRatedSpeedHelper.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Configuration; + +namespace TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricComponents.ElectricMotor +{ + public static class ElectricMotorRatedSpeedHelper + { + private class FullLoadCurveEntry + { + public PerSecond speed; + public NewtonMeter torque; + public Watt power; + } + + public static PerSecond GetRatedSpeed<TEntry>(IEnumerable<TEntry> entries, + Func<TEntry, PerSecond> getSpeed, Func<TEntry, NewtonMeter> getTorque) + { + var enumEntries = entries as TEntry[] ?? entries.ToArray(); + AssertDifferentSpeeds(enumEntries.Select(getSpeed)); + AssertZeroRPM(enumEntries.Select(getSpeed)); + //speed power + var orderedEntries = enumEntries.OrderBy(getSpeed).Select(e => new FullLoadCurveEntry() { + speed = getSpeed(e), + torque = getTorque(e), + power = getSpeed(e) * getTorque(e), + }).ToArray(); + + + + double[] gradients = new double[orderedEntries.Length]; + gradients[0] = 0; + double[] deltaStartGradient = new double[orderedEntries.Length]; + deltaStartGradient[0] = 0; + + for (var i = 1; i < orderedEntries.Length; i++) { + gradients[i] = (orderedEntries[i].power - orderedEntries[i - 1].power).Value() / + (orderedEntries[i].speed - orderedEntries[i - 1].speed).Value(); + if (gradients[1].IsEqual(0)) { + throw new VectoException("Invalid map"); + } + deltaStartGradient[i] = gradients[i] / gradients[1] - 1; + if(Math.Abs(deltaStartGradient[i]) > Constants.EMFullLoadCurveSettings.RatedSpeedGradientDelta) { + return orderedEntries[i - 1].speed; + } + } + throw new VectoException("Rated speed not found"); + + } + + private static void AssertDifferentSpeeds(IEnumerable<PerSecond> speeds) + { + var speedsArray = speeds as PerSecond[] ?? speeds.ToArray(); + HashSet<PerSecond> difSpeeds = new HashSet<PerSecond>(speedsArray); + if (difSpeeds.Count != speedsArray.Count()) { + throw new VectoException("Only one entry per speed allowed"); + } + } + + private static void AssertZeroRPM(IEnumerable<PerSecond> speeds) + { + if (!speeds.Min().IsEqual(0)) { + throw new VectoException("Entries at 0 rpm missing"); + } + } + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/InputData/IEPCMapReaderTest.cs b/VectoCore/VectoCoreTest/InputData/IEPCMapReaderTest.cs new file mode 100644 index 0000000000..152c3c432e --- /dev/null +++ b/VectoCore/VectoCoreTest/InputData/IEPCMapReaderTest.cs @@ -0,0 +1,245 @@ + +#if TRACE +using System.Windows.Forms.DataVisualization.Charting; +#endif + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Reflection; + +using NUnit.Framework; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Configuration; +using TUGraz.VectoCore.InputData.Reader.ComponentData; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricMotor; +using TUGraz.VectoCore.Models.SimulationComponent.Impl; +using TUGraz.VectoCore.Utils; + + +namespace TUGraz.VectoCore.Tests.InputData +{ + [TestFixture] + public class IEPCMapReaderTest + { + public const string basePath = "../../../../../"; //from cwd to repo root + + + + + + [OneTimeSetUp] + public void OneTimeSetup() + { + + } + + + [TestCase(@$"{basePath}Generic Vehicles/Engineering Mode/GenericIEPC-S/IEPC-S_Gbx3Speed/IEPC_Gbx3_FLD_max.viepcp", @$"{basePath}Generic Vehicles/Engineering Mode/GenericIEPC-S/IEPC-S_Gbx3Speed/IEPC_Gbx3_2.viepco", 4.65f, 2.74f)] + [TestCase(@$"{basePath}Generic Vehicles/Engineering Mode/GenericIEPC-S/IEPC-S_Gbx3Speed/IEPC_Gbx3_FLD_max.viepcp", @$"{basePath}Generic Vehicles/Engineering Mode/GenericIEPC-S/IEPC-S_Gbx3Speed/IEPC_Gbx3_1.viepco", 8.31f, 2.74f)] + [TestCase(@$"{basePath}Generic Vehicles/Engineering Mode/GenericIEPC-S/IEPC-S_Gbx3Speed/IEPC_Gbx3_FLD_max.viepcp", @$"{basePath}Generic Vehicles/Engineering Mode/GenericIEPC-S/IEPC-S_Gbx3Speed/IEPC_Gbx3_3.viepco", 2.74f, 2.74f)] + + + [TestCase(@$"{basePath}Generic Vehicles/Engineering Mode/GenericIEPC-S/IEPC-S_Gbx3Speed/IEPC_Gbx3_FLD_max.viepcp", @$"{basePath}VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_1_different_number_of_points.viepco", 8.31f, 2.74f)] + [TestCase(@$"{basePath}Generic Vehicles/Engineering Mode/GenericIEPC-S/IEPC-S_Gbx3Speed/IEPC_Gbx3_FLD_max.viepcp", @$"{basePath}VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_1_following_curve.viepco", 8.31f, 2.74f)] + public void ReadIEPCMap(string fullLoadCurvePath, string powerMapPath, double ratio, double fldMeasuredRatio) + { + Assert.That(File.Exists(fullLoadCurvePath), Path.GetFullPath(fullLoadCurvePath)); + Assert.That(File.Exists(powerMapPath), Path.GetFullPath(fullLoadCurvePath)); + + + + var fullLoadCurveData = VectoCSVFile.Read(fullLoadCurvePath); + var powerMapData = VectoCSVFile.Read(powerMapPath); + powerMapData.Columns[0].ColumnName = IEPCMapReader.Fields.MotorSpeed; + powerMapData.Columns[1].ColumnName = IEPCMapReader.Fields.Torque; + powerMapData.Columns[2].ColumnName = IEPCMapReader.Fields.PowerElectrical; + + var fld = IEPCFullLoadCurveReader.Create(fullLoadCurveData, 1, fldMeasuredRatio); + var powerMapInput = IEPCMapReader.GetEntries(powerMapData, ratio); + //PrintMaps("powerMapInput", powerMapInput, "powerMapInput", x => x.MotorSpeed.AsRPM, y => y.Torque.Value()); + + + var effMap = IEPCMapReader.Create(powerMapData, 1, ratio, fld); +#if TRACE + PrintMaps("FLD.png", + new SeriesProperties<ElectricMotorFullLoadCurve.FullLoadEntry>() { + xSelector = (x => x.MotorSpeed.AsRPM), + ySelector = (y => y.FullDriveTorque.Value()), + color = Color.Red, + entries = fld.FullLoadEntries, + }, new SeriesProperties<ElectricMotorFullLoadCurve.FullLoadEntry>() + { + xSelector = (x => x.MotorSpeed.AsRPM), + ySelector = (y => y.FullGenerationTorque.Value()), + color = Color.Red, + entries = fld.FullLoadEntries + }); + + + + + //PrintMaps("powerMap", effMap.Entries, "powerMap", x => x.MotorSpeed.AsRPM, y => y.Torque.Value()); + + + PrintMaps("FLD_input_powermap.png", + new SeriesProperties<ElectricMotorFullLoadCurve.FullLoadEntry>() + { + xSelector = (x => x.MotorSpeed.AsRPM), + ySelector = (y => y.FullDriveTorque.Value()), + color = Color.Red, + entries = fld.FullLoadEntries, + }, new SeriesProperties<ElectricMotorFullLoadCurve.FullLoadEntry>() + { + xSelector = (x => x.MotorSpeed.AsRPM), + ySelector = (y => y.FullGenerationTorque.Value()), + color = Color.Red, + entries = fld.FullLoadEntries + }, new SeriesProperties<EfficiencyMap.Entry>() + { + xSelector = (x => x.MotorSpeed.AsRPM), + ySelector = (y => y.Torque.Value()), + color = Color.Blue, + entries = powerMapInput, + }); + + + PrintMaps("FLD_powermap_extrapolated.png", + new SeriesProperties<ElectricMotorFullLoadCurve.FullLoadEntry>() + { + xSelector = (x => x.MotorSpeed.AsRPM), + ySelector = (y => y.FullDriveTorque.Value()), + color = Color.Red, + entries = fld.FullLoadEntries, + }, new SeriesProperties<ElectricMotorFullLoadCurve.FullLoadEntry>() + { + xSelector = (x => x.MotorSpeed.AsRPM), + ySelector = (y => y.FullGenerationTorque.Value()), + color = Color.Red, + entries = fld.FullLoadEntries, + }, new SeriesProperties<EfficiencyMap.Entry>() + { + xSelector = (x => x.MotorSpeed.AsRPM), + ySelector = (y => y.Torque.Value() * (-1)), + color = Color.Blue, + entries = powerMapInput, + }, new SeriesProperties<EfficiencyMap.Entry>() + { + xSelector = (x => x.MotorSpeed.AsRPM), + ySelector = (y => y.Torque.Value()), + color = Color.LightCoral, + entries = effMap.Entries, + }); + +#endif + + //Drive + foreach (var entry in fld.FullLoadEntries) { + //Assert that this functions returns null when the battery is not restricting the EM + Assert.IsNull(effMap.LookupTorque(double.MaxValue.SI<Watt>(), entry.MotorSpeed, + entry.FullDriveTorque * Constants.PowerMapSettings.EfficiencyMapExtrapolationFactor * -1)); + var power_extended = effMap.LookupElectricPower(entry.MotorSpeed, entry.FullDriveTorque * -1 * Constants.PowerMapSettings.EfficiencyMapExtrapolationFactor, true); + var power = effMap.LookupElectricPower(entry.MotorSpeed, entry.FullDriveTorque * -1, true); + Assert.IsFalse(power_extended.Extrapolated); + Assert.AreEqual(power.ElectricalPower.Value() * Constants.PowerMapSettings.EfficiencyMapExtrapolationFactor, power_extended.ElectricalPower.Value(), 1e6); + } + //Recuperation + foreach (var entry in fld.FullLoadEntries) + { + //Assert that this functions returns null when the battery is not restricting the EM + Assert.IsNull(effMap.LookupTorque(double.MinValue.SI<Watt>(), entry.MotorSpeed, entry.FullGenerationTorque * Constants.PowerMapSettings.EfficiencyMapExtrapolationFactor * -1)); + var power_extended = effMap.LookupElectricPower(entry.MotorSpeed, entry.FullGenerationTorque * -1 * Constants.PowerMapSettings.EfficiencyMapExtrapolationFactor, true); + var power = effMap.LookupElectricPower(entry.MotorSpeed, entry.FullGenerationTorque * -1, true); + Assert.IsFalse(power_extended.Extrapolated); + Assert.AreEqual(power.ElectricalPower.Value() * Constants.PowerMapSettings.EfficiencyMapExtrapolationFactor, power_extended.ElectricalPower.Value(), 1e6); + + } + } + +#if TRACE + public abstract class SeriesProperties + { + public abstract IEnumerable<(double x, double y)> GetPoints(); + public Color color; + public SeriesChartType chartType = SeriesChartType.FastPoint; + public string legend; + } + + + public class SeriesProperties<T> : SeriesProperties + { + public IEnumerable<T> entries; + public Func<T, double> xSelector; + public Func<T, double> ySelector; + + + + #region Overrides of SeriesProperties + + public override IEnumerable<(double x, double y)> GetPoints() + { + foreach (var entry in entries) { + yield return (xSelector(entry), ySelector(entry)); + } + } + + #endregion + } + + + public void PrintMaps(string fileName, params SeriesProperties[] series) + { + if (File.Exists(fileName)) { + File.Delete(fileName); + } + + //x ... speed + + using (var chart = new Chart()) { + chart.Size = new Size(1000, 1000); + chart.Legends.Add(new Legend("legend 1")); + chart.ChartAreas.Add(new ChartArea("maps") + { + AxisX = new Axis { Crossing = 0}, + AxisY = new Axis { Crossing = 0}, + }); + + foreach (var ser in series) { + var chartSeries = new Series + { + ChartType = SeriesChartType.FastPoint, + Color = ser.color, + MarkerSize = 10, + }; + foreach (var entry in ser.GetPoints()) + { + chartSeries.Points.AddXY(entry.x, entry.y); + } + chart.Series.Add(chartSeries); + } + + + + + + + var dirInfo = Directory.CreateDirectory($@"{nameof(IEPCMapReaderTest)}//{String.Join("", TestContext.CurrentContext.Test.Name.Replace(basePath, "").Split(Path.GetInvalidFileNameChars()))}"); + chart.SaveImage($"{dirInfo.FullName}\\{(fileName.EndsWith(".png") ? fileName : fileName + ".png")}", + ChartImageFormat.Png); + TestContext.WriteLine($"{dirInfo.FullName}"); + } + + + + + TestContext.WriteLine($"Map written to {fileName}"); + } +#endif + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Models/Declaration/ElectricMotorRatedSpeedHelperTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/ElectricMotorRatedSpeedHelperTest.cs new file mode 100644 index 0000000000..e6dba04ab8 --- /dev/null +++ b/VectoCore/VectoCoreTest/Models/Declaration/ElectricMotorRatedSpeedHelperTest.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using NUnit.Framework; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.Reader.ComponentData; +using TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricComponents.ElectricMotor; +using TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricMotor; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.Tests.Models.Declaration +{ + [TestFixture] + internal class ElectricMotorRatedSpeedHelperTest + { + + [TestCase(755.11f)] + public void GetRatedSpeedPass(double expectedSpeedRpm) + { + + + + (string speed, string torque)[] entries = new (string speedd, string torque)[] { + ("0.00 ", "4027.80"), + ("14.96 ", "4010.00"), + ("151.09 ", "3980.00"), + ("302.19 ", "4010.00"), + ("452.92 ", "3950.00"), + ("604.01 ", "3900.00"), + ("755.11 ", "3950.00"), + ("906.20 ", "3356.50"), + ("1057.30 ", "2876.98"), + ("1208.03 ", "2517.38"), + ("1359.12 ", "2237.68"), + ("1510.22 ", "2013.90"), + ("1661.31 ", "1830.82"), + ("1812.41 ", "1678.25"), + ("1963.14 ", "1549.15"), + ("2114.23 ", "1438.52"), + ("2265.33 ", "1342.60"), + ("2416.42", "1258.71"), + ("2567.52 ", "1184.66"), + ("2718.25 ", "1118.82"), + ("2869.34 ", "1059.96"), + ("3020.44 ", "1006.95"), + }; + { + var speedCol = "n"; + var torqueCol = "T_drive"; + var data = CreateDataTable(entries, speedCol, torqueCol); + + var ratedSpeed = ElectricMotorRatedSpeedHelper.GetRatedSpeed(data.AsEnumerable(), + row => row.ParseDouble(speedCol).RPMtoRad(), + row => row.ParseDouble(torqueCol).SI<NewtonMeter>()); + + Assert.AreEqual(ratedSpeed.AsRPM, expectedSpeedRpm, expectedSpeedRpm); + } + } + + [TestCase(755.11f)] + public void GetRatedSpeedDivisionByZero(double expectedSpeedRpm) + { + (string speed, string torque)[] entries = new (string speedd, string torque)[] { + ("0.00 ", "4027.00"), + ("14.96 ", "0.00"), //<- this should lead to a division by zero, + ("151.09 ", "3980.00"), + ("302.19 ", "4010.00"), + ("452.92 ", "3950.00"), + ("604.01 ", "3900.00"), + ("755.11 ", "3950.00"), + ("906.20 ", "3356.50"), + ("1057.30 ", "2876.98"), + ("1208.03 ", "2517.38"), + ("1359.12 ", "2237.68"), + ("1510.22 ", "2013.90"), + ("1661.31 ", "1830.82"), + ("1812.41 ", "1678.25"), + ("1963.14 ", "1549.15"), + ("2114.23 ", "1438.52"), + ("2265.33 ", "1342.60"), + ("2416.42", "1258.71"), + ("2567.52 ", "1184.66"), + ("2718.25 ", "1118.82"), + ("2869.34 ", "1059.96"), + ("3020.44 ", "1006.95"), + }; + + var speedCol = "n"; + var torqueCol = "T_drive"; + var data = CreateDataTable(entries, speedCol, torqueCol); + + Assert.Throws<VectoException>(() => { + ElectricMotorRatedSpeedHelper.GetRatedSpeed(data.AsEnumerable(), + row => row.ParseDouble(speedCol).RPMtoRad(), + row => row.ParseDouble(torqueCol).SI<NewtonMeter>()); + + }); + //Assert.AreEqual(ratedSpeed.AsRPM, expectedSpeedRpm, expectedSpeedRpm); + + } + + [TestCase(755.11f)] + public void GetRatedSpeedMissingZeroRPM(double expectedSpeedRpm) + { + (string speed, string torque)[] entries = new (string speedd, string torque)[] { + ("1.00 ", "4027.00"), + ("14.96 ", "4027.00"), //<- this should lead to a division by zero, + ("151.09 ", "3980.00"), + ("302.19 ", "4010.00"), + ("452.92 ", "3950.00"), + ("604.01 ", "3900.00"), + ("755.11 ", "3950.00"), + ("906.20 ", "3356.50"), + ("1057.30 ", "2876.98"), + ("1208.03 ", "2517.38"), + ("1359.12 ", "2237.68"), + ("1510.22 ", "2013.90"), + ("1661.31 ", "1830.82"), + ("1812.41 ", "1678.25"), + ("1963.14 ", "1549.15"), + ("2114.23 ", "1438.52"), + ("2265.33 ", "1342.60"), + ("2416.42", "1258.71"), + ("2567.52 ", "1184.66"), + ("2718.25 ", "1118.82"), + ("2869.34 ", "1059.96"), + ("3020.44 ", "1006.95"), + }; + + var speedCol = "n"; + var torqueCol = "T_drive"; + var data = CreateDataTable(entries, speedCol, torqueCol); + + Assert.Throws<VectoException>(() => { + ElectricMotorRatedSpeedHelper.GetRatedSpeed(data.AsEnumerable(), + row => row.ParseDouble(speedCol).RPMtoRad(), + row => row.ParseDouble(torqueCol).SI<NewtonMeter>()); + + }); + //Assert.AreEqual(ratedSpeed.AsRPM, expectedSpeedRpm, expectedSpeedRpm); + + } + + [TestCase(1850f, 1f)] + public void IEPCFld(double expectedSpeedRpm, double ratio) + { + var fldCruveData = VectoCSVFile.Read(@"TestData\BatteryElectric\IEPC\GenericFld.viepcp"); + var fld = IEPCFullLoadCurveReader.Create(fldCruveData, 1, ratio); + + Assert.AreEqual(1850 * ratio, ElectricMotorRatedSpeedHelper.GetRatedSpeed(fld.FullLoadEntries, entry => entry.MotorSpeed, + entry => entry.FullDriveTorque).AsRPM); + } + + private static DataTable CreateDataTable((string speed, string torque)[] entries, string firstCol, + string secondCol) + { + + var data = new DataTable(); + data.Columns.Add(firstCol, typeof(string)); + data.Columns.Add(secondCol, typeof(string)); + foreach (var entry in entries) { + var row = data.NewRow(); + row[firstCol] = entry.speed; + row[secondCol] = entry.torque; + data.Rows.Add(row); + } + + return data; + } + + + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_1_different_number_of_points.viepco b/VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_1_different_number_of_points.viepco new file mode 100644 index 0000000000..d6ee1698b2 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_1_different_number_of_points.viepco @@ -0,0 +1,909 @@ +n_out , T_out , P_el +0.00 , -12984.38 , 0.00 +0.00 , -12335.16 , 0.00 +0.00 , -11685.94 , 0.00 +0.00 , -11036.72 , 0.00 +0.00 , -10387.50 , 0.00 +0.00 , -9738.28 , 0.00 +0.00 , -9089.06 , -0.13 +0.00 , -8439.84 , -0.66 +0.00 , -7790.63 , -0.98 +0.00 , -7141.41 , -1.19 +0.00 , -6492.19 , -1.32 +0.00 , -5842.97 , -1.38 +0.00 , -5193.75 , -1.39 +0.00 , -4544.53 , -1.35 +0.00 , -3895.31 , -1.26 +0.00 , -3246.09 , -1.13 +0.00 , -2596.88 , -0.97 +0.00 , -1947.66 , -0.77 +0.00 , -1298.44 , -0.53 +0.00 , -649.22 , -0.27 +0.00 , -129.84 , -0.02 +0.00 , 119.66 , 0.13 +0.00 , 598.32 , 0.56 +0.00 , 1196.64 , 1.12 +0.00 , 1794.96 , 1.70 +0.00 , 2393.28 , 2.31 +0.00 , 2991.60 , 2.93 +0.00 , 3589.92 , 3.58 +0.00 , 4188.24 , 4.25 +0.00 , 4786.56 , 4.93 +0.00 , 5384.88 , 5.64 +0.00 , 5983.20 , 6.37 +0.00 , 6581.52 , 7.12 +0.00 , 7179.84 , 7.88 +0.00 , 7778.16 , 8.67 +0.00 , 8376.48 , 9.47 +0.00 , 8974.80 , 10.29 +0.00 , 9573.12 , 11.13 +0.00 , 10171.44 , 11.99 +0.00 , 10769.76 , 12.87 +0.00 , 11368.08 , 13.76 +0.00 , 11966.40 , 14.67 +4.98 , -12984.38 , 0.00 +4.98 , -12335.16 , 0.00 +4.98 , -11685.94 , 0.00 +4.98 , -11036.72 , 0.00 +4.98 , -10387.50 , 0.00 +4.98 , -9738.28 , 0.00 +4.98 , -9089.06 , -0.50 +4.98 , -8439.84 , -0.84 +4.98 , -7790.63 , -1.04 +4.98 , -7141.41 , -1.16 +4.98 , -6492.19 , -1.22 +4.98 , -5842.97 , -1.24 +4.98 , -5193.75 , -1.21 +4.98 , -4544.53 , -1.15 +4.98 , -3895.31 , -1.06 +4.98 , -3246.09 , -0.94 +4.98 , -2596.88 , -0.80 +4.98 , -1947.66 , -0.62 +4.98 , -1298.44 , -0.43 +4.98 , -649.22 , -0.21 +4.98 , -129.84 , -0.02 +4.98 , 119.66 , 0.10 +4.98 , 598.32 , 0.43 +4.98 , 1196.64 , 0.85 +4.98 , 1794.96 , 1.30 +4.98 , 2393.28 , 1.75 +4.98 , 2991.60 , 2.23 +4.98 , 3589.92 , 2.71 +4.98 , 4188.24 , 3.21 +4.98 , 4786.56 , 3.73 +4.98 , 5384.88 , 4.26 +4.98 , 5983.20 , 4.80 +4.98 , 6581.52 , 5.36 +4.98 , 7179.84 , 5.93 +4.98 , 7778.16 , 6.52 +4.98 , 8376.48 , 7.12 +4.98 , 8974.80 , 7.73 +4.98 , 9573.12 , 8.35 +4.98 , 10171.44 , 8.99 +4.98 , 10769.76 , 9.64 +4.98 , 11368.08 , 10.30 +4.98 , 11966.40 , 10.98 +49.80 , -12984.38 , -58.10 +49.80 , -12335.16 , -55.37 +49.80 , -11685.94 , -52.62 +49.80 , -11036.72 , -49.85 +49.80 , -10387.50 , -47.06 +49.80 , -9738.28 , -44.25 +49.80 , -9089.06 , -41.42 +49.80 , -8439.84 , -38.57 +49.80 , -7790.63 , -35.70 +49.80 , -7141.41 , -32.81 +49.80 , -6492.19 , -29.90 +49.80 , -5842.97 , -26.98 +49.80 , -5193.75 , -24.03 +49.80 , -4544.53 , -21.07 +49.80 , -3895.31 , -18.08 +49.80 , -3246.09 , -15.08 +49.80 , -2596.88 , -12.06 +49.80 , -1947.66 , -9.02 +49.80 , -1298.44 , -5.96 +49.80 , -649.22 , -2.88 +49.80 , -129.84 , -0.37 +49.80 , 119.66 , 0.90 +49.80 , 598.32 , 3.68 +49.80 , 1196.64 , 7.16 +49.80 , 1794.96 , 10.66 +49.80 , 2393.28 , 14.17 +49.80 , 2991.60 , 17.71 +49.80 , 3589.92 , 21.26 +49.80 , 4188.24 , 24.84 +49.80 , 4786.56 , 28.43 +49.80 , 5384.88 , 32.04 +49.80 , 5983.20 , 35.67 +49.80 , 6581.52 , 39.32 +49.80 , 7179.84 , 42.99 +49.80 , 7778.16 , 46.68 +49.80 , 8376.48 , 50.38 +49.80 , 8974.80 , 54.11 +49.80 , 9573.12 , 57.85 +49.80 , 10171.44 , 61.61 +49.80 , 10769.76 , 65.39 +49.80 , 11368.08 , 69.19 +49.80 , 11966.40 , 73.01 +99.59 , -12984.38 , -120.57 +99.59 , -12335.16 , -114.73 +99.59 , -11685.94 , -108.87 +99.59 , -11036.72 , -102.99 +99.59 , -10387.50 , -97.08 +99.59 , -9738.28 , -91.15 +99.59 , -9089.06 , -85.20 +99.59 , -8439.84 , -79.23 +99.59 , -7790.63 , -73.23 +99.59 , -7141.41 , -67.21 +99.59 , -6492.19 , -61.17 +99.59 , -5842.97 , -55.10 +99.59 , -5193.75 , -49.01 +99.59 , -4544.53 , -42.90 +99.59 , -3895.31 , -36.77 +99.59 , -3246.09 , -30.61 +99.59 , -2596.88 , -24.43 +99.59 , -1947.66 , -18.23 +99.59 , -1298.44 , -12.01 +99.59 , -649.22 , -5.76 +99.59 , -129.84 , -0.66 +99.59 , 119.66 , 1.84 +99.59 , 598.32 , 7.35 +99.59 , 1196.64 , 14.22 +99.59 , 1794.96 , 21.11 +99.59 , 2393.28 , 28.02 +99.59 , 2991.60 , 34.96 +99.59 , 3589.92 , 41.92 +99.59 , 4188.24 , 48.90 +99.59 , 4786.56 , 55.90 +99.59 , 5384.88 , 62.93 +99.59 , 5983.20 , 69.98 +99.59 , 6581.52 , 77.05 +99.59 , 7179.84 , 84.15 +99.59 , 7778.16 , 91.27 +99.59 , 8376.48 , 98.41 +99.59 , 8974.80 , 105.58 +99.59 , 9573.12 , 112.76 +99.59 , 10171.44 , 119.97 +99.59 , 10769.76 , 127.21 +99.59 , 11368.08 , 134.46 +99.59 , 11966.40 , 141.74 +149.39 , -12984.38 , -182.44 +149.39 , -12335.16 , -173.55 +149.39 , -11685.94 , -164.62 +149.39 , -11036.72 , -155.67 +149.39 , -10387.50 , -146.69 +149.39 , -9738.28 , -137.68 +149.39 , -9089.06 , -128.65 +149.39 , -8439.84 , -119.58 +149.39 , -7790.63 , -110.49 +149.39 , -7141.41 , -101.36 +149.39 , -6492.19 , -92.21 +149.39 , -5842.97 , -83.03 +149.39 , -5193.75 , -73.82 +149.39 , -4544.53 , -64.58 +149.39 , -3895.31 , -55.31 +149.39 , -3246.09 , -46.02 +149.39 , -2596.88 , -36.70 +149.39 , -1947.66 , -27.34 +149.39 , -1298.44 , -17.96 +149.39 , -649.22 , -8.54 +149.39 , -129.84 , -0.79 +149.39 , 119.66 , 2.86 +149.39 , 598.32 , 11.12 +149.39 , 1196.64 , 21.39 +149.39 , 1794.96 , 31.68 +149.39 , 2393.28 , 41.99 +149.39 , 2991.60 , 52.34 +149.39 , 3589.92 , 62.71 +149.39 , 4188.24 , 73.12 +149.39 , 4786.56 , 83.55 +149.39 , 5384.88 , 94.01 +149.39 , 5983.20 , 104.50 +149.39 , 6581.52 , 115.02 +149.39 , 7179.84 , 125.57 +149.39 , 7778.16 , 136.15 +149.39 , 8376.48 , 146.76 +149.39 , 8974.80 , 157.40 +149.39 , 9573.12 , 168.06 +149.39 , 10171.44 , 178.76 +149.39 , 10769.76 , 189.48 +149.39 , 11368.08 , 200.23 +149.39 , 11966.40 , 211.02 +199.18 , -12984.38 , -243.71 +199.18 , -12335.16 , -231.81 +199.18 , -11685.94 , -219.87 +199.18 , -11036.72 , -207.89 +199.18 , -10387.50 , -195.88 +199.18 , -9738.28 , -183.83 +199.18 , -9089.06 , -171.74 +199.18 , -8439.84 , -159.61 +199.18 , -7790.63 , -147.45 +199.18 , -7141.41 , -135.25 +199.18 , -6492.19 , -123.01 +199.18 , -5842.97 , -110.74 +199.18 , -5193.75 , -98.43 +199.18 , -4544.53 , -86.08 +199.18 , -3895.31 , -73.70 +199.18 , -3246.09 , -61.27 +199.18 , -2596.88 , -48.82 +199.18 , -1947.66 , -36.32 +199.18 , -1298.44 , -23.78 +199.18 , -649.22 , -11.19 +199.18 , -129.84 , -0.63 +199.18 , 119.66 , 3.98 +199.18 , 598.32 , 15.01 +199.18 , 1196.64 , 28.68 +199.18 , 1794.96 , 42.37 +199.18 , 2393.28 , 56.10 +199.18 , 2991.60 , 69.87 +199.18 , 3589.92 , 83.67 +199.18 , 4188.24 , 97.52 +199.18 , 4786.56 , 111.40 +199.18 , 5384.88 , 125.31 +199.18 , 5983.20 , 139.27 +199.18 , 6581.52 , 153.26 +199.18 , 7179.84 , 167.29 +199.18 , 7778.16 , 181.36 +199.18 , 8376.48 , 195.46 +199.18 , 8974.80 , 209.61 +199.18 , 9573.12 , 223.79 +199.18 , 10171.44 , 238.01 +199.18 , 10769.76 , 252.26 +199.18 , 11368.08 , 266.56 +199.18 , 11966.40 , 280.89 +248.98 , -12984.38 , -304.37 +248.98 , -12335.16 , -289.50 +248.98 , -11685.94 , -274.59 +248.98 , -11036.72 , -259.63 +248.98 , -10387.50 , -244.61 +248.98 , -9738.28 , -229.56 +248.98 , -9089.06 , -214.45 +248.98 , -8439.84 , -199.30 +248.98 , -7790.63 , -184.10 +248.98 , -7141.41 , -168.85 +248.98 , -6492.19 , -153.55 +248.98 , -5842.97 , -138.20 +248.98 , -5193.75 , -122.81 +248.98 , -4544.53 , -107.37 +248.98 , -3895.31 , -91.88 +248.98 , -3246.09 , -76.35 +248.98 , -2596.88 , -60.76 +248.98 , -1947.66 , -45.13 +248.98 , -1298.44 , -29.44 +248.98 , -649.22 , -13.67 +248.98 , -129.84 , 0.00 +248.98 , 119.66 , 5.21 +248.98 , 598.32 , 19.04 +248.98 , 1196.64 , 36.13 +248.98 , 1794.96 , 53.24 +248.98 , 2393.28 , 70.39 +248.98 , 2991.60 , 87.59 +248.98 , 3589.92 , 104.83 +248.98 , 4188.24 , 122.13 +248.98 , 4786.56 , 139.47 +248.98 , 5384.88 , 156.87 +248.98 , 5983.20 , 174.31 +248.98 , 6581.52 , 191.80 +248.98 , 7179.84 , 209.33 +248.98 , 7778.16 , 226.92 +248.98 , 8376.48 , 244.56 +248.98 , 8974.80 , 262.24 +248.98 , 9573.12 , 279.97 +248.98 , 10171.44 , 297.76 +248.98 , 10769.76 , 315.58 +248.98 , 11368.08 , 333.46 +248.98 , 11966.40 , 351.39 +298.77 , -12984.38 , -364.37 +298.77 , -12335.16 , -346.59 +298.77 , -11685.94 , -328.74 +298.77 , -11036.72 , -310.84 +298.77 , -10387.50 , -292.87 +298.77 , -9738.28 , -274.84 +298.77 , -9089.06 , -256.75 +298.77 , -8439.84 , -238.60 +298.77 , -7790.63 , -220.39 +298.77 , -7141.41 , -202.12 +298.77 , -6492.19 , -183.79 +298.77 , -5842.97 , -165.40 +298.77 , -5193.75 , -146.94 +298.77 , -4544.53 , -128.43 +298.77 , -3895.31 , -109.85 +298.77 , -3246.09 , -91.21 +298.77 , -2596.88 , -72.51 +298.77 , -1947.66 , -53.75 +298.77 , -1298.44 , -34.91 +298.77 , -649.22 , -15.95 +298.77 , -129.84 , 0.00 +298.77 , 119.66 , 6.58 +298.77 , 598.32 , 23.25 +298.77 , 1196.64 , 43.76 +298.77 , 1794.96 , 64.29 +298.77 , 2393.28 , 84.87 +298.77 , 2991.60 , 105.52 +298.77 , 3589.92 , 126.22 +298.77 , 4188.24 , 146.98 +298.77 , 4786.56 , 167.81 +298.77 , 5384.88 , 188.70 +298.77 , 5983.20 , 209.65 +298.77 , 6581.52 , 230.66 +298.77 , 7179.84 , 251.73 +298.77 , 7778.16 , 272.87 +298.77 , 8376.48 , 294.07 +298.77 , 8974.80 , 315.33 +298.77 , 9573.12 , 336.65 +298.77 , 10171.44 , 358.03 +298.77 , 10769.76 , 379.47 +298.77 , 11368.08 , 400.98 +298.77 , 11966.40 , 422.54 +348.57 , -12984.38 , -423.69 +348.57 , -12335.16 , -403.04 +348.57 , -11685.94 , -382.31 +348.57 , -11036.72 , -361.50 +348.57 , -10387.50 , -340.62 +348.57 , -9738.28 , -319.66 +348.57 , -9089.06 , -298.62 +348.57 , -8439.84 , -277.51 +348.57 , -7790.63 , -256.31 +348.57 , -7141.41 , -235.05 +348.57 , -6492.19 , -213.70 +348.57 , -5842.97 , -192.28 +348.57 , -5193.75 , -170.79 +348.57 , -4544.53 , -149.21 +348.57 , -3895.31 , -127.57 +348.57 , -3246.09 , -105.84 +348.57 , -2596.88 , -84.03 +348.57 , -1947.66 , -62.14 +348.57 , -1298.44 , -40.16 +348.57 , -649.22 , -18.00 +348.57 , -129.84 , 0.00 +348.57 , 119.66 , 8.09 +348.57 , 598.32 , 27.64 +348.57 , 1196.64 , 51.59 +348.57 , 1794.96 , 75.56 +348.57 , 2393.28 , 99.58 +348.57 , 2991.60 , 123.68 +348.57 , 3589.92 , 147.86 +348.57 , 4188.24 , 172.10 +348.57 , 4786.56 , 196.43 +348.57 , 5384.88 , 220.84 +348.57 , 5983.20 , 245.32 +348.57 , 6581.52 , 269.88 +348.57 , 7179.84 , 294.51 +348.57 , 7778.16 , 319.23 +348.57 , 8376.48 , 344.02 +348.57 , 8974.80 , 368.89 +348.57 , 9573.12 , 393.83 +348.57 , 10171.44 , 418.85 +348.57 , 10769.76 , 443.95 +348.57 , 11368.08 , 469.13 +348.57 , 11966.40 , 494.38 +398.37 , -12984.38 , -482.31 +398.37 , -12335.16 , -458.83 +398.37 , -11685.94 , -435.26 +398.37 , -11036.72 , -411.59 +398.37 , -10387.50 , -387.83 +398.37 , -9738.28 , -363.97 +398.37 , -9089.06 , -340.02 +398.37 , -8439.84 , -315.97 +398.37 , -7790.63 , -291.83 +398.37 , -7141.41 , -267.59 +398.37 , -6492.19 , -243.26 +398.37 , -5842.97 , -218.84 +398.37 , -5193.75 , -194.32 +398.37 , -4544.53 , -169.71 +398.37 , -3895.31 , -145.00 +398.37 , -3246.09 , -120.19 +398.37 , -2596.88 , -95.29 +398.37 , -1947.66 , -70.28 +398.37 , -1298.44 , -45.14 +398.37 , -649.22 , -19.76 +398.37 , -129.84 , 0.00 +398.37 , 119.66 , 9.76 +398.37 , 598.32 , 32.25 +398.37 , 1196.64 , 59.66 +398.37 , 1794.96 , 87.07 +398.37 , 2393.28 , 114.55 +398.37 , 2991.60 , 142.11 +398.37 , 3589.92 , 169.77 +398.37 , 4188.24 , 197.52 +398.37 , 4786.56 , 225.37 +398.37 , 5384.88 , 253.31 +398.37 , 5983.20 , 281.34 +398.37 , 6581.52 , 309.47 +398.37 , 7179.84 , 337.70 +398.37 , 7778.16 , 366.02 +398.37 , 8376.48 , 394.44 +398.37 , 8974.80 , 422.95 +398.37 , 9573.12 , 451.56 +398.37 , 10171.44 , 480.26 +398.37 , 10769.76 , 509.05 +398.37 , 11368.08 , 537.94 +398.37 , 11966.40 , 566.93 +448.16 , -12984.38 , -540.17 +448.16 , -12335.16 , -513.92 +448.16 , -11685.94 , -487.55 +448.16 , -11036.72 , -461.06 +448.16 , -10387.50 , -434.46 +448.16 , -9738.28 , -407.75 +448.16 , -9089.06 , -380.92 +448.16 , -8439.84 , -353.97 +448.16 , -7790.63 , -326.91 +448.16 , -7141.41 , -299.73 +448.16 , -6492.19 , -272.44 +448.16 , -5842.97 , -245.03 +448.16 , -5193.75 , -217.51 +448.16 , -4544.53 , -189.87 +448.16 , -3895.31 , -162.12 +448.16 , -3246.09 , -134.25 +448.16 , -2596.88 , -106.26 +448.16 , -1947.66 , -78.13 +448.16 , -1298.44 , -49.84 +448.16 , -649.22 , -21.19 +448.16 , -129.84 , 0.00 +448.16 , 119.66 , 11.59 +448.16 , 598.32 , 37.10 +448.16 , 1196.64 , 67.98 +448.16 , 1794.96 , 98.85 +448.16 , 2393.28 , 129.79 +448.16 , 2991.60 , 160.84 +448.16 , 3589.92 , 191.99 +448.16 , 4188.24 , 223.26 +448.16 , 4786.56 , 254.64 +448.16 , 5384.88 , 286.14 +448.16 , 5983.20 , 317.75 +448.16 , 6581.52 , 349.48 +448.16 , 7179.84 , 381.32 +448.16 , 7778.16 , 413.28 +448.16 , 8376.48 , 445.36 +448.16 , 8974.80 , 477.54 +448.16 , 9573.12 , 509.85 +448.16 , 10171.44 , 542.27 +448.16 , 10769.76 , 574.80 +448.16 , 11368.08 , 607.45 +448.16 , 11966.40 , 640.21 +497.96 , -12984.38 , -597.26 +497.96 , -12335.16 , -568.28 +497.96 , -11685.94 , -539.16 +497.96 , -11036.72 , -509.90 +497.96 , -10387.50 , -480.50 +497.96 , -9738.28 , -450.96 +497.96 , -9089.06 , -421.28 +497.96 , -8439.84 , -391.47 +497.96 , -7790.63 , -361.52 +497.96 , -7141.41 , -331.43 +497.96 , -6492.19 , -301.20 +497.96 , -5842.97 , -270.83 +497.96 , -5193.75 , -240.33 +497.96 , -4544.53 , -209.68 +497.96 , -3895.31 , -178.90 +497.96 , -3246.09 , -147.97 +497.96 , -2596.88 , -116.90 +497.96 , -1947.66 , -85.66 +497.96 , -1298.44 , -54.21 +497.96 , -649.22 , -22.23 +497.96 , -129.84 , 0.00 +497.96 , 119.66 , 13.60 +497.96 , 598.32 , 42.20 +497.96 , 1196.64 , 76.58 +497.96 , 1794.96 , 110.92 +497.96 , 2393.28 , 145.34 +497.96 , 2991.60 , 179.88 +497.96 , 3589.92 , 214.55 +497.96 , 4188.24 , 249.35 +497.96 , 4786.56 , 284.29 +497.96 , 5384.88 , 319.36 +497.96 , 5983.20 , 354.57 +497.96 , 6581.52 , 389.92 +497.96 , 7179.84 , 425.41 +497.96 , 7778.16 , 461.03 +497.96 , 8376.48 , 496.79 +497.96 , 8974.80 , 532.69 +497.96 , 9573.12 , 568.73 +497.96 , 10171.44 , 604.90 +497.96 , 10769.76 , 641.21 +497.96 , 11368.08 , 677.66 +497.96 , 11966.40 , 714.24 +547.75 , -12984.38 , -653.54 +547.75 , -12335.16 , -621.88 +547.75 , -11685.94 , -590.05 +547.75 , -11036.72 , -558.06 +547.75 , -10387.50 , -525.90 +547.75 , -9738.28 , -493.58 +547.75 , -9089.06 , -461.09 +547.75 , -8439.84 , -428.44 +547.75 , -7790.63 , -395.63 +547.75 , -7141.41 , -362.65 +547.75 , -6492.19 , -329.51 +547.75 , -5842.97 , -296.21 +547.75 , -5193.75 , -262.74 +547.75 , -4544.53 , -229.11 +547.75 , -3895.31 , -195.31 +547.75 , -3246.09 , -161.34 +547.75 , -2596.88 , -127.18 +547.75 , -1947.66 , -92.83 +547.75 , -1298.44 , -58.20 +547.75 , -649.22 , -22.82 +547.75 , -129.84 , 0.00 +547.75 , 119.66 , 15.79 +547.75 , 598.32 , 47.58 +547.75 , 1196.64 , 85.48 +547.75 , 1794.96 , 123.30 +547.75 , 2393.28 , 161.22 +547.75 , 2991.60 , 199.26 +547.75 , 3589.92 , 237.46 +547.75 , 4188.24 , 275.81 +547.75 , 4786.56 , 314.32 +547.75 , 5384.88 , 352.99 +547.75 , 5983.20 , 391.83 +547.75 , 6581.52 , 430.82 +547.75 , 7179.84 , 469.98 +547.75 , 7778.16 , 509.30 +547.75 , 8376.48 , 548.78 +547.75 , 8974.80 , 588.42 +547.75 , 9573.12 , 628.23 +547.75 , 10171.44 , 668.20 +547.75 , 10769.76 , 708.32 +547.75 , 11368.08 , 748.61 +547.75 , 11966.40 , 789.06 +597.55 , -12984.38 , -708.97 +597.55 , -12335.16 , -674.68 +597.55 , -11685.94 , -640.19 +597.55 , -11036.72 , -605.51 +597.55 , -10387.50 , -570.63 +597.55 , -9738.28 , -535.56 +597.55 , -9089.06 , -500.30 +597.55 , -8439.84 , -464.85 +597.55 , -7790.63 , -429.21 +597.55 , -7141.41 , -393.37 +597.55 , -6492.19 , -357.35 +597.55 , -5842.97 , -321.13 +597.55 , -5193.75 , -284.71 +597.55 , -4544.53 , -248.11 +597.55 , -3895.31 , -211.31 +597.55 , -3246.09 , -174.30 +597.55 , -2596.88 , -137.08 +597.55 , -1947.66 , -99.61 +597.55 , -1298.44 , -61.78 +597.55 , -649.22 , -22.86 +597.55 , -129.84 , 0.00 +597.55 , 119.66 , 18.17 +597.55 , 598.32 , 53.24 +597.55 , 1196.64 , 94.71 +597.55 , 1794.96 , 136.03 +597.55 , 2393.28 , 177.45 +597.55 , 2991.60 , 219.01 +597.55 , 3589.92 , 260.75 +597.55 , 4188.24 , 302.67 +597.55 , 4786.56 , 344.78 +597.55 , 5384.88 , 387.07 +597.55 , 5983.20 , 429.54 +597.55 , 6581.52 , 472.21 +597.55 , 7179.84 , 515.06 +597.55 , 7778.16 , 558.11 +597.55 , 8376.48 , 601.34 +597.55 , 8974.80 , 644.76 +597.55 , 9573.12 , 688.37 +597.55 , 10171.44 , 732.17 +597.55 , 10769.76 , 776.15 +597.55 , 11368.08 , 820.33 +597.55 , 11966.40 , 864.69 +647.35 , -12984.38 , -763.53 +647.35 , -12335.16 , -726.65 +647.35 , -11685.94 , -689.55 +647.35 , -11036.72 , -652.22 +647.35 , -10387.50 , -614.67 +647.35 , -9738.28 , -576.89 +647.35 , -9089.06 , -538.89 +647.35 , -8439.84 , -500.67 +647.35 , -7790.63 , -462.22 +647.35 , -7141.41 , -423.56 +647.35 , -6492.19 , -384.67 +647.35 , -5842.97 , -345.56 +647.35 , -5193.75 , -306.22 +647.35 , -4544.53 , -266.66 +647.35 , -3895.31 , -226.86 +647.35 , -3246.09 , -186.83 +647.35 , -2596.88 , -146.54 +647.35 , -1947.66 , -105.95 +647.35 , -1298.44 , -64.90 +647.35 , -649.22 , -22.24 +647.35 , -129.84 , 0.00 +647.35 , 119.66 , 20.74 +647.35 , 598.32 , 59.20 +647.35 , 1196.64 , 104.27 +647.35 , 1794.96 , 149.12 +647.35 , 2393.28 , 194.05 +647.35 , 2991.60 , 239.16 +647.35 , 3589.92 , 284.45 +647.35 , 4188.24 , 329.96 +647.35 , 4786.56 , 375.67 +647.35 , 5384.88 , 421.60 +647.35 , 5983.20 , 467.75 +647.35 , 6581.52 , 514.11 +647.35 , 7179.84 , 560.69 +647.35 , 7778.16 , 607.48 +647.35 , 8376.48 , 654.50 +647.35 , 8974.80 , 701.73 +647.35 , 9573.12 , 749.18 +647.35 , 10171.44 , 796.84 +647.35 , 10769.76 , 844.73 +647.35 , 11368.08 , 892.83 +647.35 , 11966.40 , 941.14 +697.14 , -12984.38 , -817.17 +697.14 , -12335.16 , -777.76 +697.14 , -11685.94 , -738.08 +697.14 , -11036.72 , -698.15 +697.14 , -10387.50 , -657.96 +697.14 , -9738.28 , -617.52 +697.14 , -9089.06 , -576.82 +697.14 , -8439.84 , -535.86 +697.14 , -7790.63 , -494.65 +697.14 , -7141.41 , -453.18 +697.14 , -6492.19 , -411.45 +697.14 , -5842.97 , -369.47 +697.14 , -5193.75 , -327.22 +697.14 , -4544.53 , -284.72 +697.14 , -3895.31 , -241.95 +697.14 , -3246.09 , -198.90 +697.14 , -2596.88 , -155.54 +697.14 , -1947.66 , -111.82 +697.14 , -1298.44 , -67.51 +697.14 , -649.22 , -20.80 +697.14 , -129.84 , 0.00 +697.14 , 119.66 , 23.52 +697.14 , 598.32 , 65.48 +697.14 , 1196.64 , 114.20 +697.14 , 1794.96 , 162.59 +697.14 , 2393.28 , 211.06 +697.14 , 2991.60 , 259.72 +697.14 , 3589.92 , 308.59 +697.14 , 4188.24 , 357.69 +697.14 , 4786.56 , 407.04 +697.14 , 5384.88 , 456.62 +697.14 , 5983.20 , 506.46 +697.14 , 6581.52 , 556.54 +697.14 , 7179.84 , 606.87 +697.14 , 7778.16 , 657.45 +697.14 , 8376.48 , 708.28 +697.14 , 8974.80 , 759.35 +697.14 , 9573.12 , 810.68 +697.14 , 10171.44 , 862.25 +697.14 , 10769.76 , 914.07 +697.14 , 11368.08 , 966.13 +697.14 , 11966.40 , 1018.44 +746.94 , -12984.38 , -869.86 +746.94 , -12335.16 , -827.96 +746.94 , -11685.94 , -785.77 +746.94 , -11036.72 , -743.28 +746.94 , -10387.50 , -700.50 +746.94 , -9738.28 , -657.42 +746.94 , -9089.06 , -614.05 +746.94 , -8439.84 , -570.39 +746.94 , -7790.63 , -526.44 +746.94 , -7141.41 , -482.19 +746.94 , -6492.19 , -437.65 +746.94 , -5842.97 , -392.82 +746.94 , -5193.75 , -347.69 +746.94 , -4544.53 , -302.26 +746.94 , -3895.31 , -256.52 +746.94 , -3246.09 , -210.46 +746.94 , -2596.88 , -164.04 +746.94 , -1947.66 , -117.17 +746.94 , -1298.44 , -69.54 +746.94 , -649.22 , -18.27 +746.94 , -129.84 , 0.00 +746.94 , 119.66 , 26.49 +746.94 , 598.32 , 72.10 +746.94 , 1196.64 , 124.50 +746.94 , 1794.96 , 176.46 +746.94 , 2393.28 , 228.49 +746.94 , 2991.60 , 280.71 +746.94 , 3589.92 , 333.18 +746.94 , 4188.24 , 385.90 +746.94 , 4786.56 , 438.89 +746.94 , 5384.88 , 492.16 +746.94 , 5983.20 , 545.71 +746.94 , 6581.52 , 599.54 +746.94 , 7179.84 , 653.64 +746.94 , 7778.16 , 708.03 +746.94 , 8376.48 , 762.71 +746.94 , 8974.80 , 817.66 +746.94 , 9573.12 , 872.89 +746.94 , 10171.44 , 928.41 +746.94 , 10769.76 , 984.20 +746.94 , 11368.08 , 1040.27 +746.94 , 11966.40 , 1096.63 +796.73 , -12984.38 , -921.56 +796.73 , -12335.16 , -877.23 +796.73 , -11685.94 , -832.56 +796.73 , -11036.72 , -787.56 +796.73 , -10387.50 , -742.22 +796.73 , -9738.28 , -696.56 +796.73 , -9089.06 , -650.56 +796.73 , -8439.84 , -604.23 +796.73 , -7790.63 , -557.56 +796.73 , -7141.41 , -510.57 +796.73 , -6492.19 , -463.24 +796.73 , -5842.97 , -415.58 +796.73 , -5193.75 , -367.58 +796.73 , -4544.53 , -319.24 +796.73 , -3895.31 , -270.55 +796.73 , -3246.09 , -221.48 +796.73 , -2596.88 , -171.99 +796.73 , -1947.66 , -121.95 +796.73 , -1298.44 , -70.93 +796.73 , -649.22 , -14.10 +796.73 , -129.84 , 0.00 +796.73 , 119.66 , 29.68 +796.73 , 598.32 , 79.05 +796.73 , 1196.64 , 135.20 +796.73 , 1794.96 , 190.76 +796.73 , 2393.28 , 246.36 +796.73 , 2991.60 , 302.17 +796.73 , 3589.92 , 358.24 +796.73 , 4188.24 , 414.60 +796.73 , 4786.56 , 471.27 +796.73 , 5384.88 , 528.24 +796.73 , 5983.20 , 585.52 +796.73 , 6581.52 , 643.12 +796.73 , 7179.84 , 701.03 +796.73 , 7778.16 , 759.26 +796.73 , 8376.48 , 817.80 +796.73 , 8974.80 , 876.66 +796.73 , 9573.12 , 935.84 +796.73 , 10171.44 , 995.34 +796.73 , 10769.76 , 1055.15 +796.73 , 11368.08 , 1115.27 +796.73 , 11966.40 , 1175.71 +846.53 , -12984.38 , -972.24 +846.53 , -12335.16 , -925.52 +846.53 , -11685.94 , -878.43 +846.53 , -11036.72 , -830.96 +846.53 , -10387.50 , -783.11 +846.53 , -9738.28 , -734.89 +846.53 , -9089.06 , -686.30 +846.53 , -8439.84 , -637.33 +846.53 , -7790.63 , -587.99 +846.53 , -7141.41 , -538.28 +846.53 , -6492.19 , -488.19 +846.53 , -5842.97 , -437.72 +846.53 , -5193.75 , -386.87 +846.53 , -4544.53 , -335.63 +846.53 , -3895.31 , -283.99 +846.53 , -3246.09 , -231.92 +846.53 , -2596.88 , -179.35 +846.53 , -1947.66 , -126.12 +846.53 , -1298.44 , -71.60 +846.53 , -649.22 , -6.45 +846.53 , -129.84 , 0.00 +846.53 , 119.66 , 33.08 +846.53 , 598.32 , 86.37 +846.53 , 1196.64 , 146.31 +846.53 , 1794.96 , 205.50 +846.53 , 2393.28 , 264.70 +846.53 , 2991.60 , 324.11 +846.53 , 3589.92 , 383.81 +846.53 , 4188.24 , 443.83 +846.53 , 4786.56 , 504.18 +846.53 , 5384.88 , 564.87 +846.53 , 5983.20 , 625.91 +846.53 , 6581.52 , 687.30 +846.53 , 7179.84 , 749.05 +846.53 , 7778.16 , 811.14 +846.53 , 8376.48 , 873.59 +846.53 , 8974.80 , 936.40 +846.53 , 9573.12 , 999.56 +846.53 , 10171.44 , 1063.07 +846.53 , 10769.76 , 1126.93 +846.53 , 11368.08 , 1191.14 +846.53 , 11966.40 , 1255.71 +896.32 , -12984.38 , -1021.86 +896.32 , -12335.16 , -972.81 +896.32 , -11685.94 , -923.33 +896.32 , -11036.72 , -873.44 +896.32 , -10387.50 , -823.13 +896.32 , -9738.28 , -772.39 +896.32 , -9089.06 , -721.24 +896.32 , -8439.84 , -669.67 +896.32 , -7790.63 , -617.68 +896.32 , -7141.41 , -565.27 +896.32 , -6492.19 , -512.45 +896.32 , -5842.97 , -459.19 +896.32 , -5193.75 , -405.51 +896.32 , -4544.53 , -351.39 +896.32 , -3895.31 , -296.81 +896.32 , -3246.09 , -241.73 +896.32 , -2596.88 , -186.07 +896.32 , -1947.66 , -129.61 +896.32 , -1298.44 , -71.46 +896.32 , -649.22 , 0.00 +896.32 , -129.84 , 0.00 +896.32 , 119.66 , 36.70 +896.32 , 598.32 , 94.04 +896.32 , 1196.64 , 157.85 +896.32 , 1794.96 , 220.70 +896.32 , 2393.28 , 283.52 +896.32 , 2991.60 , 346.56 +896.32 , 3589.92 , 409.90 +896.32 , 4188.24 , 473.59 +896.32 , 4786.56 , 537.65 +896.32 , 5384.88 , 602.09 +896.32 , 5983.20 , 666.91 +896.32 , 6581.52 , 732.12 +896.32 , 7179.84 , 797.72 +896.32 , 7778.16 , 863.72 +896.32 , 8376.48 , 930.10 +896.32 , 8974.80 , 996.88 +896.32 , 9573.12 , 1064.05 +896.32 , 10171.44 , 1131.62 +896.32 , 10769.76 , 1199.57 +896.32 , 11368.08 , 1267.92 +896.32 , 11966.40 , 1336.65 +946.12 , -12984.38 , -1070.37 +946.12 , -12335.16 , -1019.04 +946.12 , -11685.94 , -967.24 +946.12 , -11036.72 , -914.96 +946.12 , -10387.50 , -862.23 +946.12 , -9738.28 , -809.02 +946.12 , -9089.06 , -755.35 +946.12 , -8439.84 , -701.21 +946.12 , -7790.63 , -646.60 +946.12 , -7141.41 , -591.53 +946.12 , -6492.19 , -535.99 +946.12 , -5842.97 , -479.97 +946.12 , -5193.75 , -423.47 +946.12 , -4544.53 , -366.48 +946.12 , -3895.31 , -308.96 +946.12 , -3246.09 , -250.88 +946.12 , -2596.88 , -192.11 +946.12 , -1947.66 , -132.36 +946.12 , -1298.44 , -70.38 +946.12 , -649.22 , 0.00 +946.12 , -129.84 , 0.00 +946.12 , 119.66 , 40.53 +946.12 , 598.32 , 102.10 +946.12 , 1196.64 , 169.83 +946.12 , 1794.96 , 236.37 +946.12 , 2393.28 , 302.84 +946.12 , 2991.60 , 369.53 +946.12 , 3589.92 , 436.54 +946.12 , 4188.24 , 503.92 +946.12 , 4786.56 , 571.71 +946.12 , 5384.88 , 639.91 +946.12 , 5983.20 , 708.54 +946.12 , 6581.52 , 777.59 +946.12 , 7179.84 , 847.08 +946.12 , 7778.16 , 917.00 +946.12 , 8376.48 , 987.35 +946.12 , 8974.80 , 1058.14 +946.12 , 9573.12 , 1129.36 +946.12 , 10171.44 , 1201.01 +946.12 , 10769.76 , 1273.09 +946.12 , 11368.08 , 1345.61 +946.12 , 11966.40 , 1418.56 +995.92 , -12984.38 , -1117.74 +995.92 , -12335.16 , -1064.18 +995.92 , -11685.94 , -1010.10 +995.92 , -11036.72 , -955.49 +995.92 , -10387.50 , -900.37 +995.92 , -9738.28 , -844.73 +995.92 , -9089.06 , -788.58 +995.92 , -8439.84 , -731.90 +995.92 , -7790.63 , -674.71 +995.92 , -7141.41 , -617.00 +995.92 , -6492.19 , -558.77 +995.92 , -5842.97 , -500.01 +995.92 , -5193.75 , -440.71 +995.92 , -4544.53 , -380.85 +995.92 , -3895.31 , -320.40 +995.92 , -3246.09 , -259.31 +995.92 , -2596.88 , -197.41 +995.92 , -1947.66 , -134.30 +995.92 , -1298.44 , -68.24 +995.92 , -649.22 , 0.00 +995.92 , -129.84 , 0.00 +995.92 , 119.66 , 44.59 +995.92 , 598.32 , 110.53 +995.92 , 1196.64 , 182.27 +995.92 , 1794.96 , 252.55 + diff --git a/VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_1_following_curve.viepco b/VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_1_following_curve.viepco new file mode 100644 index 0000000000..5f8617cdc6 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_1_following_curve.viepco @@ -0,0 +1,837 @@ +n_out , T_out , P_el +0.00 , -12984.38 , 0.00 +0.00 , -12335.16 , 0.00 +0.00 , -11685.94 , 0.00 +0.00 , -11036.72 , 0.00 +0.00 , -10387.50 , 0.00 +0.00 , -9738.28 , 0.00 +0.00 , -9089.06 , -0.13 +0.00 , -8439.84 , -0.66 +0.00 , -7790.63 , -0.98 +0.00 , -7141.41 , -1.19 +0.00 , -6492.19 , -1.32 +0.00 , -5842.97 , -1.38 +0.00 , -5193.75 , -1.39 +0.00 , -4544.53 , -1.35 +0.00 , -3895.31 , -1.26 +0.00 , -3246.09 , -1.13 +0.00 , -2596.88 , -0.97 +0.00 , -1947.66 , -0.77 +0.00 , -1298.44 , -0.53 +0.00 , -649.22 , -0.27 +0.00 , -129.84 , -0.02 +0.00 , 119.66 , 0.13 +0.00 , 598.32 , 0.56 +0.00 , 1196.64 , 1.12 +0.00 , 1794.96 , 1.70 +0.00 , 2393.28 , 2.31 +0.00 , 2991.60 , 2.93 +0.00 , 3589.92 , 3.58 +0.00 , 4188.24 , 4.25 +0.00 , 4786.56 , 4.93 +0.00 , 5384.88 , 5.64 +0.00 , 5983.20 , 6.37 +0.00 , 6581.52 , 7.12 +0.00 , 7179.84 , 7.88 +0.00 , 7778.16 , 8.67 +0.00 , 8376.48 , 9.47 +0.00 , 8974.80 , 10.29 +0.00 , 9573.12 , 11.13 +0.00 , 10171.44 , 11.99 +0.00 , 10769.76 , 12.87 +0.00 , 11368.08 , 13.76 +0.00 , 11966.40 , 14.67 +4.98 , -12984.38 , 0.00 +4.98 , -12335.16 , 0.00 +4.98 , -11685.94 , 0.00 +4.98 , -11036.72 , 0.00 +4.98 , -10387.50 , 0.00 +4.98 , -9738.28 , 0.00 +4.98 , -9089.06 , -0.50 +4.98 , -8439.84 , -0.84 +4.98 , -7790.63 , -1.04 +4.98 , -7141.41 , -1.16 +4.98 , -6492.19 , -1.22 +4.98 , -5842.97 , -1.24 +4.98 , -5193.75 , -1.21 +4.98 , -4544.53 , -1.15 +4.98 , -3895.31 , -1.06 +4.98 , -3246.09 , -0.94 +4.98 , -2596.88 , -0.80 +4.98 , -1947.66 , -0.62 +4.98 , -1298.44 , -0.43 +4.98 , -649.22 , -0.21 +4.98 , -129.84 , -0.02 +4.98 , 119.66 , 0.10 +4.98 , 598.32 , 0.43 +4.98 , 1196.64 , 0.85 +4.98 , 1794.96 , 1.30 +4.98 , 2393.28 , 1.75 +4.98 , 2991.60 , 2.23 +4.98 , 3589.92 , 2.71 +4.98 , 4188.24 , 3.21 +4.98 , 4786.56 , 3.73 +4.98 , 5384.88 , 4.26 +4.98 , 5983.20 , 4.80 +4.98 , 6581.52 , 5.36 +4.98 , 7179.84 , 5.93 +4.98 , 7778.16 , 6.52 +4.98 , 8376.48 , 7.12 +4.98 , 8974.80 , 7.73 +4.98 , 9573.12 , 8.35 +4.98 , 10171.44 , 8.99 +4.98 , 10769.76 , 9.64 +4.98 , 11368.08 , 10.30 +4.98 , 11966.40 , 10.98 +49.80 , -12984.38 , -58.10 +49.80 , -12335.16 , -55.37 +49.80 , -11685.94 , -52.62 +49.80 , -11036.72 , -49.85 +49.80 , -10387.50 , -47.06 +49.80 , -9738.28 , -44.25 +49.80 , -9089.06 , -41.42 +49.80 , -8439.84 , -38.57 +49.80 , -7790.63 , -35.70 +49.80 , -7141.41 , -32.81 +49.80 , -6492.19 , -29.90 +49.80 , -5842.97 , -26.98 +49.80 , -5193.75 , -24.03 +49.80 , -4544.53 , -21.07 +49.80 , -3895.31 , -18.08 +49.80 , -3246.09 , -15.08 +49.80 , -2596.88 , -12.06 +49.80 , -1947.66 , -9.02 +49.80 , -1298.44 , -5.96 +49.80 , -649.22 , -2.88 +49.80 , -129.84 , -0.37 +49.80 , 119.66 , 0.90 +49.80 , 598.32 , 3.68 +49.80 , 1196.64 , 7.16 +49.80 , 1794.96 , 10.66 +49.80 , 2393.28 , 14.17 +49.80 , 2991.60 , 17.71 +49.80 , 3589.92 , 21.26 +49.80 , 4188.24 , 24.84 +49.80 , 4786.56 , 28.43 +49.80 , 5384.88 , 32.04 +49.80 , 5983.20 , 35.67 +49.80 , 6581.52 , 39.32 +49.80 , 7179.84 , 42.99 +49.80 , 7778.16 , 46.68 +49.80 , 8376.48 , 50.38 +49.80 , 8974.80 , 54.11 +49.80 , 9573.12 , 57.85 +49.80 , 10171.44 , 61.61 +49.80 , 10769.76 , 65.39 +49.80 , 11368.08 , 69.19 +49.80 , 11966.40 , 73.01 +99.59 , -12984.38 , -120.57 +99.59 , -12335.16 , -114.73 +99.59 , -11685.94 , -108.87 +99.59 , -11036.72 , -102.99 +99.59 , -10387.50 , -97.08 +99.59 , -9738.28 , -91.15 +99.59 , -9089.06 , -85.20 +99.59 , -8439.84 , -79.23 +99.59 , -7790.63 , -73.23 +99.59 , -7141.41 , -67.21 +99.59 , -6492.19 , -61.17 +99.59 , -5842.97 , -55.10 +99.59 , -5193.75 , -49.01 +99.59 , -4544.53 , -42.90 +99.59 , -3895.31 , -36.77 +99.59 , -3246.09 , -30.61 +99.59 , -2596.88 , -24.43 +99.59 , -1947.66 , -18.23 +99.59 , -1298.44 , -12.01 +99.59 , -649.22 , -5.76 +99.59 , -129.84 , -0.66 +99.59 , 119.66 , 1.84 +99.59 , 598.32 , 7.35 +99.59 , 1196.64 , 14.22 +99.59 , 1794.96 , 21.11 +99.59 , 2393.28 , 28.02 +99.59 , 2991.60 , 34.96 +99.59 , 3589.92 , 41.92 +99.59 , 4188.24 , 48.90 +99.59 , 4786.56 , 55.90 +99.59 , 5384.88 , 62.93 +99.59 , 5983.20 , 69.98 +99.59 , 6581.52 , 77.05 +99.59 , 7179.84 , 84.15 +99.59 , 7778.16 , 91.27 +99.59 , 8376.48 , 98.41 +99.59 , 8974.80 , 105.58 +99.59 , 9573.12 , 112.76 +99.59 , 10171.44 , 119.97 +99.59 , 10769.76 , 127.21 +99.59 , 11368.08 , 134.46 +99.59 , 11966.40 , 141.74 +149.39 , -12984.38 , -182.44 +149.39 , -12335.16 , -173.55 +149.39 , -11685.94 , -164.62 +149.39 , -11036.72 , -155.67 +149.39 , -10387.50 , -146.69 +149.39 , -9738.28 , -137.68 +149.39 , -9089.06 , -128.65 +149.39 , -8439.84 , -119.58 +149.39 , -7790.63 , -110.49 +149.39 , -7141.41 , -101.36 +149.39 , -6492.19 , -92.21 +149.39 , -5842.97 , -83.03 +149.39 , -5193.75 , -73.82 +149.39 , -4544.53 , -64.58 +149.39 , -3895.31 , -55.31 +149.39 , -3246.09 , -46.02 +149.39 , -2596.88 , -36.70 +149.39 , -1947.66 , -27.34 +149.39 , -1298.44 , -17.96 +149.39 , -649.22 , -8.54 +149.39 , -129.84 , -0.79 +149.39 , 119.66 , 2.86 +149.39 , 598.32 , 11.12 +149.39 , 1196.64 , 21.39 +149.39 , 1794.96 , 31.68 +149.39 , 2393.28 , 41.99 +149.39 , 2991.60 , 52.34 +149.39 , 3589.92 , 62.71 +149.39 , 4188.24 , 73.12 +149.39 , 4786.56 , 83.55 +149.39 , 5384.88 , 94.01 +149.39 , 5983.20 , 104.50 +149.39 , 6581.52 , 115.02 +149.39 , 7179.84 , 125.57 +149.39 , 7778.16 , 136.15 +149.39 , 8376.48 , 146.76 +149.39 , 8974.80 , 157.40 +149.39 , 9573.12 , 168.06 +149.39 , 10171.44 , 178.76 +149.39 , 10769.76 , 189.48 +149.39 , 11368.08 , 200.23 +149.39 , 11966.40 , 211.02 +199.18 , -12984.38 , -243.71 +199.18 , -12335.16 , -231.81 +199.18 , -11685.94 , -219.87 +199.18 , -11036.72 , -207.89 +199.18 , -10387.50 , -195.88 +199.18 , -9738.28 , -183.83 +199.18 , -9089.06 , -171.74 +199.18 , -8439.84 , -159.61 +199.18 , -7790.63 , -147.45 +199.18 , -7141.41 , -135.25 +199.18 , -6492.19 , -123.01 +199.18 , -5842.97 , -110.74 +199.18 , -5193.75 , -98.43 +199.18 , -4544.53 , -86.08 +199.18 , -3895.31 , -73.70 +199.18 , -3246.09 , -61.27 +199.18 , -2596.88 , -48.82 +199.18 , -1947.66 , -36.32 +199.18 , -1298.44 , -23.78 +199.18 , -649.22 , -11.19 +199.18 , -129.84 , -0.63 +199.18 , 119.66 , 3.98 +199.18 , 598.32 , 15.01 +199.18 , 1196.64 , 28.68 +199.18 , 1794.96 , 42.37 +199.18 , 2393.28 , 56.10 +199.18 , 2991.60 , 69.87 +199.18 , 3589.92 , 83.67 +199.18 , 4188.24 , 97.52 +199.18 , 4786.56 , 111.40 +199.18 , 5384.88 , 125.31 +199.18 , 5983.20 , 139.27 +199.18 , 6581.52 , 153.26 +199.18 , 7179.84 , 167.29 +199.18 , 7778.16 , 181.36 +199.18 , 8376.48 , 195.46 +199.18 , 8974.80 , 209.61 +199.18 , 9573.12 , 223.79 +199.18 , 10171.44 , 238.01 +199.18 , 10769.76 , 252.26 +199.18 , 11368.08 , 266.56 +199.18 , 11966.40 , 280.89 +248.98 , -12984.38 , -304.37 +248.98 , -12335.16 , -289.50 +248.98 , -11685.94 , -274.59 +248.98 , -11036.72 , -259.63 +248.98 , -10387.50 , -244.61 +248.98 , -9738.28 , -229.56 +248.98 , -9089.06 , -214.45 +248.98 , -8439.84 , -199.30 +248.98 , -7790.63 , -184.10 +248.98 , -7141.41 , -168.85 +248.98 , -6492.19 , -153.55 +248.98 , -5842.97 , -138.20 +248.98 , -5193.75 , -122.81 +248.98 , -4544.53 , -107.37 +248.98 , -3895.31 , -91.88 +248.98 , -3246.09 , -76.35 +248.98 , -2596.88 , -60.76 +248.98 , -1947.66 , -45.13 +248.98 , -1298.44 , -29.44 +248.98 , -649.22 , -13.67 +248.98 , -129.84 , 0.00 +248.98 , 119.66 , 5.21 +248.98 , 598.32 , 19.04 +248.98 , 1196.64 , 36.13 +248.98 , 1794.96 , 53.24 +248.98 , 2393.28 , 70.39 +248.98 , 2991.60 , 87.59 +248.98 , 3589.92 , 104.83 +248.98 , 4188.24 , 122.13 +248.98 , 4786.56 , 139.47 +248.98 , 5384.88 , 156.87 +248.98 , 5983.20 , 174.31 +248.98 , 6581.52 , 191.80 +248.98 , 7179.84 , 209.33 +248.98 , 7778.16 , 226.92 +248.98 , 8376.48 , 244.56 +248.98 , 8974.80 , 262.24 +248.98 , 9573.12 , 279.97 +248.98 , 10171.44 , 297.76 +248.98 , 10769.76 , 315.58 +248.98 , 11368.08 , 333.46 +248.98 , 11966.40 , 351.39 +298.77 , -12984.38 , -364.37 +298.77 , -12335.16 , -346.59 +298.77 , -11685.94 , -328.74 +298.77 , -11036.72 , -310.84 +298.77 , -10387.50 , -292.87 +298.77 , -9738.28 , -274.84 +298.77 , -9089.06 , -256.75 +298.77 , -8439.84 , -238.60 +298.77 , -7790.63 , -220.39 +298.77 , -7141.41 , -202.12 +298.77 , -6492.19 , -183.79 +298.77 , -5842.97 , -165.40 +298.77 , -5193.75 , -146.94 +298.77 , -4544.53 , -128.43 +298.77 , -3895.31 , -109.85 +298.77 , -3246.09 , -91.21 +298.77 , -2596.88 , -72.51 +298.77 , -1947.66 , -53.75 +298.77 , -1298.44 , -34.91 +298.77 , -649.22 , -15.95 +298.77 , -129.84 , 0.00 +298.77 , 119.66 , 6.58 +298.77 , 598.32 , 23.25 +298.77 , 1196.64 , 43.76 +298.77 , 1794.96 , 64.29 +298.77 , 2393.28 , 84.87 +298.77 , 2991.60 , 105.52 +298.77 , 3589.92 , 126.22 +298.77 , 4188.24 , 146.98 +298.77 , 4786.56 , 167.81 +298.77 , 5384.88 , 188.70 +298.77 , 5983.20 , 209.65 +298.77 , 6581.52 , 230.66 +298.77 , 7179.84 , 251.73 +298.77 , 7778.16 , 272.87 +298.77 , 8376.48 , 294.07 +298.77 , 8974.80 , 315.33 +298.77 , 9573.12 , 336.65 +298.77 , 10171.44 , 358.03 +298.77 , 10769.76 , 379.47 +298.77 , 11368.08 , 400.98 +298.77 , 11966.40 , 422.54 +348.57 , -12984.38 , -423.69 +348.57 , -12335.16 , -403.04 +348.57 , -11685.94 , -382.31 +348.57 , -11036.72 , -361.50 +348.57 , -10387.50 , -340.62 +348.57 , -9738.28 , -319.66 +348.57 , -9089.06 , -298.62 +348.57 , -8439.84 , -277.51 +348.57 , -7790.63 , -256.31 +348.57 , -7141.41 , -235.05 +348.57 , -6492.19 , -213.70 +348.57 , -5842.97 , -192.28 +348.57 , -5193.75 , -170.79 +348.57 , -4544.53 , -149.21 +348.57 , -3895.31 , -127.57 +348.57 , -3246.09 , -105.84 +348.57 , -2596.88 , -84.03 +348.57 , -1947.66 , -62.14 +348.57 , -1298.44 , -40.16 +348.57 , -649.22 , -18.00 +348.57 , -129.84 , 0.00 +348.57 , 119.66 , 8.09 +348.57 , 598.32 , 27.64 +348.57 , 1196.64 , 51.59 +348.57 , 1794.96 , 75.56 +348.57 , 2393.28 , 99.58 +348.57 , 2991.60 , 123.68 +348.57 , 3589.92 , 147.86 +348.57 , 4188.24 , 172.10 +348.57 , 4786.56 , 196.43 +348.57 , 5384.88 , 220.84 +348.57 , 5983.20 , 245.32 +348.57 , 6581.52 , 269.88 +348.57 , 7179.84 , 294.51 +348.57 , 7778.16 , 319.23 +348.57 , 8376.48 , 344.02 +348.57 , 8974.80 , 368.89 +348.57 , 9573.12 , 393.83 +348.57 , 10171.44 , 418.85 +348.57 , 10769.76 , 443.95 +348.57 , 11368.08 , 469.13 +348.57 , 11966.40 , 494.38 +398.37 , -12984.38 , -482.31 +398.37 , -12335.16 , -458.83 +398.37 , -11685.94 , -435.26 +398.37 , -11036.72 , -411.59 +398.37 , -10387.50 , -387.83 +398.37 , -9738.28 , -363.97 +398.37 , -9089.06 , -340.02 +398.37 , -8439.84 , -315.97 +398.37 , -7790.63 , -291.83 +398.37 , -7141.41 , -267.59 +398.37 , -6492.19 , -243.26 +398.37 , -5842.97 , -218.84 +398.37 , -5193.75 , -194.32 +398.37 , -4544.53 , -169.71 +398.37 , -3895.31 , -145.00 +398.37 , -3246.09 , -120.19 +398.37 , -2596.88 , -95.29 +398.37 , -1947.66 , -70.28 +398.37 , -1298.44 , -45.14 +398.37 , -649.22 , -19.76 +398.37 , -129.84 , 0.00 +398.37 , 119.66 , 9.76 +398.37 , 598.32 , 32.25 +398.37 , 1196.64 , 59.66 +398.37 , 1794.96 , 87.07 +398.37 , 2393.28 , 114.55 +398.37 , 2991.60 , 142.11 +398.37 , 3589.92 , 169.77 +398.37 , 4188.24 , 197.52 +398.37 , 4786.56 , 225.37 +398.37 , 5384.88 , 253.31 +398.37 , 5983.20 , 281.34 +398.37 , 6581.52 , 309.47 +398.37 , 7179.84 , 337.70 +398.37 , 7778.16 , 366.02 +398.37 , 8376.48 , 394.44 +398.37 , 8974.80 , 422.95 +398.37 , 9573.12 , 451.56 +398.37 , 10171.44 , 480.26 +398.37 , 10769.76 , 509.05 +398.37 , 11368.08 , 537.94 +398.37 , 11966.40 , 566.93 +448.16 , -12984.38 , -540.17 +448.16 , -12335.16 , -513.92 +448.16 , -11685.94 , -487.55 +448.16 , -11036.72 , -461.06 +448.16 , -10387.50 , -434.46 +448.16 , -9738.28 , -407.75 +448.16 , -9089.06 , -380.92 +448.16 , -8439.84 , -353.97 +448.16 , -7790.63 , -326.91 +448.16 , -7141.41 , -299.73 +448.16 , -6492.19 , -272.44 +448.16 , -5842.97 , -245.03 +448.16 , -5193.75 , -217.51 +448.16 , -4544.53 , -189.87 +448.16 , -3895.31 , -162.12 +448.16 , -3246.09 , -134.25 +448.16 , -2596.88 , -106.26 +448.16 , -1947.66 , -78.13 +448.16 , -1298.44 , -49.84 +448.16 , -649.22 , -21.19 +448.16 , -129.84 , 0.00 +448.16 , 119.66 , 11.59 +448.16 , 598.32 , 37.10 +448.16 , 1196.64 , 67.98 +448.16 , 1794.96 , 98.85 +448.16 , 2393.28 , 129.79 +448.16 , 2991.60 , 160.84 +448.16 , 3589.92 , 191.99 +448.16 , 4188.24 , 223.26 +448.16 , 4786.56 , 254.64 +448.16 , 5384.88 , 286.14 +448.16 , 5983.20 , 317.75 +448.16 , 6581.52 , 349.48 +448.16 , 7179.84 , 381.32 +448.16 , 7778.16 , 413.28 +448.16 , 8376.48 , 445.36 +448.16 , 8974.80 , 477.54 +448.16 , 9573.12 , 509.85 +448.16 , 10171.44 , 542.27 +448.16 , 10769.76 , 574.80 +448.16 , 11368.08 , 607.45 +448.16 , 11966.40 , 640.21 +497.96 , -12984.38 , -597.26 +497.96 , -12335.16 , -568.28 +497.96 , -11685.94 , -539.16 +497.96 , -11036.72 , -509.90 +497.96 , -10387.50 , -480.50 +497.96 , -9738.28 , -450.96 +497.96 , -9089.06 , -421.28 +497.96 , -8439.84 , -391.47 +497.96 , -7790.63 , -361.52 +497.96 , -7141.41 , -331.43 +497.96 , -6492.19 , -301.20 +497.96 , -5842.97 , -270.83 +497.96 , -5193.75 , -240.33 +497.96 , -4544.53 , -209.68 +497.96 , -3895.31 , -178.90 +497.96 , -3246.09 , -147.97 +497.96 , -2596.88 , -116.90 +497.96 , -1947.66 , -85.66 +497.96 , -1298.44 , -54.21 +497.96 , -649.22 , -22.23 +497.96 , -129.84 , 0.00 +497.96 , 119.66 , 13.60 +497.96 , 598.32 , 42.20 +497.96 , 1196.64 , 76.58 +497.96 , 1794.96 , 110.92 +497.96 , 2393.28 , 145.34 +497.96 , 2991.60 , 179.88 +497.96 , 3589.92 , 214.55 +497.96 , 4188.24 , 249.35 +497.96 , 4786.56 , 284.29 +497.96 , 5384.88 , 319.36 +497.96 , 5983.20 , 354.57 +497.96 , 6581.52 , 389.92 +497.96 , 7179.84 , 425.41 +497.96 , 7778.16 , 461.03 +497.96 , 8376.48 , 496.79 +497.96 , 8974.80 , 532.69 +497.96 , 9573.12 , 568.73 +497.96 , 10171.44 , 604.90 +497.96 , 10769.76 , 641.21 +497.96 , 11368.08 , 677.66 +497.96 , 11966.40 , 714.24 +547.75 , -12984.38 , -653.54 +547.75 , -12335.16 , -621.88 +547.75 , -11685.94 , -590.05 +547.75 , -11036.72 , -558.06 +547.75 , -10387.50 , -525.90 +547.75 , -9738.28 , -493.58 +547.75 , -9089.06 , -461.09 +547.75 , -8439.84 , -428.44 +547.75 , -7790.63 , -395.63 +547.75 , -7141.41 , -362.65 +547.75 , -6492.19 , -329.51 +547.75 , -5842.97 , -296.21 +547.75 , -5193.75 , -262.74 +547.75 , -4544.53 , -229.11 +547.75 , -3895.31 , -195.31 +547.75 , -3246.09 , -161.34 +547.75 , -2596.88 , -127.18 +547.75 , -1947.66 , -92.83 +547.75 , -1298.44 , -58.20 +547.75 , -649.22 , -22.82 +547.75 , -129.84 , 0.00 +547.75 , 119.66 , 15.79 +547.75 , 598.32 , 47.58 +547.75 , 1196.64 , 85.48 +547.75 , 1794.96 , 123.30 +547.75 , 2393.28 , 161.22 +547.75 , 2991.60 , 199.26 +547.75 , 3589.92 , 237.46 +547.75 , 4188.24 , 275.81 +547.75 , 4786.56 , 314.32 +547.75 , 5384.88 , 352.99 +547.75 , 5983.20 , 391.83 +547.75 , 6581.52 , 430.82 +547.75 , 7179.84 , 469.98 +547.75 , 7778.16 , 509.30 +547.75 , 8376.48 , 548.78 +547.75 , 8974.80 , 588.42 +547.75 , 9573.12 , 628.23 +547.75 , 10171.44 , 668.20 +547.75 , 10769.76 , 708.32 +547.75 , 11368.08 , 748.61 +547.75 , 11966.40 , 789.06 +597.55 , -12984.38 , -708.97 +597.55 , -12335.16 , -674.68 +597.55 , -11685.94 , -640.19 +597.55 , -11036.72 , -605.51 +597.55 , -10387.50 , -570.63 +597.55 , -9738.28 , -535.56 +597.55 , -9089.06 , -500.30 +597.55 , -8439.84 , -464.85 +597.55 , -7790.63 , -429.21 +597.55 , -7141.41 , -393.37 +597.55 , -6492.19 , -357.35 +597.55 , -5842.97 , -321.13 +597.55 , -5193.75 , -284.71 +597.55 , -4544.53 , -248.11 +597.55 , -3895.31 , -211.31 +597.55 , -3246.09 , -174.30 +597.55 , -2596.88 , -137.08 +597.55 , -1947.66 , -99.61 +597.55 , -1298.44 , -61.78 +597.55 , -649.22 , -22.86 +597.55 , -129.84 , 0.00 +597.55 , 119.66 , 18.17 +597.55 , 598.32 , 53.24 +597.55 , 1196.64 , 94.71 +597.55 , 1794.96 , 136.03 +597.55 , 2393.28 , 177.45 +597.55 , 2991.60 , 219.01 +597.55 , 3589.92 , 260.75 +597.55 , 4188.24 , 302.67 +597.55 , 4786.56 , 344.78 +597.55 , 5384.88 , 387.07 +597.55 , 5983.20 , 429.54 +597.55 , 6581.52 , 472.21 +597.55 , 7179.84 , 515.06 +597.55 , 7778.16 , 558.11 +597.55 , 8376.48 , 601.34 +597.55 , 8974.80 , 644.76 +597.55 , 9573.12 , 688.37 +597.55 , 10171.44 , 732.17 +597.55 , 10769.76 , 776.15 +597.55 , 11368.08 , 820.33 +597.55 , 11966.40 , 864.69 +647.35 , -12984.38 , -763.53 +647.35 , -12335.16 , -726.65 +647.35 , -11685.94 , -689.55 +647.35 , -11036.72 , -652.22 +647.35 , -10387.50 , -614.67 +647.35 , -9738.28 , -576.89 +647.35 , -9089.06 , -538.89 +647.35 , -8439.84 , -500.67 +647.35 , -7790.63 , -462.22 +647.35 , -7141.41 , -423.56 +647.35 , -6492.19 , -384.67 +647.35 , -5842.97 , -345.56 +647.35 , -5193.75 , -306.22 +647.35 , -4544.53 , -266.66 +647.35 , -3895.31 , -226.86 +647.35 , -3246.09 , -186.83 +647.35 , -2596.88 , -146.54 +647.35 , -1947.66 , -105.95 +647.35 , -1298.44 , -64.90 +647.35 , -649.22 , -22.24 +647.35 , -129.84 , 0.00 +647.35 , 119.66 , 20.74 +647.35 , 598.32 , 59.20 +647.35 , 1196.64 , 104.27 +647.35 , 1794.96 , 149.12 +647.35 , 2393.28 , 194.05 +647.35 , 2991.60 , 239.16 +647.35 , 3589.92 , 284.45 +647.35 , 4188.24 , 329.96 +647.35 , 4786.56 , 375.67 +647.35 , 5384.88 , 421.60 +647.35 , 5983.20 , 467.75 +647.35 , 6581.52 , 514.11 +647.35 , 7179.84 , 560.69 +647.35 , 7778.16 , 607.48 +647.35 , 8376.48 , 654.50 +647.35 , 8974.80 , 701.73 +647.35 , 9573.12 , 749.18 +647.35 , 10171.44 , 796.84 +647.35 , 10769.76 , 844.73 +647.35 , 11368.08 , 892.83 +647.35 , 11966.40 , 941.14 +697.14 , -129.84 , 0.00 +697.14 , 119.66 , 23.52 +746.94 , -12984.38 , -869.86 +746.94 , -12335.16 , -827.96 +746.94 , -11685.94 , -785.77 +746.94 , -11036.72 , -743.28 +746.94 , -10387.50 , -700.50 +746.94 , -9738.28 , -657.42 +746.94 , -9089.06 , -614.05 +746.94 , -8439.84 , -570.39 +746.94 , -7790.63 , -526.44 +746.94 , -7141.41 , -482.19 +746.94 , -6492.19 , -437.65 +746.94 , -5842.97 , -392.82 +746.94 , -5193.75 , -347.69 +746.94 , -4544.53 , -302.26 +746.94 , -3895.31 , -256.52 +746.94 , -3246.09 , -210.46 +746.94 , -2596.88 , -164.04 +746.94 , -1947.66 , -117.17 +746.94 , -1298.44 , -69.54 +746.94 , -649.22 , -18.27 +746.94 , -129.84 , 0.00 +746.94 , 119.66 , 26.49 +746.94 , 598.32 , 72.10 +746.94 , 1196.64 , 124.50 +746.94 , 1794.96 , 176.46 +746.94 , 2393.28 , 228.49 +746.94 , 2991.60 , 280.71 +746.94 , 3589.92 , 333.18 +746.94 , 4188.24 , 385.90 +746.94 , 4786.56 , 438.89 +746.94 , 5384.88 , 492.16 +746.94 , 5983.20 , 545.71 +746.94 , 6581.52 , 599.54 +746.94 , 7179.84 , 653.64 +746.94 , 7778.16 , 708.03 +746.94 , 8376.48 , 762.71 +746.94 , 8974.80 , 817.66 +746.94 , 9573.12 , 872.89 +746.94 , 10171.44 , 928.41 +746.94 , 10769.76 , 984.20 +746.94 , 11368.08 , 1040.27 +746.94 , 11966.40 , 1096.63 +796.73 , -12984.38 , -921.56 +796.73 , -12335.16 , -877.23 +796.73 , -11685.94 , -832.56 +796.73 , -11036.72 , -787.56 +796.73 , -10387.50 , -742.22 +796.73 , -9738.28 , -696.56 +796.73 , -9089.06 , -650.56 +796.73 , -8439.84 , -604.23 +796.73 , -7790.63 , -557.56 +796.73 , -7141.41 , -510.57 +796.73 , -6492.19 , -463.24 +796.73 , -5842.97 , -415.58 +796.73 , -5193.75 , -367.58 +796.73 , -4544.53 , -319.24 +796.73 , -3895.31 , -270.55 +796.73 , -3246.09 , -221.48 +796.73 , -2596.88 , -171.99 +796.73 , -1947.66 , -121.95 +796.73 , -1298.44 , -70.93 +796.73 , -649.22 , -14.10 +796.73 , -129.84 , 0.00 +796.73 , 119.66 , 29.68 +796.73 , 598.32 , 79.05 +796.73 , 1196.64 , 135.20 +796.73 , 1794.96 , 190.76 +796.73 , 2393.28 , 246.36 +796.73 , 2991.60 , 302.17 +796.73 , 3589.92 , 358.24 +796.73 , 4188.24 , 414.60 +796.73 , 4786.56 , 471.27 +796.73 , 5384.88 , 528.24 +796.73 , 5983.20 , 585.52 +796.73 , 6581.52 , 643.12 +796.73 , 7179.84 , 701.03 +796.73 , 7778.16 , 759.26 +796.73 , 8376.48 , 817.80 +796.73 , 8974.80 , 876.66 +796.73 , 9573.12 , 935.84 +796.73 , 10171.44 , 995.34 +796.73 , 10769.76 , 1055.15 +796.73 , 11368.08 , 1115.27 +796.73 , 11966.40 , 1175.71 +846.53 , -12984.38 , -972.24 +846.53 , -12335.16 , -925.52 +846.53 , -11685.94 , -878.43 +846.53 , -11036.72 , -830.96 +846.53 , -10387.50 , -783.11 +846.53 , -9738.28 , -734.89 +846.53 , -9089.06 , -686.30 +846.53 , -8439.84 , -637.33 +846.53 , -7790.63 , -587.99 +846.53 , -7141.41 , -538.28 +846.53 , -6492.19 , -488.19 +846.53 , -5842.97 , -437.72 +846.53 , -5193.75 , -386.87 +846.53 , -4544.53 , -335.63 +846.53 , -3895.31 , -283.99 +846.53 , -3246.09 , -231.92 +846.53 , -2596.88 , -179.35 +846.53 , -1947.66 , -126.12 +846.53 , -1298.44 , -71.60 +846.53 , -649.22 , -6.45 +846.53 , -129.84 , 0.00 +846.53 , 119.66 , 33.08 +846.53 , 598.32 , 86.37 +846.53 , 1196.64 , 146.31 +846.53 , 1794.96 , 205.50 +846.53 , 2393.28 , 264.70 +846.53 , 2991.60 , 324.11 +846.53 , 3589.92 , 383.81 +846.53 , 4188.24 , 443.83 +846.53 , 4786.56 , 504.18 +846.53 , 5384.88 , 564.87 +846.53 , 5983.20 , 625.91 +846.53 , 6581.52 , 687.30 +846.53 , 7179.84 , 749.05 +846.53 , 7778.16 , 811.14 +846.53 , 8376.48 , 873.59 +896.32 , -9738.28 , -772.39 +896.32 , -9089.06 , -721.24 +896.32 , -8439.84 , -669.67 +896.32 , -7790.63 , -617.68 +896.32 , -7141.41 , -565.27 +896.32 , -6492.19 , -512.45 +896.32 , -5842.97 , -459.19 +896.32 , -5193.75 , -405.51 +896.32 , -4544.53 , -351.39 +896.32 , -3895.31 , -296.81 +896.32 , -3246.09 , -241.73 +896.32 , -2596.88 , -186.07 +896.32 , -1947.66 , -129.61 +896.32 , -1298.44 , -71.46 +896.32 , -649.22 , 0.00 +896.32 , -129.84 , 0.00 +896.32 , 119.66 , 36.70 +896.32 , 598.32 , 94.04 +896.32 , 1196.64 , 157.85 +896.32 , 1794.96 , 220.70 +896.32 , 2393.28 , 283.52 +896.32 , 2991.60 , 346.56 +896.32 , 3589.92 , 409.90 +896.32 , 4188.24 , 473.59 +896.32 , 4786.56 , 537.65 +896.32 , 5384.88 , 602.09 +896.32 , 5983.20 , 666.91 +896.32 , 6581.52 , 732.12 +896.32 , 7179.84 , 797.72 +896.32 , 7778.16 , 863.72 +896.32 , 8376.48 , 930.10 +896.32 , 8974.80 , 996.88 +946.12 , -9738.28 , -809.02 +946.12 , -9089.06 , -755.35 +946.12 , -8439.84 , -701.21 +946.12 , -7790.63 , -646.60 +946.12 , -7141.41 , -591.53 +946.12 , -6492.19 , -535.99 +946.12 , -5842.97 , -479.97 +946.12 , -5193.75 , -423.47 +946.12 , -4544.53 , -366.48 +946.12 , -3895.31 , -308.96 +946.12 , -3246.09 , -250.88 +946.12 , -2596.88 , -192.11 +946.12 , -1947.66 , -132.36 +946.12 , -1298.44 , -70.38 +946.12 , -649.22 , 0.00 +946.12 , -129.84 , 0.00 +946.12 , 119.66 , 40.53 +946.12 , 598.32 , 102.10 +946.12 , 1196.64 , 169.83 +946.12 , 1794.96 , 236.37 +946.12 , 2393.28 , 302.84 +946.12 , 2991.60 , 369.53 +946.12 , 3589.92 , 436.54 +946.12 , 4188.24 , 503.92 +946.12 , 4786.56 , 571.71 +946.12 , 5384.88 , 639.91 +946.12 , 5983.20 , 708.54 +946.12 , 6581.52 , 777.59 +946.12 , 7179.84 , 847.08 +946.12 , 7778.16 , 917.00 +946.12 , 8376.48 , 987.35 +946.12 , 8974.80 , 1058.14 +995.92 , -9089.06 , -788.58 +995.92 , -8439.84 , -731.90 +995.92 , -7790.63 , -674.71 +995.92 , -7141.41 , -617.00 +995.92 , -6492.19 , -558.77 +995.92 , -5842.97 , -500.01 +995.92 , -5193.75 , -440.71 +995.92 , -4544.53 , -380.85 +995.92 , -3895.31 , -320.40 +995.92 , -3246.09 , -259.31 +995.92 , -2596.88 , -197.41 +995.92 , -1947.66 , -134.30 +995.92 , -1298.44 , -68.24 +995.92 , -649.22 , 0.00 +995.92 , -129.84 , 0.00 +995.92 , 119.66 , 44.59 +995.92 , 598.32 , 110.53 +995.92 , 1196.64 , 182.27 +995.92 , 1794.96 , 252.55 + diff --git a/VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_FLD_max.viepcp b/VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_FLD_max.viepcp new file mode 100644 index 0000000000..2c22528593 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Components/IEPC/IEPCMapReader/IEPC_Gbx3_FLD_max.viepcp @@ -0,0 +1,24 @@ +n_out , T_drive_out , T_recuperation_out +0.00 , 4027.80 , -4193.88 +14.96 , 4027.80 , -4193.88 +151.09 , 4027.80 , -4193.88 +302.19 , 4027.80 , -4193.88 +452.92 , 4027.80 , -4193.88 +604.01 , 4027.80 , -4193.88 +755.11 , 4027.80 , -4193.88 +906.20 , 3356.50 , -3494.90 +1057.30 , 2876.98 , -2995.60 +1208.03 , 2517.38 , -2621.17 +1359.12 , 2237.68 , -2329.95 +1510.22 , 2013.90 , -2096.94 +1661.31 , 1830.82 , -1906.31 +1812.41 , 1678.25 , -1747.45 +1963.14 , 1549.15 , -1613.02 +2114.23 , 1438.52 , -1497.83 +2265.33 , 1342.60 , -1397.96 +2416.42 , 1258.71 , -1310.61 +2567.52 , 1184.66 , -1233.50 +2718.25 , 1118.82 , -1164.95 +2869.34 , 1059.96 , -1103.66 +3020.44 , 1006.95 , -1048.47 + diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index 5fa6cc4c2a..9db0ad9f88 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -4,15 +4,24 @@ <AssemblyName>VectoCoreTest</AssemblyName> <TargetFrameworks>net6.0</TargetFrameworks> <DefineConstants /> + <!--uncomment to add windows forms an enable plotting of diagrams in some testcases--> + <DefineConstants>$(DefineConstants);TRACE</DefineConstants> + <!--<UseWindowsForms>true</UseWindowsForms>--> <Configurations>Debug;Release;MockupDebug</Configurations> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='MockupDebug|net6.0|AnyCPU'"> <DebugType>full</DebugType> </PropertyGroup> + <!--uncomment to add windows forms an enable plotting of diagrams in some testcases--> + <PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch(
 $(DefineConstants), '^(.*;)*TRACE(;.*)*$'))"> + <TargetFrameworks>net6.0-windows</TargetFrameworks> + <UseWindowsForms>true</UseWindowsForms> + </PropertyGroup> <PropertyGroup Condition="('$(Configuration)' == 'MockupRelease') Or ('$(Configuration)' == 'MockupDebug')"> <DefineConstants>$(DefineConstants);MOCKUP</DefineConstants> </PropertyGroup> <ItemGroup> + <PackageReference Include="HIC.System.Windows.Forms.DataVisualization" Version="1.0.1" /> <PackageReference Include="Moq" Version="4.18.2" /> <PackageReference Include="NUnit" Version="3.13.2" /> <PackageReference Include="NUnit3TestAdapter" Version="4.2.1" /> -- GitLab