From 94efe4ab1bedd1e3a8aea9af309f84a67574b2f7 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Fri, 19 May 2017 12:26:58 +0200 Subject: [PATCH] adding new municipal cycle, pto cycle, pto idle losses; read pto data in declaration mode; add pto for declaration mode (data adapter, declaration factory), testcases for reading PTO in declaration mode --- VECTO/GUI/VehicleForm.vb | 8 +- VECTO/Input Files/Gearbox.vb | 5 +- VECTO/Input Files/VectoJob.vb | 8 + VECTO/Input Files/Vehicle.vb | 8 +- .../InputData/IInputDataProvider.cs | 2 + .../XMLDeclarationInputDataProvider.cs | 3 + .../XMLDeclarationVehicleDataProvider.cs | 35 +- .../ComponentData/PTOIdleLossMapReader.cs | 19 + .../DeclarationDataAdapter.cs | 12 + .../DeclarationModeVectoRunDataFactory.cs | 22 +- .../Models/Declaration/DeclarationData.cs | 12 + .../VectoCore/Models/Declaration/Segment.cs | 2 + .../VectoCore/Models/Declaration/Segments.cs | 13 +- .../Simulation/Impl/PowertrainBuilder.cs | 2 +- .../MissionCycles/MunicipalUtility.vdri | 1049 +++++++++-------- .../MunicipalUtility_PTO_generic.vptoc | 25 + .../MunicipalUtility_PTO_generic.vptol | 25 + .../Resources/Declaration/SegmentTable.csv | 56 +- VectoCore/VectoCore/VectoCore.csproj | 2 + .../XML/XMLDeclarationInputTest.cs | 75 +- 20 files changed, 819 insertions(+), 564 deletions(-) create mode 100644 VectoCore/VectoCore/Resources/Declaration/MissionCycles/MunicipalUtility_PTO_generic.vptoc create mode 100644 VectoCore/VectoCore/Resources/Declaration/MissionCycles/MunicipalUtility_PTO_generic.vptol diff --git a/VECTO/GUI/VehicleForm.vb b/VECTO/GUI/VehicleForm.vb index dce33f4738..728f981644 100644 --- a/VECTO/GUI/VehicleForm.vb +++ b/VECTO/GUI/VehicleForm.vb @@ -64,7 +64,8 @@ Public Class VehicleForm ButAxlRem.Enabled = Not Cfg.DeclMode CbCdMode.Enabled = Not Cfg.DeclMode PnWheelDiam.Enabled = Not Cfg.DeclMode - gbPTO.Enabled = Not Cfg.DeclMode + 'gbPTO.Enabled = Not Cfg.DeclMode + pnPTO.Enabled = Not Cfg.DeclMode CbCdMode.ValueMember = "Value" CbCdMode.DisplayMember = "Label" @@ -394,8 +395,9 @@ Public Class VehicleForm TBcdA.Text = airdrag.AirDragArea.ToGUIFormat() cbPTOType.SelectedValue = pto.PTOTransmissionType - tbPTOLossMap.Text = If(pto.PTOLossMap Is Nothing, "", GetRelativePath(pto.PTOLossMap.Source, basePath)) - tbPTOCycle.Text = If(pto.PTOCycle Is Nothing, "", GetRelativePath(pto.PTOCycle.Source, basePath)) + tbPTOLossMap.Text = + If(Cfg.DeclMode OrElse pto.PTOLossMap Is Nothing, "", GetRelativePath(pto.PTOLossMap.Source, basePath)) + tbPTOCycle.Text = If(Cfg.DeclMode OrElse pto.PTOCycle Is Nothing, "", GetRelativePath(pto.PTOCycle.Source, basePath)) cbAngledriveType.SelectedValue = angledrive.Type tbAngledriveRatio.Text = angledrive.Ratio.ToGUIFormat() diff --git a/VECTO/Input Files/Gearbox.vb b/VECTO/Input Files/Gearbox.vb index c6fc9e6589..bbf178e3ea 100644 --- a/VECTO/Input Files/Gearbox.vb +++ b/VECTO/Input Files/Gearbox.vb @@ -270,7 +270,7 @@ Public Class Gearbox fullLoadCurves(0).EngineData = retVal For i As Integer = 0 To gears.Count - 1 fullLoadCurves(CType(i + 1, UInteger)) = AbstractSimulationDataAdapter.IntersectFullLoadCurves(fullLoadCurves(0), - gears(i).MaxTorque) + gears(i).MaxTorque) Next retVal.FullLoadCurves = fullLoadCurves Return retVal @@ -355,7 +355,8 @@ Public Class Gearbox Dim i As Integer For i = 1 To GearRatios.Count - 1 Dim gearDict As New TransmissionInputData With { - .Ratio = GearRatios(i) + .Ratio = GearRatios(i), + .Gear = i } If File.Exists(GearshiftFiles(i).FullPath) Then gearDict.ShiftPolygon = VectoCSVFile.Read(GearshiftFiles(i).FullPath) diff --git a/VECTO/Input Files/VectoJob.vb b/VECTO/Input Files/VectoJob.vb index 7515a9d9c0..8a65f4a791 100644 --- a/VECTO/Input Files/VectoJob.vb +++ b/VECTO/Input Files/VectoJob.vb @@ -577,6 +577,14 @@ Public Class VectoJob End Get End Property + Public ReadOnly Property IDeclarationInputDataProvider_PTOTransmissionInputData As IPTOTransmissionInputData _ + Implements IDeclarationInputDataProvider.PTOTransmissionInputData + Get + If Not File.Exists(_vehicleFile.FullPath) Then Return Nothing + Return New JSONComponentInputData(_vehicleFile.FullPath).PTOTransmissionInputData + End Get + End Property + Public ReadOnly Property PTOTransmissionInputData As IPTOTransmissionInputData _ Implements IEngineeringInputDataProvider.PTOTransmissionInputData Get diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb index 01b05bcd15..60b8e368ab 100644 --- a/VECTO/Input Files/Vehicle.vb +++ b/VECTO/Input Files/Vehicle.vb @@ -26,7 +26,7 @@ Imports TUGraz.VectoCore.Utils <CustomValidation(GetType(Vehicle), "ValidateVehicle")> Public Class Vehicle - Implements IVehicleEngineeringInputData, IVehicleDeclarationInputData, IRetarderInputData, IPTOTransmissionInputData, + Implements IVehicleEngineeringInputData, IVehicleDeclarationInputData, IRetarderInputData, IPTOTransmissionInputData, IAngledriveInputData, IAirdragEngineeringInputData Private _filePath As String @@ -82,7 +82,7 @@ Public Class Vehicle AngledriveLossMapFile = New SubPath() Axles = New List(Of AxleInputData) - torqueLimitsList = new List(Of ITorqueLimitInputData) + torqueLimitsList = New List(Of ITorqueLimitInputData) PtoLossMap = New SubPath() PtoCycle = New SubPath() SetDefault() @@ -113,6 +113,7 @@ Public Class Vehicle segment.Missions.First().Loadings.First().Value, segment.VehicleHeight) retarderData = doa.CreateRetarderData(vehicle) angledriveData = doa.CreateAngledriveData(vehicle, False) + ptoData = doa.CreatePTOTransmissionData(vehicle) Else Dim doa As EngineeringDataAdapter = New EngineeringDataAdapter() vehicleData = doa.CreateVehicleData(vehicle, vehicle) @@ -461,6 +462,9 @@ Public Class Vehicle Public ReadOnly Property IPTOTransmissionInputData_PTOLossMap As TableData _ Implements IPTOTransmissionInputData.PTOLossMap Get + If String.IsNullOrWhiteSpace(PtoCycle.FullPath) Then + Return Nothing + End If Return VectoCSVFile.Read(PtoLossMap.FullPath) End Get End Property diff --git a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs index 47c7f1b46c..93db0d939d 100644 --- a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs +++ b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs @@ -56,6 +56,8 @@ namespace TUGraz.VectoCommon.InputData IRetarderInputData RetarderInputData { get; } IDriverDeclarationInputData DriverInputData { get; } + + IPTOTransmissionInputData PTOTransmissionInputData { get; } } public interface IEngineeringInputDataProvider : IInputDataProvider diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationInputDataProvider.cs index 59a2c83d5b..072528514e 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationInputDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationInputDataProvider.cs @@ -46,6 +46,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration RetarderInputData = new XMLDeclarationRetarderDataProvider(this); XMLDriverData = new XMLDeclarationDriverDataProvider(this); XMLAuxiliaryData = new XMLDeclarationAuxiliaryDataProvider(this); + PTOTransmissionInputData = _vehicleInputData.GetPTOData(); } private static void ValidationCallBack(object sender, ValidationEventArgs args) @@ -99,5 +100,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { get { return XMLDriverData; } } + + public IPTOTransmissionInputData PTOTransmissionInputData { get; private set; } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs index bda058167d..fc6c70de91 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs @@ -1,17 +1,19 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Xml; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.Impl; +using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { public class XMLDeclarationVehicleDataProvider : AbstractDeclarationXMLComponentDataProvider, - IVehicleDeclarationInputData + IVehicleDeclarationInputData, IPTOTransmissionInputData { public XMLDeclarationVehicleDataProvider(XMLDeclarationInputDataProvider xmlInputDataProvider) : base(xmlInputDataProvider) @@ -139,5 +141,36 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { get { return GetElementValue(XMLNames.Vehicle_AngledriveType).ParseEnum<AngledriveType>(); } } + + public IPTOTransmissionInputData GetPTOData() + { + return this; + } + + public string PTOTransmissionType + { + get { + var shaftGearWheels = GetElementValue(Helper.Query(XMLNames.Vehicle_PTO, XMLNames.Vehicle_PTO_ShaftsGearWheels)); + if ("none".Equals(shaftGearWheels, StringComparison.InvariantCultureIgnoreCase)) { + return "None"; + } + var otherElements = GetElementValue(Helper.Query(XMLNames.Vehicle_PTO, XMLNames.Vehicle_PTO_OtherElements)); + var ptoTech = string.Format("{0} - {1}", shaftGearWheels, otherElements); + if (DeclarationData.PTOTransmission.GetTechnologies().Contains(ptoTech)) { + return ptoTech; + } + throw new VectoException("PTO Technology {0} invalid!", ptoTech); + } + } + + public TableData PTOLossMap + { + get { return null; } + } + + public TableData PTOCycle + { + get { return null; } + } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/Reader/ComponentData/PTOIdleLossMapReader.cs b/VectoCore/VectoCore/InputData/Reader/ComponentData/PTOIdleLossMapReader.cs index 904ee5472f..e03cbb248e 100644 --- a/VectoCore/VectoCore/InputData/Reader/ComponentData/PTOIdleLossMapReader.cs +++ b/VectoCore/VectoCore/InputData/Reader/ComponentData/PTOIdleLossMapReader.cs @@ -31,10 +31,12 @@ using System; using System.Data; +using System.IO; using System.Linq; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Models.SimulationComponent; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Utils; @@ -56,6 +58,15 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData } } + public static PTOLossMap ReadFromStream(Stream stream) + { + try { + return Create(VectoCSVFile.ReadStream(stream)); + } catch (Exception ex) { + throw new VectoException("ERROR while loading PTO Idle LossMap: " + ex.Message); + } + } + /// <summary> /// Create the pto idle loss map from an appropriate datatable. (2 columns: Engine Speed, PTO Torque) /// </summary> @@ -97,5 +108,13 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData /// </summary> public const string PTOTorque = "PTO Torque"; } + + public static PTOLossMap GetZeroLossMap() + { + return new PTOLossMap(new[] { + new PTOLossMap.Entry { EngineSpeed = 0.RPMtoRad(), PTOTorque = 0.SI<NewtonMeter>() }, + new PTOLossMap.Entry { EngineSpeed = 10000.RPMtoRad(), PTOTorque = 0.SI<NewtonMeter>() }, + }); + } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs index 624be13dca..59205f40b4 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs @@ -400,5 +400,17 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter points[0].EffectiveCrossSectionArea = points[1].EffectiveCrossSectionArea; return points; } + + public PTOData CreatePTOTransmissionData(IPTOTransmissionInputData pto) + { + if (pto.PTOTransmissionType != "None") { + return new PTOData { + TransmissionType = pto.PTOTransmissionType, + LossMap = PTOIdleLossMapReader.GetZeroLossMap(), + }; + } + + return null; + } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs index a20bddd1de..89d280cd9e 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs @@ -34,13 +34,14 @@ using System.Linq; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; -using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.OutputData; +using TUGraz.VectoCore.Utils; + namespace TUGraz.VectoCore.InputData.Reader.Impl { @@ -73,13 +74,16 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl var tempVehicle = dao.CreateVehicleData(InputDataProvider.VehicleInputData, InputDataProvider.AirdragInputData, segment.Missions.First(), segment.Missions.First().Loadings.First().Value, segment.VehicleHeight); - var engineData = dao.CreateEngineData(InputDataProvider.EngineInputData, InputDataProvider.GearboxInputData, InputDataProvider.VehicleInputData.TorqueLimits); + var engineData = dao.CreateEngineData(InputDataProvider.EngineInputData, InputDataProvider.GearboxInputData, + InputDataProvider.VehicleInputData.TorqueLimits); var axlegearData = dao.CreateAxleGearData(InputDataProvider.AxleGearInputData, false); var angledriveData = dao.CreateAngledriveData(InputDataProvider.AngledriveInputData, false); var gearboxData = dao.CreateGearboxData(InputDataProvider.GearboxInputData, engineData, axlegearData.AxleGear.Ratio, tempVehicle.DynamicTyreRadius, false); var retarderData = dao.CreateRetarderData(InputDataProvider.RetarderInputData); + var ptoTransmissionData = dao.CreatePTOTransmissionData(InputDataProvider.PTOTransmissionInputData); + var municipalPtoTransmissionData = CreateDefaultPTOData(); if (Report != null) { var powertrainConfig = new VectoRunData() { VehicleData = @@ -130,6 +134,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl ModFileSuffix = loading.Key.ToString(), Report = Report, Mission = mission, + PTO = mission.MissionType == MissionType.MunicipalUtility + ? municipalPtoTransmissionData + : ptoTransmissionData }; simulationRunData.EngineData.WHTCCorrectionFactor = DeclarationData.WHTCCorrection.Lookup( mission.MissionType.GetNonEMSMissionType(), engineData.WHTCRural, engineData.WHTCUrban, engineData.WHTCMotorway) * @@ -141,6 +148,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl } } + private PTOData CreateDefaultPTOData() + { + return new PTOData() { + TransmissionType = DeclarationData.PTO.DefaultPTOTechnology, + LossMap = PTOIdleLossMapReader.ReadFromStream(RessourceHelper.ReadStream(DeclarationData.PTO.DefaultPTOIdleLosses)), + PTOCycle = + DrivingCycleDataReader.ReadFromStream(RessourceHelper.ReadStream(DeclarationData.PTO.DefaultPTOActivationCycle), + CycleType.PTO, "PTO", false) + }; + } + internal Segment GetVehicleClassification(VehicleCategory category, AxleConfiguration axles, Kilogram grossMassRating, Kilogram curbWeight) { diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs index ed5ffc5965..3c1bd0a69e 100644 --- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs @@ -407,5 +407,17 @@ namespace TUGraz.VectoCore.Models.Declaration return characteristicTorque.Where(x => x.SpeedRatio >= ratio).ToArray(); } } + + public static class PTO + { + public const string DefaultPTOTechnology = + "only the drive shaft of the PTO - shift claw, synchronizer, sliding gearwheel"; + + public const string DefaultPTOIdleLosses = + DeclarationDataResourcePrefix + ".MissionCycles.MunicipalUtility_PTO_generic.vptol"; + + public const string DefaultPTOActivationCycle = + DeclarationDataResourcePrefix + ".MissionCycles.MunicipalUtility_PTO_generic.vptoc"; + } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/Models/Declaration/Segment.cs b/VectoCore/VectoCore/Models/Declaration/Segment.cs index 1b84124604..24f5a92ce7 100644 --- a/VectoCore/VectoCore/Models/Declaration/Segment.cs +++ b/VectoCore/VectoCore/Models/Declaration/Segment.cs @@ -58,5 +58,7 @@ namespace TUGraz.VectoCore.Models.Declaration public MeterPerSecond DesignSpeed { get; internal set; } public SquareMeter CdAConstruction { get; internal set; } + + public Kilogram MunicipalBodyWeight { get; internal set; } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/Models/Declaration/Segments.cs b/VectoCore/VectoCore/Models/Declaration/Segments.cs index 1d0e339974..17cf2d02f1 100644 --- a/VectoCore/VectoCore/Models/Declaration/Segments.cs +++ b/VectoCore/VectoCore/Models/Declaration/Segments.cs @@ -92,10 +92,12 @@ namespace TUGraz.VectoCore.Models.Declaration VehicleHeight = LookupHeight(vehicleCategory, axleConfiguration, grossVehicleMassRating), DesignSpeed = row.ParseDouble("designspeed").KMPHtoMeterPerSecond(), GrossVehicleMassRating = grossVehicleMassRating, - CdAConstruction = - string.IsNullOrEmpty(row["cdxa_construction"].ToString()) - ? null - : row.ParseDouble("cdxa_construction").SI<SquareMeter>() + CdAConstruction = string.IsNullOrEmpty(row["cdxa_construction"].ToString()) + ? null + : row.ParseDouble("cdxa_construction").SI<SquareMeter>(), + MunicipalBodyWeight = string.IsNullOrEmpty(row["bodyweight_municipalutility"].ToString()) + ? null + : row.ParseDouble("bodyweight_municipalutility").SI<Kilogram>() }; return segment; @@ -229,7 +231,8 @@ namespace TUGraz.VectoCore.Models.Declaration return missions.ToArray(); } - private static Kilogram GetLoading(string payloadStr, Kilogram grossVehicleWeight, IEnumerable<MissionTrailer> trailers, bool lowLoading) + private static Kilogram GetLoading(string payloadStr, Kilogram grossVehicleWeight, + IEnumerable<MissionTrailer> trailers, bool lowLoading) { var refLoadValue = payloadStr.ToDouble(double.NaN); if (double.IsNaN(refLoadValue)) { diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index fc29667638..bf281f6531 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -223,7 +223,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl { var controller = engine.IdleController; - if (pto != null) { + if (pto != null && pto.PTOCycle != null) { var ptoController = new PTOCycleController(pto.PTOCycle); controller = new IdleControllerSwitcher(engine.IdleController, ptoController); } diff --git a/VectoCore/VectoCore/Resources/Declaration/MissionCycles/MunicipalUtility.vdri b/VectoCore/VectoCore/Resources/Declaration/MissionCycles/MunicipalUtility.vdri index 2e91ef450a..748884a6e7 100644 --- a/VectoCore/VectoCore/Resources/Declaration/MissionCycles/MunicipalUtility.vdri +++ b/VectoCore/VectoCore/Resources/Declaration/MissionCycles/MunicipalUtility.vdri @@ -1,504 +1,545 @@ -<s>,<v>,<grad>,<stop> -0,0,0,2 -1,51.2,0,0 -11,51.2,0.2,0 -16,51.2,0.4,0 -21,51.2,0.6,0 -26,51.2,0.8,0 -31,51.2,1,0 -41,51.2,1.2,0 -46,51.2,1.3,0 -156,51.2,1.5,0 -161,51.2,1.6,0 -560,65.5,1.6,0 -741,65.5,1.5,0 -746,65.5,1.4,0 -751,65.5,1.3,0 -756,65.5,1,0 -761,65.5,0.5,0 -766,65.5,0,0 -796,65.5,-0.5,0 -811,65.5,-1,0 -841,65.5,-1.4,0 -856,65.5,-1.6,0 -876,65.5,-1.8,0 -906,65.5,-2,0 -1046,65.5,-1.7,0 -1056,65.5,-1.2,0 -1076,65.5,-0.8,0 -1081,65.5,-0.6,0 -1086,65.5,-0.4,0 -1091,65.5,-0.2,0 -1096,65.5,0,0 -1126,65.5,0.3,0 -1131,65.5,0.6,0 -1136,65.5,0.9,0 -1140,21,0.9,0 -1141,21,1.2,0 -1146,57.8,1.2,0 -1181,57.8,1.3,0 -1201,57.8,1.5,0 -1206,57.8,1.7,0 -1211,57.8,1.9,0 -1381,57.8,1.8,0 -1406,57.8,1.7,0 -1456,57.8,1.6,0 -1461,57.8,1.5,0 -1466,57.8,1.4,0 -1471,57.8,1.3,0 -1476,57.8,1.2,0 -1481,57.8,1.1,0 -1506,57.8,0.9,0 -1511,57.8,0.7,0 -1516,57.8,0.5,0 -1521,57.8,0.3,0 -1526,57.8,0.1,0 -1531,57.8,-0.1,0 -1551,57.8,-0.2,0 -1561,57.8,-0.3,0 -1566,57.8,-0.4,0 -1571,57.8,-0.5,0 -1576,57.8,-0.6,0 -1581,57.8,-0.7,0 -1586,57.8,-0.8,0 -1621,57.8,-1,0 -1751,57.8,-0.8,0 -1761,57.8,-0.5,0 -1766,57.8,-0.2,0 -1771,57.8,0,0 -1786,57.8,0.2,0 -1791,57.8,0.4,0 -1796,57.8,0.6,0 -1801,57.8,0.8,0 -1806,57.8,1,0 -1811,57.8,1.2,0 -1816,57.8,1.4,0 -1821,57.8,1.6,0 -1826,57.8,1.8,0 -1842,41.5,1.8,0 -1853,46.5,1.8,0 -1946,46.5,1.7,0 -1951,46.5,1.6,0 -1956,46.5,1.5,0 -1961,46.5,1.4,0 -1966,46.5,1.3,0 -1971,46.5,1.2,0 -1976,46.5,1.1,0 -1981,46.5,1,0 -1986,46.5,0.9,0 -1991,46.5,0.8,0 -1996,46.5,0.7,0 -1998,27.2,0.7,0 -2001,27.2,0.6,0 -2005,37.8,0.6,0 -2006,37.8,0.4,0 -2011,37.8,0.2,0 -2016,37.8,0,0 -2021,37.8,-0.2,0 -2026,37.8,-0.4,0 -2031,37.8,-0.6,0 -2036,37.8,-0.8,0 -2041,37.8,-1,0 -2046,37.8,-1.2,0 -2051,37.8,-1.4,0 -2056,37.8,-1.6,0 -2061,37.8,-1.8,0 -2066,37.8,-2,0 -2206,0,-2,3 -2207,23,-2,0 -2271,23,-1.8,0 -2276,23,-1.6,0 -2281,23,-1.3,0 -2282,22.9,-1.3,0 -2286,22.9,-1,0 -2288,23,-1,0 -2291,23,-0.7,0 -2296,23,-0.4,0 -2301,23,-0.2,0 -2306,23,0,0 -2321,23,0.1,0 -2346,15.4,0.1,0 -2350,38.8,0.1,0 -2376,38.8,0.2,0 -2587,0,0.2,5 -2588,19.4,0.2,0 -2616,19.4,0.1,0 -2641,10.7,0.1,0 -2644,22.3,0.1,0 -2661,22.3,0,0 -2681,22.3,-0.1,0 -2716,22.3,-0.2,0 -2731,0,-0.2,73 -2732,15,-0.2,0 -2768,0,-0.2,90 -2769,15.3,-0.2,0 -2798,0,-0.2,79 -2799,10.6,-0.2,0 -2821,0,-0.2,54 -2822,10,-0.2,0 -2840,0,-0.2,49 -2841,10.9,-0.2,0 -2860,0,-0.2,97 -2861,10,-0.2,0 -2875,0,-0.2,37 -2876,10.8,-0.2,0 -2890,0,-0.2,190 -2891,10,-0.2,0 -2902,0,-0.2,23 -2903,10,-0.2,0 -2913,0,-0.2,27 -2914,10,-0.2,0 -2923,0,-0.2,30 -2924,10,-0.2,0 -2938,0,-0.2,34 -2939,10,-0.2,0 -2941,10,-0.3,0 -2947,0,-0.3,15 -2948,10,-0.3,0 -2957,0,-0.3,16 -2958,10,-0.3,0 -2968,0,-0.3,17 -2969,10,-0.3,0 -2979,0,-0.3,19 -2980,10,-0.3,0 -2986,0,-0.3,21 -2987,10,-0.3,0 -2997,0,-0.3,149 -2998,12.2,-0.3,0 -3025,0,-0.3,57 -3026,10.8,-0.3,0 -3053,0,-0.3,67 -3054,10,-0.3,0 -3056,10,-0.2,0 -3078,0,-0.2,61 -3079,12.1,-0.2,0 -3118,0,-0.2,133 -3119,10,-0.2,0 -3137,10.5,-0.2,0 -3159,0,-0.2,44 -3160,10,-0.2,0 -3179,12.5,-0.2,0 -3216,0,-0.2,115 -3217,14.8,-0.2,0 -3231,14.8,0,0 -3265,10,0,0 -3267,12.8,0,0 -3301,0,0,40 -3302,10,0,0 -3316,12.4,0,0 -3349,20.8,0,0 -3426,20.8,-0.2,0 -3431,10,-0.2,0 -3433,16.3,-0.2,0 -3441,16.3,-0.4,0 -3456,16.3,-0.6,0 -3476,0,-0.6,38 -3477,19.4,-0.6,0 -3511,19.4,-0.7,0 -3516,19.4,-0.8,0 -3529,10.7,-0.8,0 -3533,22.3,-0.8,0 -3611,22.3,-0.7,0 -3616,22.3,-0.6,0 -3620,0,-0.5,73 -3621,15,-0.5,0 -3626,15,-0.4,0 -3631,15,-0.3,0 -3636,15,-0.2,0 -3641,15,-0.1,0 -3646,15,0,0 -3651,15,0.1,0 -3656,0,0.1,90 -3657,15.3,0.1,0 -3681,15.3,0.2,0 -3686,0,0.2,79 -3687,10.6,0.2,0 -3691,10.6,0.3,0 -3696,10.6,0.4,0 -3701,10.6,0.5,0 -3706,10.6,0.6,0 -3709,0,0.6,54 -3710,10,0.6,0 -3711,10,0.7,0 -3728,0,0.7,49 -3729,10.9,0.7,0 -3749,0,0.7,97 -3750,10,0.7,0 -3763,0,0.7,37 -3764,10.8,0.7,0 -3778,0,0.7,190 -3779,10,0.7,0 -3791,0,0.7,23 -3792,10,0.7,0 -3801,10,0.5,0 -3802,0,0.5,27 -3803,10,0.5,0 -3806,10,0.3,0 -3811,0,0.1,30 -3812,10,0.1,0 -3816,10,0,0 -3827,0,0,34 -3828,10,0,0 -3835,0,0,15 -3836,10,0,0 -3845,0,0,16 -3846,10,0,0 -3857,0,0,17 -3858,10,0,0 -3867,0,0,19 -3868,10,0,0 -3874,0,0,21 -3875,10,0,0 -3886,0,0,149 -3887,12.2,0,0 -3914,0,0,57 -3915,10.8,0,0 -3942,0,0,67 -3943,10,0,0 -3966,0,0,61 -3967,12.1,0,0 -3971,12.1,0.2,0 -4001,12.1,0.3,0 -4006,0,0.3,133 -4007,10,0.3,0 -4026,10.5,0.3,0 -4047,0,0.3,44 -4048,10,0.3,0 -4067,12.5,0.3,0 -4086,12.5,0.4,0 -4104,0,0.4,115 -4105,14.8,0.4,0 -4153,10,0.4,0 -4155,12.8,0.4,0 -4181,12.8,0.5,0 -4189,0,0.5,40 -4190,10,0.5,0 -4204,12.4,0.5,0 -4237,20.8,0.5,0 -4261,20.8,0.4,0 -4266,20.8,0.3,0 -4271,20.8,0.2,0 -4276,20.8,0.1,0 -4281,20.8,0,0 -4319,10,0,0 -4322,16.3,0,0 -4351,16.3,-0.1,0 -4356,16.3,-0.2,0 -4361,16.3,-0.3,0 -4364,0,-0.3,38 -4365,16,-0.3,0 -4366,16,-0.4,0 -4371,16,-0.5,0 -4376,16,-0.6,0 -4381,16,-0.7,0 -4386,16,-0.8,0 -4415,10,-0.8,0 -4417,36.2,-0.8,0 -4536,36.2,-0.9,0 -4541,36.2,-1,0 -4546,36.2,-1.1,0 -4551,36.2,-1.2,0 -4556,36.2,-1.3,0 -4613,14.4,-1.3,0 -4617,33.9,-1.3,0 -4621,33.9,-1.5,0 -4626,33.9,-1.7,0 -4696,33.9,-1.9,0 -4846,33.9,-1.7,0 -4851,33.9,-1.5,0 -4855,14.7,-1.5,0 -4856,14.7,-1.3,0 -4859,23.1,-1.3,0 -4861,23.1,-1.1,0 -4866,23.1,-0.9,0 -4871,23.1,-0.7,0 -4876,23.1,-0.5,0 -4881,23.1,-0.3,0 -4886,23.1,-0.1,0 -4891,23.1,0,0 -4932,0,0,14 -4933,64.8,0,0 -5016,64.8,0.1,0 -5021,64.8,0.2,0 -5026,64.8,0.3,0 -5031,64.8,0.4,0 -5036,64.8,0.5,0 -5116,64.8,0.7,0 -5131,64.8,0.9,0 -5181,64.8,1.1,0 -5186,64.8,1.3,0 -5191,64.8,1.5,0 -5211,64.8,1.6,0 -5426,64.8,1.5,0 -5431,64.8,1.4,0 -5436,64.8,1.3,0 -5441,64.8,1.2,0 -5446,64.8,1.1,0 -5451,64.8,1,0 -5456,64.8,0.9,0 -5461,64.8,0.8,0 -5466,64.8,0.7,0 -5471,64.8,0.6,0 -5476,64.8,0.5,0 -5481,64.8,0.4,0 -5666,64.8,0.5,0 -5667,10,0.5,0 -5668,27.2,0.5,0 -5671,27.2,0.6,0 -5676,27.2,0.7,0 -5681,27.2,0.8,0 -5725,25.6,0.8,0 -5733,58.8,0.8,0 -5786,58.8,0.9,0 -5821,58.8,0.2,0 -5826,58.8,0,0 -5831,58.8,-0.2,0 -5836,58.8,-0.4,0 -5861,58.8,-0.5,0 -5966,58.8,-0.4,0 -5971,58.8,-0.3,0 -5976,58.8,-0.2,0 -5981,58.8,-0.1,0 -5986,58.8,0,0 -5991,58.8,0.1,0 -6036,58.8,0.3,0 -6041,58.8,0.5,0 -6046,58.8,0.7,0 -6051,58.8,0.8,0 -6131,58.8,1,0 -6161,58.8,1.2,0 -6171,58.2,1.2,0 -6187,68.3,1.2,0 -6196,68.3,1.4,0 -6201,68.3,1.6,0 -6206,68.3,1.8,0 -6236,68.3,2,0 -6251,68.3,2.2,0 -6291,68.3,2.4,0 -6306,68.3,2.6,0 -6366,68.3,2.4,0 -6371,68.3,2.2,0 -6376,68.3,2,0 -6381,68.3,1.8,0 -6386,68.3,1.6,0 -6391,68.3,1.4,0 -6396,68.3,1.2,0 -6401,68.3,1,0 -6446,68.3,0.8,0 -6451,68.3,0.6,0 -6456,68.3,0.4,0 -6461,68.3,0.2,0 -6466,68.3,0.1,0 -6471,68.3,0,0 -6506,68.3,0.2,0 -6546,68.3,0,0 -6566,68.3,-0.1,0 -6586,68.3,-0.2,0 -6611,68.3,-0.3,0 -6631,68.3,-0.35,0 -6636,68.3,-0.4,0 -6641,68.3,-0.45,0 -6646,68.3,-0.5,0 -6651,68.3,-0.55,0 -6656,68.3,-0.6,0 -6661,68.3,-0.65,0 -6666,68.3,-0.7,0 -6676,68.3,-0.8,0 -6696,68.3,-0.9,0 -6746,68.3,-1,0 -6751,68.3,-1.1,0 -6756,68.3,-1.2,0 -6761,68.3,-1.3,0 -6766,0,-1.4,15 -6767,85.8,-1.4,0 -6771,85.8,-1.5,0 -6776,85.8,-1.6,0 -6781,85.8,-1.7,0 -6786,85.8,-1.8,0 -6791,85.8,-1.9,0 -7321,85.8,-1.8,0 -7376,85.8,-1.7,0 -7381,85.8,-1.6,0 -7386,85.8,-1.5,0 -7391,85.8,-1.4,0 -7396,85.8,-1.3,0 -7401,85.8,-1.2,0 -7406,85.8,-1.1,0 -7411,85.8,-1,0 -7416,85.8,-0.9,0 -7421,85.8,-0.8,0 -7426,85.8,-0.7,0 -7431,85.8,-0.6,0 -7436,85.8,-0.5,0 -7496,85.8,-0.4,0 -7531,85.8,-0.3,0 -7566,85.8,-0.1,0 -7661,85.8,0,0 -7846,85.8,0.1,0 -7931,85.8,0.2,0 -7968,80.2,0.2,0 -7990,85.8,0.2,0 -8106,85.8,0.3,0 -8161,85.8,0.4,0 -8246,85.8,0.5,0 -8276,85.8,0.6,0 -8436,85.8,0.5,0 -8451,85.8,0.4,0 -8476,85.8,0.3,0 -8486,85.8,0.25,0 -8491,85.8,0.2,0 -8496,85.8,0.15,0 -8501,85.8,0.1,0 -8506,85.8,0.05,0 -8531,85.8,0,0 -8696,85.8,-0.05,0 -8736,85.8,-0.1,0 -8751,85.8,-0.15,0 -8776,85.8,-0.2,0 -8781,85.8,-0.25,0 -8786,85.8,-0.3,0 -8791,85.8,-0.35,0 -8796,85.8,-0.4,0 -8971,85.8,-0.5,0 -9021,85.8,-0.55,0 -9051,85.8,-0.6,0 -9276,85.8,-0.5,0 -9301,85.8,-0.45,0 -9306,85.8,-0.4,0 -9396,85.8,-0.3,0 -9452,79.2,-0.3,0 -9466,79.2,-0.25,0 -9474,82,-0.25,0 -9636,82,-0.3,0 -9641,82,-0.35,0 -9646,82,-0.4,0 -9716,82,-0.35,0 -9741,82,-0.3,0 -9746,82,-0.25,0 -9751,82,-0.2,0 -9756,82,-0.15,0 -9761,82,-0.1,0 -9766,82,-0.05,0 -9771,82,0,0 -9776,82,0.05,0 -9796,82,0.1,0 -9801,82,0.15,0 -9806,82,0.2,0 -9811,82,0.25,0 -9816,82,0.3,0 -9821,82,0.35,0 -9826,82,0.4,0 -9861,82,0.35,0 -9866,82,0.3,0 -9871,82,0.25,0 -9876,82,0.2,0 -9881,82,0.15,0 -9886,82,0.1,0 -9891,82,0.05,0 -9896,82,0,0 -9911,82,-0.1,0 -9916,82,-0.2,0 -9921,82,-0.3,0 -9926,82,-0.35,0 -9941,82,-0.3,0 -9962,0,-0.3,3 \ No newline at end of file +<s>,<v>,<grad>,<stop> ,<PTO> +0,0,0,2,0 +1,51.2,0,0,0 +11,51.2,0.2,0,0 +16,51.2,0.4,0,0 +21,51.2,0.6,0,0 +26,51.2,0.8,0,0 +31,51.2,1,0,0 +41,51.2,1.2,0,0 +46,51.2,1.3,0,0 +156,51.2,1.5,0,0 +161,51.2,1.6,0,0 +560,65.5,1.6,0,0 +741,65.5,1.5,0,0 +746,65.5,1.4,0,0 +751,65.5,1.3,0,0 +756,65.5,1,0,0 +761,65.5,0.5,0,0 +766,65.5,0,0,0 +796,65.5,-0.5,0,0 +811,65.5,-1,0,0 +841,65.5,-1.4,0,0 +856,65.5,-1.6,0,0 +876,65.5,-1.8,0,0 +906,65.5,-2,0,0 +1046,65.5,-1.7,0,0 +1056,65.5,-1.2,0,0 +1076,65.5,-0.8,0,0 +1081,65.5,-0.6,0,0 +1086,65.5,-0.4,0,0 +1091,65.5,-0.2,0,0 +1096,65.5,0,0,0 +1126,65.5,0.3,0,0 +1131,65.5,0.6,0,0 +1136,65.5,0.9,0,0 +1140,21,0.9,0,0 +1141,21,1.2,0,0 +1146,57.8,1.2,0,0 +1181,57.8,1.3,0,0 +1201,57.8,1.5,0,0 +1206,57.8,1.7,0,0 +1211,57.8,1.9,0,0 +1381,57.8,1.8,0,0 +1406,57.8,1.7,0,0 +1456,57.8,1.6,0,0 +1461,57.8,1.5,0,0 +1466,57.8,1.4,0,0 +1471,57.8,1.3,0,0 +1476,57.8,1.2,0,0 +1481,57.8,1.1,0,0 +1506,57.8,0.9,0,0 +1511,57.8,0.7,0,0 +1516,57.8,0.5,0,0 +1521,57.8,0.3,0,0 +1526,57.8,0.1,0,0 +1531,57.8,-0.1,0,0 +1551,57.8,-0.2,0,0 +1561,57.8,-0.3,0,0 +1566,57.8,-0.4,0,0 +1571,57.8,-0.5,0,0 +1576,57.8,-0.6,0,0 +1581,57.8,-0.7,0,0 +1586,57.8,-0.8,0,0 +1621,57.8,-1,0,0 +1751,57.8,-0.8,0,0 +1761,57.8,-0.5,0,0 +1766,57.8,-0.2,0,0 +1771,57.8,0,0,0 +1786,57.8,0.2,0,0 +1791,57.8,0.4,0,0 +1796,57.8,0.6,0,0 +1801,57.8,0.8,0,0 +1806,57.8,1,0,0 +1811,57.8,1.2,0,0 +1816,57.8,1.4,0,0 +1821,57.8,1.6,0,0 +1826,57.8,1.8,0,0 +1842,41.5,1.8,0,0 +1853,46.5,1.8,0,0 +1946,46.5,1.7,0,0 +1951,46.5,1.6,0,0 +1956,46.5,1.5,0,0 +1961,46.5,1.4,0,0 +1966,46.5,1.3,0,0 +1971,46.5,1.2,0,0 +1976,46.5,1.1,0,0 +1981,46.5,1,0,0 +1986,46.5,0.9,0,0 +1991,46.5,0.8,0,0 +1996,46.5,0.7,0,0 +1998,27.2,0.7,0,0 +2001,27.2,0.6,0,0 +2005,37.8,0.6,0,0 +2006,37.8,0.4,0,0 +2011,37.8,0.2,0,0 +2016,37.8,0,0,0 +2021,37.8,-0.2,0,0 +2026,37.8,-0.4,0,0 +2031,37.8,-0.6,0,0 +2036,37.8,-0.8,0,0 +2041,37.8,-1,0,0 +2046,37.8,-1.2,0,0 +2051,37.8,-1.4,0,0 +2056,37.8,-1.6,0,0 +2061,37.8,-1.8,0,0 +2066,37.8,-2,0,0 +2206,0,-2,3,0 +2207,23,-2,0,0 +2271,23,-1.8,0,0 +2276,23,-1.6,0,0 +2281,23,-1.3,0,0 +2282,22.9,-1.3,0,0 +2286,22.9,-1,0,0 +2288,23,-1,0,0 +2291,23,-0.7,0,0 +2296,23,-0.4,0,0 +2301,23,-0.2,0,0 +2306,23,0,0,0 +2321,23,0.1,0,0 +2346,15.4,0.1,0,0 +2350,38.8,0.1,0,0 +2376,38.8,0.2,0,0 +2587,0,0.2,5,0 +2588,9,0,0,0 +2607,0,0,2,1 +2608,12,0,0,0 +2647,0,0,2,1 +2648,10,0,0,0 +2667,0,0,2,1 +2668,13,0,0,0 +2707,0,0,2,1 +2708,11,0,0,0 +2727,0,0,2,1 +2728,14,0,0,0 +2767,0,0,2,1 +2768,9,0,0,0 +2787,0,0,2,1 +2788,12,0,0,0 +2827,0,0,2,1 +2828,10,0,0,0 +2847,0,0,2,1 +2848,13,0,0,0 +2887,0,0,2,1 +2888,11,0,0,0 +2907,0,0,2,1 +2908,14,0,0,0 +2947,0,0,2,1 +2948,9,0,0,0 +2967,0,0,2,1 +2968,12,0,0,0 +3007,0,0,2,1 +3008,10,0,0,0 +3027,0,0,2,1 +3028,13,0,0,0 +3067,0,0,2,1 +3068,11,0,0,0 +3087,0,0,2,1 +3088,14,0,0,0 +3127,0,0,2,1 +3128,9,0,0,0 +3147,0,0,2,1 +3148,12,0,0,0 +3187,0,0,2,1 +3188,10,0,0,0 +3207,0,0,2,1 +3208,13,0,0,0 +3247,0,0,2,1 +3248,11,0,0,0 +3267,0,0,2,1 +3268,14,0,0,0 +3307,0,0,2,1 +3308,9,0,0,0 +3327,0,0,2,1 +3328,12,0,0,0 +3367,0,0,2,1 +3368,10,0,0,0 +3387,0,0,2,1 +3388,13,0,0,0 +3427,0,0,2,1 +3428,11,0,0,0 +3447,0,0,2,1 +3448,14,0,0,0 +3487,0,0,2,1 +3488,9,0,0,0 +3507,0,0,2,1 +3508,12,0,0,0 +3547,0,0,2,1 +3548,10,0,0,0 +3567,0,0,2,1 +3568,13,0,0,0 +3607,0,0,2,1 +3608,11,0,0,0 +3627,0,0,2,1 +3628,14,0,0,0 +3667,0,0,2,1 +3668,9,0,0,0 +3687,0,0,2,1 +3688,12,0,0,0 +3727,0,0,2,1 +3728,10,0,0,0 +3747,0,0,2,1 +3748,13,0,0,0 +3787,0,0,2,1 +3788,11,0,0,0 +3807,0,0,2,1 +3808,14,0,0,0 +3847,0,0,2,1 +3848,9,0,0,0 +3867,0,0,2,1 +3868,12,0,0,0 +3907,0,0,2,1 +3908,10,0,0,0 +3927,0,0,2,1 +3928,13,0,0,0 +3967,0,0,2,1 +3968,11,0,0,0 +3987,0,0,2,1 +3988,14,0,0,0 +4027,0,0,2,1 +4028,9,0,0,0 +4047,0,0,2,1 +4048,12,0,0,0 +4087,0,0,2,1 +4088,10,0,0,0 +4107,0,0,2,1 +4108,13,0,0,0 +4147,0,0,2,1 +4148,11,0,0,0 +4167,0,0,2,1 +4168,14,0,0,0 +4207,0,0,2,1 +4208,9,0,0,0 +4227,0,0,2,1 +4228,12,0,0,0 +4267,0,0,2,1 +4268,10,0,0,0 +4287,0,0,2,1 +4288,13,0,0,0 +4327,0,0,2,1 +4328,11,0,0,0 +4347,0,0,2,1 +4348,14,0,0,0 +4387,0,0,2,1 +4388,9,0,0,0 +4407,0,0,2,1 +4408,12,0,0,0 +4447,0,0,2,1 +4448,10,0,0,0 +4467,0,0,2,1 +4468,13,0,0,0 +4507,0,0,2,1 +4508,11,0,0,0 +4527,0,0,2,1 +4528,14,0,0,0 +4567,0,0,2,1 +4568,9,0,0,0 +4587,0,0,2,1 +4588,12,0,0,0 +4627,0,0,2,1 +4628,10,0,0,0 +4647,0,0,2,1 +4648,13,0,0,0 +4687,0,0,2,1 +4688,11,0,0,0 +4707,0,0,2,1 +4708,14,0,0,0 +4747,0,0,2,1 +4748,9,0,0,0 +4767,0,0,2,1 +4768,12,0,0,0 +4807,0,0,2,1 +4808,10,0,0,0 +4827,0,0,2,1 +4828,13,0,0,0 +4867,0,0,2,1 +4868,11,0,0,0 +4887,0,0,2,1 +4888,14,0,0,0 +4927,0,0,2,1 +4928,9,0,0,0 +4947,0,0,2,1 +4948,12,0,0,0 +4987,0,0,2,1 +4988,10,0,0,0 +5007,0,0,2,1 +5008,13,0,0,0 +5047,0,0,2,1 +5048,11,0,0,0 +5067,0,0,2,1 +5068,14,0,0,0 +5107,0,0,2,1 +5108,9,0,0,0 +5127,0,0,2,1 +5128,12,0,0,0 +5167,0,0,2,1 +5168,10,0,0,0 +5187,0,0,2,1 +5188,13,0,0,0 +5227,0,0,2,1 +5228,11,0,0,0 +5247,0,0,2,1 +5248,14,0,0,0 +5287,0,0,2,1 +5288,9,0,0,0 +5307,0,0,2,1 +5308,12,0,0,0 +5347,0,0,2,1 +5348,10,0,0,0 +5367,0,0,2,1 +5368,13,0,0,0 +5407,0,0,2,1 +5408,11,0,0,0 +5427,0,0,2,1 +5428,14,0,0,0 +5467,0,0,2,1 +5468,10,0.5,0,0 +5482,12.4,0.5,0,0 +5515,20.8,0.5,0,0 +5539,20.8,0.4,0,0 +5544,20.8,0.3,0,0 +5549,20.8,0.2,0,0 +5554,20.8,0.1,0,0 +5559,20.8,0,0,0 +5597,10,0,0,0 +5600,16.3,0,0,0 +5629,16.3,-0.1,0,0 +5634,16.3,-0.2,0,0 +5639,16.3,-0.3,0,0 +5642,0,-0.3,38,0 +5643,16,-0.3,0,0 +5644,16,-0.4,0,0 +5649,16,-0.5,0,0 +5654,16,-0.6,0,0 +5659,16,-0.7,0,0 +5664,16,-0.8,0,0 +5693,10,-0.8,0,0 +5695,36.2,-0.8,0,0 +5814,36.2,-0.9,0,0 +5819,36.2,-1,0,0 +5824,36.2,-1.1,0,0 +5829,36.2,-1.2,0,0 +5834,36.2,-1.3,0,0 +5891,14.4,-1.3,0,0 +5895,33.9,-1.3,0,0 +5899,33.9,-1.5,0,0 +5904,33.9,-1.7,0,0 +5974,33.9,-1.9,0,0 +6124,33.9,-1.7,0,0 +6129,33.9,-1.5,0,0 +6133,14.7,-1.5,0,0 +6134,14.7,-1.3,0,0 +6137,23.1,-1.3,0,0 +6139,23.1,-1.1,0,0 +6144,23.1,-0.9,0,0 +6149,23.1,-0.7,0,0 +6154,23.1,-0.5,0,0 +6159,23.1,-0.3,0,0 +6164,23.1,-0.1,0,0 +6169,23.1,0,0,0 +6210,0,0,14,0 +6211,64.8,0,0,0 +6294,64.8,0.1,0,0 +6299,64.8,0.2,0,0 +6304,64.8,0.3,0,0 +6309,64.8,0.4,0,0 +6314,64.8,0.5,0,0 +6394,64.8,0.7,0,0 +6409,64.8,0.9,0,0 +6459,64.8,1.1,0,0 +6464,64.8,1.3,0,0 +6469,64.8,1.5,0,0 +6489,64.8,1.6,0,0 +6704,64.8,1.5,0,0 +6709,64.8,1.4,0,0 +6714,64.8,1.3,0,0 +6719,64.8,1.2,0,0 +6724,64.8,1.1,0,0 +6729,64.8,1,0,0 +6734,64.8,0.9,0,0 +6739,64.8,0.8,0,0 +6744,64.8,0.7,0,0 +6749,64.8,0.6,0,0 +6754,64.8,0.5,0,0 +6759,64.8,0.4,0,0 +6944,64.8,0.5,0,0 +6945,10,0.5,0,0 +6946,27.2,0.5,0,0 +6949,27.2,0.6,0,0 +6954,27.2,0.7,0,0 +6959,27.2,0.8,0,0 +7003,25.6,0.8,0,0 +7011,58.8,0.8,0,0 +7064,58.8,0.9,0,0 +7099,58.8,0.2,0,0 +7104,58.8,0,0,0 +7109,58.8,-0.2,0,0 +7114,58.8,-0.4,0,0 +7139,58.8,-0.5,0,0 +7244,58.8,-0.4,0,0 +7249,58.8,-0.3,0,0 +7254,58.8,-0.2,0,0 +7259,58.8,-0.1,0,0 +7264,58.8,0,0,0 +7269,58.8,0.1,0,0 +7314,58.8,0.3,0,0 +7319,58.8,0.5,0,0 +7324,58.8,0.7,0,0 +7329,58.8,0.8,0,0 +7409,58.8,1,0,0 +7439,58.8,1.2,0,0 +7449,58.2,1.2,0,0 +7465,68.3,1.2,0,0 +7474,68.3,1.4,0,0 +7479,68.3,1.6,0,0 +7484,68.3,1.8,0,0 +7514,68.3,2,0,0 +7529,68.3,2.2,0,0 +7569,68.3,2.4,0,0 +7584,68.3,2.6,0,0 +7644,68.3,2.4,0,0 +7649,68.3,2.2,0,0 +7654,68.3,2,0,0 +7659,68.3,1.8,0,0 +7664,68.3,1.6,0,0 +7669,68.3,1.4,0,0 +7674,68.3,1.2,0,0 +7679,68.3,1,0,0 +7724,68.3,0.8,0,0 +7729,68.3,0.6,0,0 +7734,68.3,0.4,0,0 +7739,68.3,0.2,0,0 +7744,68.3,0.1,0,0 +7749,68.3,0,0,0 +7784,68.3,0.2,0,0 +7824,68.3,0,0,0 +7844,68.3,-0.1,0,0 +7864,68.3,-0.2,0,0 +7889,68.3,-0.3,0,0 +7909,68.3,-0.35,0,0 +7914,68.3,-0.4,0,0 +7919,68.3,-0.45,0,0 +7924,68.3,-0.5,0,0 +7929,68.3,-0.55,0,0 +7934,68.3,-0.6,0,0 +7939,68.3,-0.65,0,0 +7944,68.3,-0.7,0,0 +7954,68.3,-0.8,0,0 +7974,68.3,-0.9,0,0 +8024,68.3,-1,0,0 +8029,68.3,-1.1,0,0 +8034,68.3,-1.2,0,0 +8039,68.3,-1.3,0,0 +8044,0,-1.4,15,0 +8045,85.8,-1.4,0,0 +8049,85.8,-1.5,0,0 +8054,85.8,-1.6,0,0 +8059,85.8,-1.7,0,0 +8064,85.8,-1.8,0,0 +8069,85.8,-1.9,0,0 +8599,85.8,-1.8,0,0 +8654,85.8,-1.7,0,0 +8659,85.8,-1.6,0,0 +8664,85.8,-1.5,0,0 +8669,85.8,-1.4,0,0 +8674,85.8,-1.3,0,0 +8679,85.8,-1.2,0,0 +8684,85.8,-1.1,0,0 +8689,85.8,-1,0,0 +8694,85.8,-0.9,0,0 +8699,85.8,-0.8,0,0 +8704,85.8,-0.7,0,0 +8709,85.8,-0.6,0,0 +8714,85.8,-0.5,0,0 +8774,85.8,-0.4,0,0 +8809,85.8,-0.3,0,0 +8844,85.8,-0.1,0,0 +8939,85.8,0,0,0 +9124,85.8,0.1,0,0 +9209,85.8,0.2,0,0 +9246,80.2,0.2,0,0 +9268,85.8,0.2,0,0 +9384,85.8,0.3,0,0 +9439,85.8,0.4,0,0 +9524,85.8,0.5,0,0 +9554,85.8,0.6,0,0 +9714,85.8,0.5,0,0 +9729,85.8,0.4,0,0 +9754,85.8,0.3,0,0 +9764,85.8,0.25,0,0 +9769,85.8,0.2,0,0 +9774,85.8,0.15,0,0 +9779,85.8,0.1,0,0 +9784,85.8,0.05,0,0 +9809,85.8,0,0,0 +9974,85.8,-0.05,0,0 +10014,85.8,-0.1,0,0 +10029,85.8,-0.15,0,0 +10054,85.8,-0.2,0,0 +10059,85.8,-0.25,0,0 +10064,85.8,-0.3,0,0 +10069,85.8,-0.35,0,0 +10074,85.8,-0.4,0,0 +10249,85.8,-0.5,0,0 +10299,85.8,-0.55,0,0 +10329,85.8,-0.6,0,0 +10554,85.8,-0.5,0,0 +10579,85.8,-0.45,0,0 +10584,85.8,-0.4,0,0 +10674,85.8,-0.3,0,0 +10730,79.2,-0.3,0,0 +10744,79.2,-0.25,0,0 +10752,82,-0.25,0,0 +10914,82,-0.3,0,0 +10919,82,-0.35,0,0 +10924,82,-0.4,0,0 +10994,82,-0.35,0,0 +11019,82,-0.3,0,0 +11024,82,-0.25,0,0 +11029,82,-0.2,0,0 +11034,82,-0.15,0,0 +11039,82,-0.1,0,0 +11044,82,-0.05,0,0 +11049,82,0,0,0 +11054,82,0.05,0,0 +11074,82,0.1,0,0 +11079,82,0.15,0,0 +11084,82,0.2,0,0 +11089,82,0.25,0,0 +11094,82,0.3,0,0 +11099,82,0.35,0,0 +11104,82,0.4,0,0 +11139,82,0.35,0,0 +11144,82,0.3,0,0 +11149,82,0.25,0,0 +11154,82,0.2,0,0 +11159,82,0.15,0,0 +11164,82,0.1,0,0 +11169,82,0.05,0,0 +11174,82,0,0,0 +11189,82,-0.1,0,0 +11194,82,-0.2,0,0 +11199,82,-0.3,0,0 +11204,82,-0.35,0,0 +11219,82,-0.3,0,0 +11240,0,-0.3,3,0 \ No newline at end of file diff --git a/VectoCore/VectoCore/Resources/Declaration/MissionCycles/MunicipalUtility_PTO_generic.vptoc b/VectoCore/VectoCore/Resources/Declaration/MissionCycles/MunicipalUtility_PTO_generic.vptoc new file mode 100644 index 0000000000..68fafbca36 --- /dev/null +++ b/VectoCore/VectoCore/Resources/Declaration/MissionCycles/MunicipalUtility_PTO_generic.vptoc @@ -0,0 +1,25 @@ + <t>,<Engine speed>,<PTO Torque> +0,990,65 +1,990,65 +2,990,65 +3,990,65 +4,990,65 +5,990,260 +6,990,260 +7,990,260 +8,990,260 +9,990,200 +10,990,200 +11,990,200 +12,990,200 +13,990,200 +14,990,200 +15,990,200 +16,990,200 +17,990,200 +18,990,200 +19,990,200 +20,990,200 +21,990,200 +22,990,200 +23,990,200 \ No newline at end of file diff --git a/VectoCore/VectoCore/Resources/Declaration/MissionCycles/MunicipalUtility_PTO_generic.vptol b/VectoCore/VectoCore/Resources/Declaration/MissionCycles/MunicipalUtility_PTO_generic.vptol new file mode 100644 index 0000000000..c4293fdd39 --- /dev/null +++ b/VectoCore/VectoCore/Resources/Declaration/MissionCycles/MunicipalUtility_PTO_generic.vptol @@ -0,0 +1,25 @@ +<Engine speed> [rpm], <PTO Torque> [Nm] +400,5.4 +600,8.0 +800,11.4 +1000,15.5 +1200,20.2 +1400,25.7 +1600,31.8 +1800,38.6 +2000,46.2 +2200,54.4 +2400,63.3 +2600,72.9 +2800,83.2 +3000,94.2 +3200,105.9 +3400,118.3 +3600,131.4 +3800,145.2 +4000,159.6 +4200,174.8 +4400,190.7 +4600,207.2 +4800,224.5 +5000,242.4 diff --git a/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv b/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv index 7705976756..e8dba5ade9 100644 --- a/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv +++ b/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv @@ -1,29 +1,29 @@ -Valid,Vehicle Category,Axle Conf.,GVW_Min,GVW_Max,HDV class,Height,DesignSpeed,Body,Trailer,EMS ,.vacc file,Cross Wind Correction - Long haul,Cross Wind Correction - EMS,Cross Wind Correction - Other,Truck Axles - Long haul,Truck Axles - Other,Trailer Axles - Long haul,Trailer Axles - Other,Truck Axles - Long haul EMS,Truck Axles - Other EMS,Trailer Axles - Long haul EMS,Trailer Axles - Other EMS,Long haul ,Long haul EMS ,Regional delivery ,Regional delivery EMS,Urban delivery ,Municipal utility,Construction,Heavy Urban,Urban,Suburban,Interurban,Coach,CdxA_Construction +Valid,Vehicle Category,Axle Conf.,GVW_Min,GVW_Max,HDV class,Height,DesignSpeed,Body,Trailer,EMS ,.vacc file,Cross Wind Correction - Long haul,Cross Wind Correction - EMS,Cross Wind Correction - Other,Truck Axles - Long haul,Truck Axles - Other,Trailer Axles - Long haul,Trailer Axles - Other,Truck Axles - Long haul EMS,Truck Axles - Other EMS,Trailer Axles - Long haul EMS,Trailer Axles - Other EMS,Long haul ,Long haul EMS ,Regional delivery ,Regional delivery EMS,Urban delivery ,Municipal utility,Construction,Heavy Urban,Urban,Suburban,Interurban,Coach,CdxA_Construction,BodyWeight_MunicipalUtility ## 0 ,RigidTruck ,4x2 ,0 ,7.5 ,0 ,4.0 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- , ,pc10(R)/pc50(R) , ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- , , -1 ,RigidTruck ,4x2 ,7.5 ,10 ,1 ,3.6 ,85 ,B1 , , ,Truck.vacc, , ,RigidSolo , ,45/55 , , , , , , ,- ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- , -1 ,Tractor ,4x2 ,7.5 ,10 ,1 ,3.6 ,85 ,B1 , , ,Truck.vacc, , ,RigidSolo , ,45/55 , , , , , , ,- ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- , -1 ,RigidTruck ,4x2 ,10 ,12 ,2 ,3.75 ,85 ,B2 ,T1 , ,Truck.vacc,RigidTrailer , ,RigidSolo ,22.5/32.5 ,45/55 ,45 , , , , , ,pc10(R)/pc75(R) ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- , -1 ,Tractor ,4x2 ,10 ,12 ,2 ,3.75 ,85 ,B2 ,T1 , ,Truck.vacc,RigidTrailer , ,RigidSolo ,22.5/32.5 ,45/55 ,45 , , , , , ,pc10(R)/pc75(R) ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- , -1 ,RigidTruck ,4x2 ,12 ,16 ,3 ,3.9 ,85 ,B3 , , ,Truck.vacc, , ,RigidSolo , ,40/60 , , , , , , ,- ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- , -1 ,Tractor ,4x2 ,12 ,16 ,3 ,3.9 ,85 ,B3 , , ,Truck.vacc, , ,RigidSolo , ,40/60 , , , , , , ,- ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- , -1 ,RigidTruck ,4x2 ,16 ,99 ,4 ,4.0 ,85 ,B4 ,T2 , ,Truck.vacc,RigidTrailer , ,RigidSolo ,20/30 ,45/55 ,50 , , , , , ,1900/14000 ,- ,900/4400 ,- ,- ,600/3000 ,- ,- ,- ,- ,- ,- , -1 ,Tractor ,4x2 ,16 ,99 ,5 ,4.0 ,85 , ,ST1 ,ST1+T2,Truck.vacc,TractorSemitrailer ,RigidTrailer ,TractorSemitrailer ,20/25 ,25/25 ,55 ,50 ,15/20 ,17.5/25 ,40/25 ,35/22.5 ,2600/19300 ,3500/26500 ,2600/12900 ,3500/17500 ,- ,- ,- ,- ,- ,- ,- ,- , -0 ,RigidTruck ,4x4 ,7.5 ,16 ,6 ,3.75 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- ,- ,- ,- ,- ,??? ,??? ,- ,- ,- ,- ,- , -0 ,RigidTruck ,4x4 ,16 ,99 ,7 ,4.0 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- , -0 ,Tractor ,4x4 ,16 ,99 ,8 ,4.0 ,85 , , , ,Truck.vacc, , ,TractorSemitrailer , , , , , , , , ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- , -1 ,RigidTruck ,6x2 ,0 ,99 ,9 ,4.0 ,85 ,B5 ,T2 ,D+ST1 ,Truck.vacc,RigidTrailer ,RigidTrailer ,RigidSolo ,20/30/15 ,35/40/25 ,35 , ,15/20/10 ,17.5/20/10 ,22.5/32.5 ,22.5/30 ,2600/19300 ,3500/26500 ,1400/7100 ,3500/17500 ,- ,1200/6000 ,- ,- ,- ,- ,- ,- , -1 ,Tractor ,6x2 ,0 ,99 ,10 ,4.0 ,85 , ,ST1 ,ST1+T2,Truck.vacc,TractorSemitrailer ,RigidTrailer ,TractorSemitrailer ,15/10/20 ,20/10/20 ,55 ,50 ,12.5/15/10 ,15/15/10 ,37.5/25 ,35/25 ,2600/19300 ,3500/26500 ,2600/12900 ,3500/17500 ,- ,- ,- ,- ,- ,- ,- ,- , -1 ,RigidTruck ,6x4 ,0 ,99 ,11 ,4.0 ,85 ,B5 ,T2 ,D+ST1 ,Truck.vacc,RigidTrailer ,RigidTrailer ,RigidSolo ,20/22.5/22.5 ,35/35/30 ,35 , ,15/20/10 ,17.5/20/10 ,22.5/32.5 ,22.5/30 ,2600/19300 ,3500/26500 ,1400/7100 ,3500/17500 ,- ,1200/6000 ,1400/7100 ,- ,- ,- ,- ,- ,8.5 -1 ,Tractor ,6x4 ,0 ,99 ,12 ,4.0 ,85 , ,ST1 ,ST1+T2,Truck.vacc,TractorSemitrailer ,RigidTrailer ,TractorSemitrailer ,15/15/15 ,20/15/15 ,55 ,50 ,12.5/15/10 ,15/15/10 ,37.5/25 ,35/25 ,2600/19300 ,3500/26500 ,2600/12900 ,3500/17500 ,- ,- ,2600/12900 ,- ,- ,- ,- ,- ,8.8 -0 ,RigidTruck ,6x6 ,0 ,99 ,13 ,3.6 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- , -0 ,Tractor ,6x6 ,0 ,99 ,14 ,3.6 ,85 , , , ,Truck.vacc, , ,TractorSemitrailer , , , , , , , , ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- , -0 ,RigidTruck ,8x2 ,0 ,99 ,15 ,3.6 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- , -1 ,RigidTruck ,8x4 ,0 ,99 ,16 ,3.6 ,85 , , , ,Truck.vacc, , ,RigidSolo , ,25/25/25/25 , , , , , , ,- ,- ,- ,- ,- ,- ,2600/12900 ,- ,- ,- ,- ,- , -0 ,RigidTruck ,8x6 ,0 ,99 ,17 ,3.6 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,9.0 -0 ,RigidTruck ,8x8 ,0 ,99 ,17 ,4.0 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- , -0 ,CityBus ,4x2 ,0 ,18 ,B1 ,4.0 ,85 , , , , , , ,CoachBus , , , , , , , , ,- ,- ,- ,- ,- ,- ,- ,??? ,??? ,??? ,- ,- , -0 ,InterurbanBus ,4x2 ,0 ,18 ,B2 ,4.0 ,85 , , , , , , ,CoachBus , , , , , , , , ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,??? ,- , -0 ,Coach ,4x2 ,0 ,18 ,B3 ,4.0 ,85 , , , , , , ,CoachBus , , , , , , , , ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,??? , -0 ,CityBus ,6x2 ,18 ,99 ,B4 ,4.0 ,85 , , , , , , ,CoachBus , , , , , , , , ,- ,- ,- ,- ,- ,- ,- ,??? ,??? ,??? ,- ,- , -0 ,InterurbanBus ,6x2 ,18 ,99 ,B5 ,4.0 ,85 , , , , , , ,CoachBus , , , , , , , , ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,??? ,- , -0 ,Coach ,6x2 ,18 ,99 ,B6 ,4.0 ,85 , , , , , , ,CoachBus , , , , , , , , ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,??? , \ No newline at end of file +1 ,RigidTruck ,4x2 ,7.5 ,10 ,1 ,3.6 ,85 ,B1 , , ,Truck.vacc, , ,RigidSolo , ,45/55 , , , , , , ,- ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- , , +1 ,Tractor ,4x2 ,7.5 ,10 ,1 ,3.6 ,85 ,B1 , , ,Truck.vacc, , ,RigidSolo , ,45/55 , , , , , , ,- ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- , , +1 ,RigidTruck ,4x2 ,10 ,12 ,2 ,3.75 ,85 ,B2 ,T1 , ,Truck.vacc,RigidTrailer , ,RigidSolo ,22.5/32.5 ,45/55 ,45 , , , , , ,pc10(R)/pc75(R) ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- , , +1 ,Tractor ,4x2 ,10 ,12 ,2 ,3.75 ,85 ,B2 ,T1 , ,Truck.vacc,RigidTrailer , ,RigidSolo ,22.5/32.5 ,45/55 ,45 , , , , , ,pc10(R)/pc75(R) ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- , , +1 ,RigidTruck ,4x2 ,12 ,16 ,3 ,3.9 ,85 ,B3 , , ,Truck.vacc, , ,RigidSolo , ,40/60 , , , , , , ,- ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- , , +1 ,Tractor ,4x2 ,12 ,16 ,3 ,3.9 ,85 ,B3 , , ,Truck.vacc, , ,RigidSolo , ,40/60 , , , , , , ,- ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- , , +1 ,RigidTruck ,4x2 ,16 ,99 ,4 ,4.0 ,85 ,B4 ,T2 , ,Truck.vacc,RigidTrailer , ,RigidSolo ,20/30 ,45/55 ,50 , , , , , ,1900/14000 ,- ,900/4400 ,- ,- ,600/3000 ,- ,- ,- ,- ,- ,- , , 6000 +1 ,Tractor ,4x2 ,16 ,99 ,5 ,4.0 ,85 , ,ST1 ,ST1+T2,Truck.vacc,TractorSemitrailer ,RigidTrailer ,TractorSemitrailer ,20/25 ,25/25 ,55 ,50 ,15/20 ,17.5/25 ,40/25 ,35/22.5 ,2600/19300 ,3500/26500 ,2600/12900 ,3500/17500 ,- ,- ,- ,- ,- ,- ,- ,- , , +0 ,RigidTruck ,4x4 ,7.5 ,16 ,6 ,3.75 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- ,- ,- ,- ,- ,??? ,??? ,- ,- ,- ,- ,- , , +0 ,RigidTruck ,4x4 ,16 ,99 ,7 ,4.0 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- , , +0 ,Tractor ,4x4 ,16 ,99 ,8 ,4.0 ,85 , , , ,Truck.vacc, , ,TractorSemitrailer , , , , , , , , ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- , , +1 ,RigidTruck ,6x2 ,0 ,99 ,9 ,4.0 ,85 ,B5 ,T2 ,D+ST1 ,Truck.vacc,RigidTrailer ,RigidTrailer ,RigidSolo ,20/30/15 ,35/40/25 ,35 , ,15/20/10 ,17.5/20/10 ,22.5/32.5 ,22.5/30 ,2600/19300 ,3500/26500 ,1400/7100 ,3500/17500 ,- ,1200/6000 ,- ,- ,- ,- ,- ,- , , 6750 +1 ,Tractor ,6x2 ,0 ,99 ,10 ,4.0 ,85 , ,ST1 ,ST1+T2,Truck.vacc,TractorSemitrailer ,RigidTrailer ,TractorSemitrailer ,15/10/20 ,20/10/20 ,55 ,50 ,12.5/15/10 ,15/15/10 ,37.5/25 ,35/25 ,2600/19300 ,3500/26500 ,2600/12900 ,3500/17500 ,- ,- ,- ,- ,- ,- ,- ,- , , +1 ,RigidTruck ,6x4 ,0 ,99 ,11 ,4.0 ,85 ,B5 ,T2 ,D+ST1 ,Truck.vacc,RigidTrailer ,RigidTrailer ,RigidSolo ,20/22.5/22.5 ,35/35/30 ,35 , ,15/20/10 ,17.5/20/10 ,22.5/32.5 ,22.5/30 ,2600/19300 ,3500/26500 ,1400/7100 ,3500/17500 ,- ,1200/6000 ,1400/7100 ,- ,- ,- ,- ,- ,8.5 , 6750 +1 ,Tractor ,6x4 ,0 ,99 ,12 ,4.0 ,85 , ,ST1 ,ST1+T2,Truck.vacc,TractorSemitrailer ,RigidTrailer ,TractorSemitrailer ,15/15/15 ,20/15/15 ,55 ,50 ,12.5/15/10 ,15/15/10 ,37.5/25 ,35/25 ,2600/19300 ,3500/26500 ,2600/12900 ,3500/17500 ,- ,- ,2600/12900 ,- ,- ,- ,- ,- ,8.8 , +0 ,RigidTruck ,6x6 ,0 ,99 ,13 ,3.6 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- , , +0 ,Tractor ,6x6 ,0 ,99 ,14 ,3.6 ,85 , , , ,Truck.vacc, , ,TractorSemitrailer , , , , , , , , ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- , , +0 ,RigidTruck ,8x2 ,0 ,99 ,15 ,3.6 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- ,- ,??? ,- ,- ,- ,- ,- ,- ,- ,- ,- , , +1 ,RigidTruck ,8x4 ,0 ,99 ,16 ,3.6 ,85 , , , ,Truck.vacc, , ,RigidSolo , ,25/25/25/25 , , , , , , ,- ,- ,- ,- ,- ,- ,2600/12900 ,- ,- ,- ,- ,- , , +0 ,RigidTruck ,8x6 ,0 ,99 ,17 ,3.6 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- ,9.0 , +0 ,RigidTruck ,8x8 ,0 ,99 ,17 ,4.0 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- , , +0 ,CityBus ,4x2 ,0 ,18 ,B1 ,4.0 ,85 , , , , , , ,CoachBus , , , , , , , , ,- ,- ,- ,- ,- ,- ,- ,??? ,??? ,??? ,- ,- , , +0 ,InterurbanBus ,4x2 ,0 ,18 ,B2 ,4.0 ,85 , , , , , , ,CoachBus , , , , , , , , ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,??? ,- , , +0 ,Coach ,4x2 ,0 ,18 ,B3 ,4.0 ,85 , , , , , , ,CoachBus , , , , , , , , ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,??? , , +0 ,CityBus ,6x2 ,18 ,99 ,B4 ,4.0 ,85 , , , , , , ,CoachBus , , , , , , , , ,- ,- ,- ,- ,- ,- ,- ,??? ,??? ,??? ,- ,- , , +0 ,InterurbanBus ,6x2 ,18 ,99 ,B5 ,4.0 ,85 , , , , , , ,CoachBus , , , , , , , , ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,??? ,- , , +0 ,Coach ,6x2 ,18 ,99 ,B6 ,4.0 ,85 , , , , , , ,CoachBus , , , , , , , , ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,- ,??? , , \ No newline at end of file diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index efe727aaa0..459239ec80 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -429,6 +429,8 @@ <EmbeddedResource Include="Resources\XSD\xmldsig-core-schema.xsd"> <SubType>Designer</SubType> </EmbeddedResource> + <EmbeddedResource Include="Resources\Declaration\MissionCycles\MunicipalUtility_PTO_generic.vptoc" /> + <EmbeddedResource Include="Resources\Declaration\MissionCycles\MunicipalUtility_PTO_generic.vptol" /> </ItemGroup> <ItemGroup> <EmbeddedResource Include="Resources\Declaration\Report\4x2r.png" /> diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs index 6cff5ae60a..df49d31fbc 100644 --- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs @@ -1,7 +1,9 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Windows.Forms; using System.Xml; +using System.Xml.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Models; @@ -9,6 +11,7 @@ using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; using TUGraz.VectoCore.InputData.Reader.ComponentData; +using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; using TUGraz.VectoCore.OutputData; @@ -608,20 +611,20 @@ namespace TUGraz.VectoCore.Tests.XML } } - [TestMethod, Ignore] + [TestMethod] public void TestPTOTypeTypes() { - var ptoTypes = new[] { - "None", - "only the drive shaft of the PTO - shift claw, synchronizer, Schieberad", - "only the drive shaft of the PTO - multi-disc clutch", - "only the drive shaft of the PTO - multi-disc clutch, oil pump", - "drive shaft and/or up to 2 gear wheels - shift claw, synchronizer, Schieberad", - "drive shaft and/or up to 2 gear wheels - multi-disc clutch", - "drive shaft and/or up to 2 gear wheels - multi-disc clutch, oil pump", - "drive shaft and/or more than 2 gear wheels - shift claw, synchronizer, Schieberad", - "drive shaft and/or more than 2 gear wheels - multi-disc clutch", - "drive shaft and/or more than 2 gear wheels - multi-disc clutch, oil pump", + var ptoTypes = new string[][] { + new[] { "none", "none" }, + new[] { "only the drive shaft of the PTO", "shift claw, synchronizer, sliding gearwheel" }, + new[] { "only the drive shaft of the PTO", "multi-disc clutch" }, + new[] { "only the drive shaft of the PTO", "multi-disc clutch, oil pump" }, + new[] { "drive shaft and/or up to 2 gear wheels", "shift claw, synchronizer, sliding gearwheel" }, + new[] { "drive shaft and/or up to 2 gear wheels", "multi-disc clutch" }, + new[] { "drive shaft and/or up to 2 gear wheels", "multi-disc clutch, oil pump" }, + new[] { "drive shaft and/or more than 2 gear wheels", "shift claw, synchronizer, sliding gearwheel" }, + new[] { "drive shaft and/or more than 2 gear wheels", "multi-disc clutch" }, + new[] { "drive shaft and/or more than 2 gear wheels", "multi-disc clutch, oil pump" }, }; foreach (var ptoType in ptoTypes) { var reader = XmlReader.Create(SampleVehicleDecl); @@ -633,20 +636,36 @@ namespace TUGraz.VectoCore.Tests.XML var helper = new XPathHelper(ExecutionMode.Declaration); helper.AddNamespaces(manager); - var xmlRetarderType = nav.SelectSingleNode(helper.QueryAbs( + var ptoGearWheels = nav.SelectSingleNode(helper.QueryAbs( + helper.NSPrefix(XMLNames.VectoInputDeclaration, + Constants.XML.RootNSPrefix), + XMLNames.Component_Vehicle, + XMLNames.Vehicle_PTO, + XMLNames.Vehicle_PTO_ShaftsGearWheels), + manager); + ptoGearWheels.SetValue(ptoType[0]); + var ptoOther = nav.SelectSingleNode(helper.QueryAbs( helper.NSPrefix(XMLNames.VectoInputDeclaration, Constants.XML.RootNSPrefix), XMLNames.Component_Vehicle, - XMLNames.Vehicle_PTOType), + XMLNames.Vehicle_PTO, + XMLNames.Vehicle_PTO_OtherElements), manager); - xmlRetarderType.SetValue(ptoType); + ptoOther.SetValue(ptoType[1]); var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); - //Assert.AreEqual(ptoType, inputDataProvider.VehicleInputData.pto); + if (ptoType[0] == "none") { + Assert.AreEqual("None", + inputDataProvider.PTOTransmissionInputData.PTOTransmissionType); + } else { + Assert.AreEqual(string.Format("{0} - {1}", ptoType[0], ptoType[1]), + inputDataProvider.PTOTransmissionInputData.PTOTransmissionType); + } + DeclarationData.PTOTransmission.Lookup(inputDataProvider.PTOTransmissionInputData.PTOTransmissionType); } } @@ -723,5 +742,29 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(gearboxType.Value, inputDataProvider.GearboxInputData.Type); } } + + [TestMethod] + public void TestPTOInputNone() + { + var reader = XmlReader.Create(SampleVehicleDecl); + + var inputDataProvider = new XMLDeclarationInputDataProvider(reader, true); + var ptoDataProvider = inputDataProvider.PTOTransmissionInputData; + + Assert.AreEqual("None", ptoDataProvider.PTOTransmissionType); + } + + [TestMethod] + public void TestPTOInput() + { + var reader = XmlReader.Create(SampleVehicleFullDecl); + + var inputDataProvider = new XMLDeclarationInputDataProvider(reader, true); + var ptoDataProvider = inputDataProvider.PTOTransmissionInputData; + var ptoLosses = DeclarationData.PTOTransmission.Lookup(ptoDataProvider.PTOTransmissionType); + + Assert.AreEqual("only the drive shaft of the PTO - multi-disc clutch", ptoDataProvider.PTOTransmissionType); + Assert.AreEqual(1000, ptoLosses.Value()); + } } } \ No newline at end of file -- GitLab