From c67cbf90e169fe66cb94faf7f9e4b2b49db92c23 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Thu, 14 Mar 2019 10:12:02 +0100 Subject: [PATCH] adding code for plotting shift polygons of xml job --- .../Models/Declaration/ShiftPolygonTest.cs | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/VectoCore/VectoCoreTest/Models/Declaration/ShiftPolygonTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/ShiftPolygonTest.cs index eaa2271919..3a472ec349 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/ShiftPolygonTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/ShiftPolygonTest.cs @@ -842,5 +842,61 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration Assert.AreEqual(result, ShiftPolygon.IsLeftOf(speed.RPMtoRad(), torque.SI<NewtonMeter>(), segment)); } + + + [TestCase(@"E:\QUAM\Workspace\VECTO-Bugreports\BugReportTests\Bugreport Jobs\20190307_VECTO-904_Extrapolation\OM-18173493.xml")] + public void ComputeShiftPolygonXML(string xmlJob) + { + var inputData = new XMLDeclarationInputDataProvider(xmlJob, true); + var dao = new DeclarationDataAdapter(); + + var gearboxData = inputData.JobInputData.Vehicle.GearboxInputData; + var engineData = dao.CreateEngineData(inputData.JobInputData.Vehicle.EngineInputData,0.RPMtoRad(), gearboxData, new List<ITorqueLimitInputData>()); + + var fullLoadCurves = engineData.FullLoadCurves; + + var axlegearRatio = inputData.JobInputData.Vehicle.AxleGearInputData.Ratio; + var vehicle = inputData.JobInputData.Vehicle; + var segment = DeclarationData.Segments.Lookup( + vehicle.VehicleCategory, vehicle.AxleConfiguration, vehicle.GrossVehicleMassRating, vehicle.CurbMassChassis, + false); + var vehicleData = dao.CreateVehicleData(inputData.JobInputData.Vehicle, segment.Missions.First(), 0.SI<Kilogram>()); + var rdyn = vehicleData.DynamicTyreRadius; + + var shiftPolygons = new List<ShiftPolygon>(); + var downshiftTransformed = new List<List<Point>>(); + var upshiftOrig = new List<List<Point>>(); + for (var i = 0; i < gearboxData.Gears.Count; i++) { + shiftPolygons.Add( + DeclarationData.Gearbox.ComputeShiftPolygon(gearboxData.Type, i, fullLoadCurves[(uint)(i + 1)], gearboxData.Gears, + engineData, axlegearRatio, rdyn) + ); + List<Point> tmp1, tmp2, tmp3; + ComputShiftPolygonPoints(i, fullLoadCurves[(uint)(i + 1)], gearboxData.Gears, + engineData, axlegearRatio, rdyn, out tmp1, out tmp2, out tmp3); + upshiftOrig.Add(tmp1); + downshiftTransformed.Add(tmp2); + } + + var imageFile = Path.Combine(Path.GetDirectoryName(xmlJob), Path.GetFileNameWithoutExtension(xmlJob) + "_shiftlines.png"); + ShiftPolygonDrawer.DrawShiftPolygons(Path.GetDirectoryName(xmlJob), fullLoadCurves, shiftPolygons, + imageFile, + DeclarationData.Gearbox.TruckMaxAllowedSpeed / rdyn * axlegearRatio * gearboxData.Gears.Last().Ratio, + upshiftOrig, downshiftTransformed); + var str = ""; + var g = 1; + foreach (var shiftPolygon in shiftPolygons) { + str += "Gear " + g + "\n"; + str += "downshift\n"; + foreach (var entry in shiftPolygon.Downshift) { + str += string.Format("{0} {1}\n", entry.AngularSpeed.AsRPM, entry.Torque.Value()); + } + str += "upshift\n"; + foreach (var entry in shiftPolygon.Upshift) { + str += string.Format("{0} {1}\n", entry.AngularSpeed.AsRPM, entry.Torque.Value()); + } + g++; + } + } } } \ No newline at end of file -- GitLab