From f45801f06dd6c3e5b17f5a0177f20ec975e26124 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Wed, 31 May 2017 17:59:09 +0200 Subject: [PATCH] implementing XML Report generation. fetching all required input data, make airdragdata a separate component --- VECTO/GUI/MainForm.vb | 6 +- VECTO/Input Files/Engine.vb | 12 +- VECTO/Input Files/Gearbox.vb | 18 +- VECTO/Input Files/VectoJob.vb | 7 + VECTO/Input Files/Vehicle.vb | 41 +- .../InputData/DeclarationInputData.cs | 10 +- .../InputData/IInputDataProvider.cs | 4 + .../VectoCommon/Models/AxleLineType.cs | 34 + .../VectoCommon/Models/CertificationMethod.cs | 28 + .../Models/CrossWindCorrectionMode.cs | 16 + .../VectoCommon/Models/RetarderType.cs | 18 + .../VectoCommon/Models/VehicleCategory.cs | 19 + .../Resources/XMLNames.Designer.cs | 13 +- .../VectoCommon/Resources/XMLNames.resx | 774 ++++++++++++++++++ VectoCommon/VectoCommon/VectoCommon.csproj | 14 + VectoCommon/VectoHashing/VectoComponents.cs | 7 +- VectoCommon/VectoHashing/VectoHash.cs | 58 +- VectoCommon/VectoHashing/VectoHashing.csproj | 4 - VectoConsole/Program.cs | 1 - .../FileIO/JSON/JSONComponentInputData.cs | 3 + .../InputData/FileIO/JSON/JSONEngineData.cs | 10 +- .../InputData/FileIO/JSON/JSONGearboxData.cs | 12 +- .../InputData/FileIO/JSON/JSONInputData.cs | 3 + .../InputData/FileIO/JSON/JSONVehicleData.cs | 17 +- ...ractDeclarationXMLComponentDataProvider.cs | 16 +- .../XMLDeclarationAirdragDataProvider.cs | 8 +- .../XMLDeclarationAngledriveDataProvider.cs | 2 +- .../XMLDeclarationAuxiliaryDataProvider.cs | 2 +- .../XMLDeclarationAxlegearDataProvider.cs | 15 +- .../XMLDeclarationDriverDataProvider.cs | 1 - .../XMLDeclarationEngineDataProvider.cs | 2 +- .../XMLDeclarationGearboxDataProvider.cs | 7 +- .../XMLDeclarationInputDataProvider.cs | 15 +- .../XMLDeclarationJobInputDataProvider.cs | 2 +- .../XMLDeclarationRetarderDataProvider.cs | 2 +- ...LDeclarationTorqueConverterDataProvider.cs | 2 +- .../XMLDeclarationVehicleDataProvider.cs | 12 +- ...ractEngineeringXMLComponentDataProvider.cs | 2 +- .../XMLEngineeringAirdragDataProvider.cs | 2 +- .../XMLEngineeringAngledriveDataProvider.cs | 2 +- .../XMLEngineeringAuxiliaryDataProvider.cs | 2 +- .../XMLEngineeringAxlegearDataProvider.cs | 9 +- .../XMLEngineeringDriverDataProvider.cs | 2 +- .../XMLEngineeringEngineDataProvider.cs | 2 +- .../XMLEngineeringGearboxDataProvider.cs | 2 +- .../XMLEngineeringInputDataProvider.cs | 2 +- .../XMLEngineeringJobInputDataProvider.cs | 2 +- .../XMLEngineeringRetarderDataProvider.cs | 2 +- ...LEngineeringTorqueConverterDataProvider.cs | 2 +- .../XMLEngineeringVehicleDataProvider.cs | 12 +- .../VectoCore/InputData/Impl/InputData.cs | 6 +- .../AbstractSimulationDataAdapter.cs | 39 +- .../DeclarationDataAdapter.cs | 44 +- .../EngineeringDataAdapter.cs | 38 +- .../DeclarationModeVectoRunDataFactory.cs | 25 +- .../EngineeringModeVectoRunDataFactory.cs | 5 +- .../Models/Declaration/MissionType.cs | 32 + .../VectoCore/Models/Declaration/Segment.cs | 6 +- .../VectoCore/Models/Declaration/Segments.cs | 1 + .../Models/Simulation/Data/VectoRunData.cs | 24 +- .../Models/Simulation/IVehicleContainer.cs | 5 +- .../Simulation/Impl/PowertrainBuilder.cs | 6 +- .../Simulation/Impl/SimulatorFactory.cs | 8 +- .../Models/Simulation/Impl/VectoRun.cs | 30 +- .../Simulation/Impl/VehicleContainer.cs | 15 +- .../SimulationComponent/Data/AxleGearData.cs | 6 + .../Data/ICrossWindCorrection.cs | 1 + .../Data/SimulationComponentData.cs | 7 +- .../SimulationComponent/Data/VehicleData.cs | 23 +- .../SimulationComponent/Impl/Vehicle.cs | 13 +- .../VectoCore/OutputData/DeclarationReport.cs | 74 +- .../OutputData/FileIO/FileOutputWriter.cs | 9 + VectoCore/VectoCore/OutputData/IDataWriter.cs | 4 +- .../OutputData/IModalDataContainer.cs | 142 ++-- .../OutputData/ModalDataContainer.cs | 13 +- .../OutputData/SummaryDataContainer.cs | 40 +- .../OutputData/XML/AbstractXMLWriter.cs | 57 +- .../OutputData/XML/AttributeMappings.cs | 2 +- .../OutputData/XML/XMLDeclarationReport.cs | 311 ++++--- .../OutputData/XML/XMLDeclarationWriter.cs | 8 +- .../OutputData/XML/XMLEngineeringWriter.cs | 8 +- .../VectoCore/OutputData/XML/XMLFullReport.cs | 348 ++++++++ .../Resources/Declaration/SegmentTable.csv | 58 +- VectoCore/VectoCore/Resources/XMLNames.resx | 771 ----------------- .../VectoCore/Resources/XSD/VectoCOC.xsd | 2 +- .../VectoCore/Resources/XSD/VectoOutput.xsd | 220 +++-- VectoCore/VectoCore/Utils/XPathHelper.cs | 2 +- VectoCore/VectoCore/VectoCore.csproj | 15 +- .../VectoCoreTest/Integration/ATPowerTrain.cs | 21 +- .../Integration/CoachAdvancedAuxPowertrain.cs | 25 +- .../Integration/CoachPowerTrain.cs | 19 +- .../SimulationRuns/FullPowertrain.cs | 32 +- .../SimulationRuns/MinimalPowertrain.cs | 21 +- .../Integration/Truck40tPowerTrain.cs | 24 +- .../DeclarationAdapterTestHelper.cs | 4 +- .../DeclarationDataAdapterTest_Class2.cs | 12 +- .../DeclarationDataAdapterTest_Class5.cs | 16 +- .../DeclarationDataAdapterTest_Class9.cs | 20 +- .../Models/Simulation/AuxTests.cs | 2 +- .../Simulation/MeasuredSpeedModeTest.cs | 20 +- .../Models/SimulationComponent/DriverTest.cs | 24 +- .../Models/SimulationComponent/VehicleTest.cs | 13 +- .../SimulationComponentData/ValidationTest.cs | 19 +- .../Utils/MockEngineDataProvider.cs | 2 +- .../Utils/MockModalDataContainer.cs | 10 +- VectoCore/VectoCoreTest/Utils/MockRunData.cs | 3 + .../Utils/MockSimulationDataFactory.cs | 10 +- .../Utils/MockVehicleContainer.cs | 4 + .../XML/XMLDeclarationInputTest.cs | 2 +- .../XML/XMLEngineeringInputSingleTest.cs | 2 +- 110 files changed, 2375 insertions(+), 1606 deletions(-) create mode 100644 VectoCommon/VectoCommon/Models/AxleLineType.cs create mode 100644 VectoCommon/VectoCommon/Models/CertificationMethod.cs rename {VectoCore/VectoCore => VectoCommon/VectoCommon}/Resources/XMLNames.Designer.cs (99%) create mode 100644 VectoCommon/VectoCommon/Resources/XMLNames.resx create mode 100644 VectoCore/VectoCore/OutputData/XML/XMLFullReport.cs delete mode 100644 VectoCore/VectoCore/Resources/XMLNames.resx diff --git a/VECTO/GUI/MainForm.vb b/VECTO/GUI/MainForm.vb index 3a3e4c08a0..c408c7348c 100644 --- a/VECTO/GUI/MainForm.vb +++ b/VECTO/GUI/MainForm.vb @@ -46,12 +46,12 @@ Imports TUGraz.VectoCommon.Exceptions Imports TUGraz.VectoCommon.InputData Imports TUGraz.VectoCommon.Models Imports TUGraz.VectoCommon.OutputData +Imports TUGraz.VectoCommon.Resources Imports TUGraz.VectoCommon.Utils Imports TUGraz.VectoCore.InputData.FileIO.XML.Declaration Imports TUGraz.VectoCore.InputData.FileIO.XML.Engineering Imports TUGraz.VectoCore.OutputData Imports TUGraz.VectoCore.OutputData.FileIO -Imports TUGraz.VectoCore.Resources Imports TUGraz.VectoCore.Utils Imports VectoAuxiliaries @@ -1101,10 +1101,10 @@ lbFound: Next For Each job As String In JobFileList - Dim report As String = New FileOutputWriter(job).PDFReportName + Dim report As String = New FileOutputWriter(job).XMLFullReportName If File.Exists(report) Then sender.ReportProgress(100, New VectoProgress With {.Target = "ListBox", - .Message = String.Format("PDF-Report for '{0}' written to {1}", Path.GetFileName(job), report), + .Message = String.Format("XML-Report for '{0}' written to {1}", Path.GetFileName(job), report), .Link = "<RUN>" + report}) End If Next diff --git a/VECTO/Input Files/Engine.vb b/VECTO/Input Files/Engine.vb index 49117b8f8a..4d749d83b4 100644 --- a/VECTO/Input Files/Engine.vb +++ b/VECTO/Input Files/Engine.vb @@ -308,21 +308,21 @@ Public Class Engine End Get End Property - Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber + Public ReadOnly Property CertificationMethod As CertificationMethod Implements IComponentInputData.CertificationMethod Get - Return "N.A." + Return CertificationMethod.NotCertified End Get End Property - Public ReadOnly Property DigestValue As String Implements IComponentInputData.DigestValue + Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber Get - Return "" + Return "N.A." End Get End Property - Public ReadOnly Property IntegrityStatus As IntegrityStatus Implements IComponentInputData.IntegrityStatus + Public ReadOnly Property DigestValue As String Implements IComponentInputData.DigestValue Get - Return IntegrityStatus.NotChecked + Return "" End Get End Property diff --git a/VECTO/Input Files/Gearbox.vb b/VECTO/Input Files/Gearbox.vb index 270a887281..93fdf4e6cf 100644 --- a/VECTO/Input Files/Gearbox.vb +++ b/VECTO/Input Files/Gearbox.vb @@ -314,21 +314,21 @@ Public Class Gearbox End Get End Property - Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber + Public ReadOnly Property CertificationMethod As CertificationMethod Implements IComponentInputData.CertificationMethod Get - Return "N.A." + Return CertificationMethod.NotCertified End Get End Property - Public ReadOnly Property DigestValue As String Implements IComponentInputData.DigestValue + Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber Get - Return "" + Return "N.A." End Get End Property - Public ReadOnly Property IntegrityStatus As IntegrityStatus Implements IComponentInputData.IntegrityStatus + Public ReadOnly Property DigestValue As String Implements IComponentInputData.DigestValue Get - Return IntegrityStatus.NotChecked + Return "" End Get End Property @@ -523,5 +523,11 @@ Public Class Gearbox Return GearLossMap(0, True).ToDouble(0) End Get End Property + + Public ReadOnly Property LineType As AxleLineType Implements IAxleGearInputData.LineType + Get + Return AxleLineType.SinglePortalAxle + End Get + End Property End Class diff --git a/VECTO/Input Files/VectoJob.vb b/VECTO/Input Files/VectoJob.vb index 8a65f4a791..78a1748537 100644 --- a/VECTO/Input Files/VectoJob.vb +++ b/VECTO/Input Files/VectoJob.vb @@ -17,6 +17,7 @@ Imports System.IO Imports System.Linq Imports System.Runtime.Remoting.Messaging Imports System.Text +Imports System.Xml.Linq Imports Newtonsoft.Json.Linq Imports TUGraz.VECTO.Input_Files Imports TUGraz.VectoCommon.Exceptions @@ -593,6 +594,12 @@ Public Class VectoJob End Get End Property + Public ReadOnly Property XMLHash As XElement Implements IDeclarationInputDataProvider.XMLHash + Get + Return Nothing + End Get + End Property + Public ReadOnly Property SavedInDeclarationMode As Boolean Implements IDeclarationJobInputData.SavedInDeclarationMode Get diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb index 1cea72e46c..059350a462 100644 --- a/VECTO/Input Files/Vehicle.vb +++ b/VECTO/Input Files/Vehicle.vb @@ -93,6 +93,7 @@ Public Class Vehicle Public Shared Function ValidateVehicle(vehicle As Vehicle, validationContext As ValidationContext) As ValidationResult Dim vehicleData As VehicleData + Dim airdragData As AirdragData Dim retarderData As RetarderData Dim ptoData As PTOData = Nothing Dim angledriveData As AngledriveData @@ -109,14 +110,16 @@ Public Class Vehicle Dim doa As DeclarationDataAdapter = New DeclarationDataAdapter() Dim segment As Segment = DeclarationData.Segments.Lookup(vehicle.VehicleCategory, vehicle.AxleConfiguration, vehicle.GrossVehicleMassRating, vehicle.CurbMassChassis) - vehicleData = doa.CreateVehicleData(vehicle, vehicle, segment.Missions.First(), - segment.Missions.First().Loadings.First().Value, segment.VehicleHeight, segment.MunicipalBodyWeight) + vehicleData = doa.CreateVehicleData(vehicle, segment.Missions.First(), + segment.Missions.First().Loadings.First().Value, segment.MunicipalBodyWeight) + airdragData = doa.CreateAirdragData(vehicle, segment.Missions.First(), segment) 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) + vehicleData = doa.CreateVehicleData(vehicle) + airdragData = doa.CreateAirdragData(vehicle, vehicle) retarderData = doa.CreateRetarderData(vehicle) angledriveData = doa.CreateAngledriveData(vehicle, True) ptoData = doa.CreatePTOTransmissionData(vehicle) @@ -130,6 +133,14 @@ Public Class Vehicle result.Select(Function(r) r.ErrorMessage + String.Join(Environment.NewLine, r.MemberNames)).ToList()) End If + result = airdragData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType, + emsCycle) + If result.Any() Then + Return _ + New ValidationResult("Airdrag Configuration is invalid. ", + result.Select(Function(r) r.ErrorMessage + String.Join(Environment.NewLine, r.MemberNames)).ToList()) + End If + result = retarderData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType, emsCycle) If result.Any() Then @@ -285,21 +296,21 @@ Public Class Vehicle End Get End Property - Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber + Public ReadOnly Property CertificationMethod As CertificationMethod Implements IComponentInputData.CertificationMethod Get - Return "N.A." 'ToDo + Return CertificationMethod.NotCertified End Get End Property - Public ReadOnly Property DigestValue As String Implements IComponentInputData.DigestValue + Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber Get - Return "" + Return "N.A." 'ToDo End Get End Property - Public ReadOnly Property IntegrityStatus As IntegrityStatus Implements IComponentInputData.IntegrityStatus + Public ReadOnly Property DigestValue As String Implements IComponentInputData.DigestValue Get - Return IntegrityStatus.NotChecked + Return "" End Get End Property @@ -317,6 +328,18 @@ Public Class Vehicle End Get End Property + Public ReadOnly Property VIN As String Implements IVehicleDeclarationInputData.VIN + Get + Return "N.A." + End Get + End Property + + Public ReadOnly Property LegislativeClass As String Implements IVehicleDeclarationInputData.LegislativeClass + Get + Return "N3" + End Get + End Property + Public ReadOnly Property CurbMassChassis As Kilogram Implements IVehicleDeclarationInputData.CurbMassChassis Get Return Mass.SI(Of Kilogram)() diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index a76b52edff..033de94e30 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -60,15 +60,19 @@ namespace TUGraz.VectoCommon.InputData string TechnicalReportId { get; } + CertificationMethod CertificationMethod { get; } + string CertificationNumber { get; } string DigestValue { get; } - - IntegrityStatus IntegrityStatus { get; } } public interface IVehicleDeclarationInputData : IComponentInputData { + string VIN { get; } + + string LegislativeClass { get; } + /// <summary> /// P036 /// cf. VECTO Input Parameters.xlsx @@ -278,6 +282,8 @@ namespace TUGraz.VectoCommon.InputData /// cf. VECTO Input Parameters.xlsx /// </summary> double Efficiency { get; } + + AxleLineType LineType { get; } } public interface ITorqueConverterDeclarationInputData : IComponentInputData diff --git a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs index 93db0d939d..3a4e75c5bc 100644 --- a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs +++ b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs @@ -29,6 +29,8 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System.Xml.Linq; + namespace TUGraz.VectoCommon.InputData { public interface IInputDataProvider {} @@ -58,6 +60,8 @@ namespace TUGraz.VectoCommon.InputData IDriverDeclarationInputData DriverInputData { get; } IPTOTransmissionInputData PTOTransmissionInputData { get; } + + XElement XMLHash { get; } } public interface IEngineeringInputDataProvider : IInputDataProvider diff --git a/VectoCommon/VectoCommon/Models/AxleLineType.cs b/VectoCommon/VectoCommon/Models/AxleLineType.cs new file mode 100644 index 0000000000..4361d0ef32 --- /dev/null +++ b/VectoCommon/VectoCommon/Models/AxleLineType.cs @@ -0,0 +1,34 @@ +using System; + +namespace TUGraz.VectoCommon.Models +{ + public enum AxleLineType + { + SingleReductionAxle, + SinglePortalAxle, + HubReductionAxle, + SingleReductionTandemAxle, + HubReductionTandemAxle + } + + public static class AxleLineTypeHelper + { + public static string ToXMLFormat(this AxleLineType type) + { + switch (type) { + case AxleLineType.SingleReductionAxle: + return "Single reduction axle"; + case AxleLineType.SinglePortalAxle: + return "Single portal axle"; + case AxleLineType.HubReductionAxle: + return "Hub reduction axle"; + case AxleLineType.SingleReductionTandemAxle: + return "Single reduction tandem axle"; + case AxleLineType.HubReductionTandemAxle: + return "Hub reduction tandem axle"; + default: + throw new ArgumentOutOfRangeException("AxleLineType", type, null); + } + } + } +} \ No newline at end of file diff --git a/VectoCommon/VectoCommon/Models/CertificationMethod.cs b/VectoCommon/VectoCommon/Models/CertificationMethod.cs new file mode 100644 index 0000000000..04d17398eb --- /dev/null +++ b/VectoCommon/VectoCommon/Models/CertificationMethod.cs @@ -0,0 +1,28 @@ +using System; + +namespace TUGraz.VectoCommon.Models +{ + public enum CertificationMethod + { + StandardValues, + Measured, + NotCertified + } + + public static class CertificationMethodHelper + { + public static string ToXMLFormat(this CertificationMethod method) + { + switch (method) { + case CertificationMethod.StandardValues: + return "Standard values"; + case CertificationMethod.Measured: + return "Measured"; + case CertificationMethod.NotCertified: + return "NOT CERTIFIED"; + default: + throw new ArgumentOutOfRangeException("CertificationMethod", method, null); + } + } + } +} \ No newline at end of file diff --git a/VectoCommon/VectoCommon/Models/CrossWindCorrectionMode.cs b/VectoCommon/VectoCommon/Models/CrossWindCorrectionMode.cs index 2a8a8453ae..b49c8cd64f 100644 --- a/VectoCommon/VectoCommon/Models/CrossWindCorrectionMode.cs +++ b/VectoCommon/VectoCommon/Models/CrossWindCorrectionMode.cs @@ -98,5 +98,21 @@ namespace TUGraz.VectoCommon.Models throw new ArgumentOutOfRangeException("CrosswindCorrectionMode", mode, null); } } + + public static string ToXMLFormat(this CrossWindCorrectionMode mode) + { + switch (mode) { + case CrossWindCorrectionMode.NoCorrection: + return "No Correction"; + case CrossWindCorrectionMode.SpeedDependentCorrectionFactor: + return "Speed Dependent Correction Factor"; + case CrossWindCorrectionMode.VAirBetaLookupTable: + return "VAir Beta Lookup Table"; + case CrossWindCorrectionMode.DeclarationModeCorrection: + return "Declaration Mode Correction"; + default: + throw new ArgumentOutOfRangeException("CrosswindCorrection", mode, null); + } + } } } \ No newline at end of file diff --git a/VectoCommon/VectoCommon/Models/RetarderType.cs b/VectoCommon/VectoCommon/Models/RetarderType.cs index 6cf5dedea7..e4cf57f7c3 100644 --- a/VectoCommon/VectoCommon/Models/RetarderType.cs +++ b/VectoCommon/VectoCommon/Models/RetarderType.cs @@ -87,6 +87,24 @@ namespace TUGraz.VectoCommon.Models } } + public static string ToXMLFormat(this RetarderType type) + { + switch (type) { + case RetarderType.None: + return "None"; + case RetarderType.TransmissionInputRetarder: + return "Transmission Input Retarder"; + case RetarderType.TransmissionOutputRetarder: + return "Transmission Output Retarder"; + case RetarderType.EngineRetarder: + return "Engine Retarder"; + case RetarderType.LossesIncludedInTransmission: + return "Losses included in Gearbox"; + default: + throw new ArgumentOutOfRangeException("RetarderType", type, null); + } + } + public static bool IsDedicatedComponent(this RetarderType retarder) { return retarder == RetarderType.TransmissionInputRetarder || retarder == RetarderType.TransmissionOutputRetarder; diff --git a/VectoCommon/VectoCommon/Models/VehicleCategory.cs b/VectoCommon/VectoCommon/Models/VehicleCategory.cs index 0b8bf3e377..dc08130576 100644 --- a/VectoCommon/VectoCommon/Models/VehicleCategory.cs +++ b/VectoCommon/VectoCommon/Models/VehicleCategory.cs @@ -29,6 +29,8 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System; + namespace TUGraz.VectoCommon.Models { public enum VehicleCategory @@ -77,5 +79,22 @@ namespace TUGraz.VectoCommon.Models return category.ToString(); } } + + public static string ToXMLFormat(this VehicleCategory vehicleCategory) + { + switch (vehicleCategory) { + case VehicleCategory.Coach: + case VehicleCategory.Tractor: + return vehicleCategory.ToString(); + case VehicleCategory.CityBus: + return "City Bus"; + case VehicleCategory.InterurbanBus: + return "Interurban Bus"; + case VehicleCategory.RigidTruck: + return "Rigid Truck"; + default: + throw new ArgumentOutOfRangeException("vehicleCategory", vehicleCategory, null); + } + } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs similarity index 99% rename from VectoCore/VectoCore/Resources/XMLNames.Designer.cs rename to VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs index 3a3f28389d..1392f9fee1 100644 --- a/VectoCore/VectoCore/Resources/XMLNames.Designer.cs +++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs @@ -8,7 +8,7 @@ // </auto-generated> //------------------------------------------------------------------------------ -namespace TUGraz.VectoCore.Resources { +namespace TUGraz.VectoCommon.Resources { using System; @@ -39,7 +39,7 @@ namespace TUGraz.VectoCore.Resources { public static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TUGraz.VectoCore.Resources.XMLNames", typeof(XMLNames).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TUGraz.VectoCommon.Resources.XMLNames", typeof(XMLNames).Assembly); resourceMan = temp; } return resourceMan; @@ -222,6 +222,15 @@ namespace TUGraz.VectoCore.Resources { } } + /// <summary> + /// Looks up a localized string similar to LineType. + /// </summary> + public static string Axlegear_LineType { + get { + return ResourceManager.GetString("Axlegear_LineType", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to Ratio. /// </summary> diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx new file mode 100644 index 0000000000..93abb53b29 --- /dev/null +++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx @@ -0,0 +1,774 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <data name="VectoInputEngineering" xml:space="preserve"> + <value>VectoInputEngineering</value> + </data> + <data name="Component_Vehicle" xml:space="preserve"> + <value>Vehicle</value> + </data> + <data name="Vehicle_VehicleCategory" xml:space="preserve"> + <value>VehicleCategory</value> + </data> + <data name="Vehicle_AxleConfiguration" xml:space="preserve"> + <value>AxleConfiguration</value> + </data> + <data name="Vehicle_CurbWeightChassis" xml:space="preserve"> + <value>CurbWeightChassis</value> + </data> + <data name="Vehicle_GrossVehicleMass" xml:space="preserve"> + <value>GrossVehicleMass</value> + </data> + <data name="Vehicle_AirDragArea" xml:space="preserve"> + <value>CdxA</value> + </data> + <data name="Vehicle_SteeredAxles" xml:space="preserve"> + <value>SteeredAxles</value> + </data> + <data name="Vehicle_RetarderType" xml:space="preserve"> + <value>RetarderType</value> + </data> + <data name="Vehicle_AngledriveType" xml:space="preserve"> + <value>AngledriveType</value> + </data> + <data name="Vehicle_PTOType" xml:space="preserve"> + <value>PTOType</value> + </data> + <data name="Vehicle_Components" xml:space="preserve"> + <value>Components</value> + </data> + <data name="Vehicle_RetarderRatio" xml:space="preserve"> + <value>RetarderRatio</value> + </data> + <data name="Vehicle_CurbWeightExtra" xml:space="preserve"> + <value>CurbWeightExtra</value> + </data> + <data name="Vehicle_Loading" xml:space="preserve"> + <value>Loading</value> + </data> + <data name="Vehicle_CrossWindCorrectionMode" xml:space="preserve"> + <value>CrossWindCorrectionMode</value> + </data> + <data name="Vehicle_AdvancedDriverAssist" xml:space="preserve"> + <value>AdvancedDriverAssist</value> + </data> + <data name="Vehicle_AdvancedDriverAssist_EngineStartStop" xml:space="preserve"> + <value>EngineStartStop</value> + </data> + <data name="Vehicle_AdvancedDriverAssist_EngineStartStop_Enabled" xml:space="preserve"> + <value>Enabled</value> + </data> + <data name="Component_Engine" xml:space="preserve"> + <value>Engine</value> + </data> + <data name="ComponentDataWrapper" xml:space="preserve"> + <value>Data</value> + </data> + <data name="Engine_Displacement" xml:space="preserve"> + <value>Displacement</value> + </data> + <data name="Engine_IdlingSpeed" xml:space="preserve"> + <value>IdlingSpeed</value> + </data> + <data name="Engine_WHTCUrban" xml:space="preserve"> + <value>WHTCUrban</value> + </data> + <data name="Engine_WHTCRural" xml:space="preserve"> + <value>WHTCRural</value> + </data> + <data name="Engine_WHTCMotorway" xml:space="preserve"> + <value>WHTCMotorway</value> + </data> + <data name="Engine_ColdHotBalancingFactor" xml:space="preserve"> + <value>BFColdHot</value> + </data> + <data name="Engine_FuelConsumptionMap" xml:space="preserve"> + <value>FuelConsumptionMap</value> + </data> + <data name="Engine_FullLoadAndDragCurve" xml:space="preserve"> + <value>FullLoadAndDragCurve</value> + </data> + <data name="Component_Gearbox" xml:space="preserve"> + <value>Gearbox</value> + </data> + <data name="Gearbox_TransmissionType" xml:space="preserve"> + <value>TransmissionType</value> + </data> + <data name="Gearbox_Gear_Ratio" xml:space="preserve"> + <value>Ratio</value> + </data> + <data name="Gearbox_Gear_TorqueLossMap" xml:space="preserve"> + <value>TorqueLossMap</value> + </data> + <data name="AngleDrive_TorqueLossMap" xml:space="preserve"> + <value>TorqueLossMap</value> + </data> + <data name="Axlegear_TorqueLossMap" xml:space="preserve"> + <value>TorqueLossMap</value> + </data> + <data name="Axlegear_Ratio" xml:space="preserve"> + <value>Ratio</value> + </data> + <data name="AngleDrive_Ratio" xml:space="preserve"> + <value>Ratio</value> + </data> + <data name="Component_Angledrive" xml:space="preserve"> + <value>Angledrive</value> + </data> + <data name="Component_Retarder" xml:space="preserve"> + <value>Retarder</value> + </data> + <data name="Component_Axlegear" xml:space="preserve"> + <value>Axlegear</value> + </data> + <data name="Retarder_RetarderLossMap" xml:space="preserve"> + <value>RetarderLossMap</value> + </data> + <data name="Component_AxleWheels" xml:space="preserve"> + <value>AxleWheels</value> + </data> + <data name="AxleWheels_Axles_Axle" xml:space="preserve"> + <value>Axle</value> + </data> + <data name="AxleWheels_Axles" xml:space="preserve"> + <value>Axles</value> + </data> + <data name="AxleWheels_Axles_Axle_Dimension" xml:space="preserve"> + <value>Dimension</value> + </data> + <data name="AxleWheels_Axles_Axle_RRCISO" xml:space="preserve"> + <value>RRCISO</value> + </data> + <data name="AxleWheels_Axles_Axle_FzISO" xml:space="preserve"> + <value>FzISO</value> + </data> + <data name="AxleWheels_Axles_Axle_WeightShare" xml:space="preserve"> + <value>WeightShare</value> + </data> + <data name="AxleWheels_Axles_Axle_Inertia" xml:space="preserve"> + <value>Inertia</value> + </data> + <data name="AxleWheels_Axles_Axle_DynamicTyreRadius" xml:space="preserve"> + <value>DynamicTyreRadius</value> + </data> + <data name="VectoJob_EngineOnlyMode" xml:space="preserve"> + <value>EngineOnlyMode</value> + </data> + <data name="VectoJob_MissionCycles" xml:space="preserve"> + <value>MissionCycles</value> + </data> + <data name="Missions_Cycle" xml:space="preserve"> + <value>Cycle</value> + </data> + <data name="AngleDrive_Efficiency" xml:space="preserve"> + <value>Efficiency</value> + </data> + <data name="Axlegear_Efficiency" xml:space="preserve"> + <value>Efficiency</value> + </data> + <data name="Gearbox_Gear_Efficiency" xml:space="preserve"> + <value>Efficiency</value> + </data> + <data name="Gearbox_Gears_Gear" xml:space="preserve"> + <value>Gear</value> + </data> + <data name="Gearbox_Gears" xml:space="preserve"> + <value>Gears</value> + </data> + <data name="Gearbox_Gears_MaxTorque" xml:space="preserve"> + <value>MaxTorque</value> + </data> + <data name="Gearbox_Inertia" xml:space="preserve"> + <value>Inertia</value> + </data> + <data name="Engine_Inertia" xml:space="preserve"> + <value>Inertia</value> + </data> + <data name="Engine_WHTCEngineering" xml:space="preserve"> + <value>WHTCEngineering</value> + </data> + <data name="ExternalResource" xml:space="preserve"> + <value>Resource</value> + </data> + <data name="Component_TorqueConverter" xml:space="preserve"> + <value>TorqueConverter</value> + </data> + <data name="TorqueConverter_ReferenceRPM" xml:space="preserve"> + <value>ReferenceRPM</value> + </data> + <data name="TorqueConverter_Characteristics" xml:space="preserve"> + <value>Characteristics</value> + </data> + <data name="TorqueConverter_Inertia" xml:space="preserve"> + <value>Inertia</value> + </data> + <data name="Gearbox_TractionInterruption" xml:space="preserve"> + <value>TractionInterruption</value> + </data> + <data name="Gearbox_Gears_Gear_ShiftPolygon" xml:space="preserve"> + <value>ShiftPolygon</value> + </data> + <data name="TorqueConverter_ShiftPolygon" xml:space="preserve"> + <value>ShiftPolygon</value> + </data> + <data name="Component_DriverModel" xml:space="preserve"> + <value>DriverModel</value> + </data> + <data name="DriverModel_LookAheadCoasting" xml:space="preserve"> + <value>LookAheadCoasting</value> + </data> + <data name="DriverModel_LookAheadCoasting_Enabled" xml:space="preserve"> + <value>Enabled</value> + </data> + <data name="DriverModel_LookAheadCoasting_MinSpeed" xml:space="preserve"> + <value>MinSpeed</value> + </data> + <data name="DriverModel_LookAheadCoasting_PreviewDistanceFactor" xml:space="preserve"> + <value>PreviewDistanceFactor</value> + </data> + <data name="DriverModel_LookAheadCoasting_DecisionFactorOffset" xml:space="preserve"> + <value>DecisionFactorOffset</value> + </data> + <data name="DriverModel_LookAheadCoasting_DecisionFactorScaling" xml:space="preserve"> + <value>DecisionFactorScaling</value> + </data> + <data name="DriverModel_LookAheadCoasting_SpeedDependentDecisionFactor" xml:space="preserve"> + <value>SpeedDependentDecisionFactor</value> + </data> + <data name="DriverModel_LookAheadCoasting_VelocityDropDecisionFactor" xml:space="preserve"> + <value>VelocityDropDecisionFactor</value> + </data> + <data name="DriverModel_Overspeed" xml:space="preserve"> + <value>Overspeed</value> + </data> + <data name="DriverModel_Overspeed_Mode" xml:space="preserve"> + <value>Mode</value> + </data> + <data name="DriverModel_Overspeed_MinSpeed" xml:space="preserve"> + <value>MinSpeed</value> + </data> + <data name="DriverModel_Overspeed_AllowedOverspeed" xml:space="preserve"> + <value>AllowedOverspeed</value> + </data> + <data name="DriverModel_Overspeed_AllowedUnderspeed" xml:space="preserve"> + <value>AllowedUnderspeed</value> + </data> + <data name="DriverModel_DriverAccelerationCurve" xml:space="preserve"> + <value>DriverAccelerationCurve</value> + </data> + <data name="DriverModel_ShiftStrategyParameters" xml:space="preserve"> + <value>ShiftStrategyParameters</value> + </data> + <data name="DriverModel_ShiftStrategyParameters_UpshiftMinAcceleration" xml:space="preserve"> + <value>UpshiftMinAcceleration</value> + </data> + <data name="DriverModel_ShiftStrategyParameters_DownshiftAfterUpshiftDelay" xml:space="preserve"> + <value>DownshiftAfterUpshiftDelay</value> + </data> + <data name="DriverModel_ShiftStrategyParameters_UpshiftAfterDownshiftDelay" xml:space="preserve"> + <value>UpshiftAfterDownshiftDelay</value> + </data> + <data name="DriverModel_ShiftStrategyParameters_TorqueReserve" xml:space="preserve"> + <value>TorqueReserve</value> + </data> + <data name="DriverModel_ShiftStrategyParameters_TimeBetweenGearshift" xml:space="preserve"> + <value>TimeBetweenGearshift</value> + </data> + <data name="DriverModel_ShiftStrategyParameters_StartSpeed" xml:space="preserve"> + <value>StartSpeed</value> + </data> + <data name="DriverModel_ShiftStrategyParameters_StartAcceleration" xml:space="preserve"> + <value>StartAcceleration</value> + </data> + <data name="DriverModel_ShiftStrategyParameters_StartTorqueReserve" xml:space="preserve"> + <value>StartTorqueReserve</value> + </data> + <data name="VectoInputDeclaration" xml:space="preserve"> + <value>VectoInputDeclaration</value> + </data> + <data name="Auxiliaries_Auxiliary_ConstantAuxLoad" xml:space="preserve"> + <value>ConstantAuxLoad</value> + </data> + <data name="Auxiliaries_Auxiliary_TransmissionRatioToEngine" xml:space="preserve"> + <value>TransmissionRatioToEngine</value> + </data> + <data name="Auxiliaries_Auxiliary_EfficiencyToEngine" xml:space="preserve"> + <value>EfficiencyToEngine</value> + </data> + <data name="Auxiliaries_Auxiliary_EfficiencyAuxSupply" xml:space="preserve"> + <value>EfficiencyAuxSupply</value> + </data> + <data name="Auxiliaries_Auxiliary_AuxMap" xml:space="preserve"> + <value>AuxMap</value> + </data> + <data name="Auxiliaries_Auxiliary" xml:space="preserve"> + <value>Auxiliary</value> + </data> + <data name="Component_Auxiliaries" xml:space="preserve"> + <value>Auxiliaries</value> + </data> + <data name="Auxiliaries_Auxiliary_Technology" xml:space="preserve"> + <value>Technology</value> + </data> + <data name="VectoComponentEngineering" xml:space="preserve"> + <value>VectoComponentEngineering</value> + </data> + <data name="AxleWheels_Axles_Axle_AxleNumber_Attr" xml:space="preserve"> + <value>axleNumber</value> + </data> + <data name="AxleWheels_Axles_Axle_TwinTyres_Attr" xml:space="preserve"> + <value>TwinTyres</value> + </data> + <data name="AxleWheels_Axles_Axle_AxleType_Attr" xml:space="preserve"> + <value>AxleType</value> + </data> + <data name="Gearbox_Gear_GearNumber_Attr" xml:space="preserve"> + <value>number</value> + </data> + <data name="ExtResource_Type_Attr" xml:space="preserve"> + <value>type</value> + </data> + <data name="ExtResource_File_Attr" xml:space="preserve"> + <value>file</value> + </data> + <data name="ExtResource_Type_Value_CSV" xml:space="preserve"> + <value>csv</value> + </data> + <data name="ExtResource_Type_Value_XML" xml:space="preserve"> + <value>xml</value> + </data> + <data name="ExtResource_Component_Attr" xml:space="preserve"> + <value>component</value> + </data> + <data name="Auxiliaries_Auxiliary_ID_Attr" xml:space="preserve"> + <value>id</value> + </data> + <data name="Component_ID_Attr" xml:space="preserve"> + <value>id</value> + </data> + <data name="Vehicle_CrosswindCorrectionMap_VehicleSpeed_Attr" xml:space="preserve"> + <value>vehicleSpeed</value> + </data> + <data name="Vehicle_AccelerationCurve_MaxAcceleration_Attr" xml:space="preserve"> + <value>maxAcceleration</value> + </data> + <data name="Vehicle_AccelerationCurve_MaxDeceleration_Attr" xml:space="preserve"> + <value>maxDeceleration</value> + </data> + <data name="Engine_FuelConsumptionMap_EngineSpeed_Attr" xml:space="preserve"> + <value>engineSpeed</value> + </data> + <data name="Engine_EngineFullLoadCurve_EngineSpeed_Attr" xml:space="preserve"> + <value>engineSpeed</value> + </data> + <data name="Engine_FuelConsumptionMap_Torque_Attr" xml:space="preserve"> + <value>torque</value> + </data> + <data name="Engine_FuelConsumptionMap_FuelConsumption_Attr" xml:space="preserve"> + <value>fuelConsumption</value> + </data> + <data name="Engine_FullLoadCurve_MaxTorque_Attr" xml:space="preserve"> + <value>maxTorque</value> + </data> + <data name="Engine_FullLoadCurve_DragTorque_Attr" xml:space="preserve"> + <value>dragTorque</value> + </data> + <data name="Gear_ShiftPolygon_EngineTorque_Attr" xml:space="preserve"> + <value>engineTorque</value> + </data> + <data name="Gear_ShiftPolygonMapping_DownshiftSpeed_Attr" xml:space="preserve"> + <value>downshiftSpeed</value> + </data> + <data name="Gear_ShiftPolygonMapping_UpshiftSpeed_Attr" xml:space="preserve"> + <value>upshiftSpeed</value> + </data> + <data name="Aux_AuxMap_AuxiliarySpeed_Attr" xml:space="preserve"> + <value>auxiliarySpeed</value> + </data> + <data name="Aux_AuxMap_MechanicalPower_Attr" xml:space="preserve"> + <value>mechanicalPower</value> + </data> + <data name="Auxr_AuxMapMapping_SupplyPower_Attr" xml:space="preserve"> + <value>supplyPower</value> + </data> + <data name="Retarder_RetarderLossmap_RetarderSpeed_Attr" xml:space="preserve"> + <value>retarderSpeed</value> + </data> + <data name="Retarder_RetarderLossmap_TorqueLoss_Attr" xml:space="preserve"> + <value>torqueLoss</value> + </data> + <data name="TransmissionLossmap_TorqueLoss_Attr" xml:space="preserve"> + <value>torqueLoss</value> + </data> + <data name="TransmissionLossmap_InputSpeed_Attr" xml:space="preserve"> + <value>inputSpeed</value> + </data> + <data name="TransmissionLossmap_InputTorque_Attr" xml:space="preserve"> + <value>inputTorque</value> + </data> + <data name="TorqueConverterData_SpeedRatio_Attr" xml:space="preserve"> + <value>speedRatio</value> + </data> + <data name="TorqueConverterData_TorqueRatio_Attr" xml:space="preserve"> + <value>torqueRatio</value> + </data> + <data name="TorqueConverterDataMapping_InputTorqueRef_Attr" xml:space="preserve"> + <value>inputTorqueRef</value> + </data> + <data name="Driver_CoastingDFTargetSpeedLookupMapping_TargetVelocity_Attr" xml:space="preserve"> + <value>targetVelocity</value> + </data> + <data name="Driver_CoastingDFVelocityDropLookupMapping_VelocityDrop_Attr" xml:space="preserve"> + <value>velocityDrop</value> + </data> + <data name="Driver_CoastingDFTargetSpeedLookupMapping_DecisionFactor_Attr" xml:space="preserve"> + <value>decisionFactorVel</value> + </data> + <data name="Driver_CoastingDFVelocityDropLookupMapping_DecisionFactorDrop_Attr" xml:space="preserve"> + <value>decisionFactorDrop</value> + </data> + <data name="Component_Manufacturer" xml:space="preserve"> + <value>Manufacturer</value> + </data> + <data name="Component_Creator" xml:space="preserve"> + <value>Creator</value> + </data> + <data name="Component_Date" xml:space="preserve"> + <value>Date</value> + </data> + <data name="Component_Model" xml:space="preserve"> + <value>Model</value> + </data> + <data name="Component_CertificationNumber_Attr" xml:space="preserve"> + <value>certificationNumber</value> + </data> + <data name="Angledrive_LossMap_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="Axlegear_TorqueLossMap_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="Engine_FuelConsumptionMap_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="Engine_FullLoadCurve_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="Gearbox_Gear_TorqueLossMap_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="Retarder_RetarderLossMap_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="TorqueConverter_Characteristics_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="Vehicle_AdvancedDriverAssist_EngineStartStop_ActivationDelay" xml:space="preserve"> + <value>ActivationDelay</value> + </data> + <data name="Vehicle_AdvancedDriverAssist_EngineStartStop_MinOnTime" xml:space="preserve"> + <value>MinOnTime</value> + </data> + <data name="Vehicle_AdvancedDriverAssist_EngineStartStop_MaxSpeed" xml:space="preserve"> + <value>MaxSpeed</value> + </data> + <data name="DriverModel_DriverAccelerationCurve_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="LookAheadCoasting_SpeedDependentDecisionFactor_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="LookAheadCoasting_VelocityDropDecisionFactor_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="Gearbox_Gears_Gear_ShiftPolygon_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="TorqueConverter_ShiftPolygon_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="Vehicle_AccelerationCurve_VehicleSpeed_Attr" xml:space="preserve"> + <value>vehicleSpeed</value> + </data> + <data name="Vehicle_CrosswindCorrectionData" xml:space="preserve"> + <value>CrossWindCorrectionData</value> + </data> + <data name="Vehicle_CrosswindCorrectionData_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="Vehicle_CrosswindCorrectionMap_CdScalingFactor" xml:space="preserve"> + <value>CdScalingFactor</value> + </data> + <data name="Vehicle_CrosswindCorrectionMap_Beta" xml:space="preserve"> + <value>beta</value> + </data> + <data name="Vehicle_CrosswindCorrectionMap_DeltaCdxA" xml:space="preserve"> + <value>deltaCdxA</value> + </data> + <data name="Auxiliaries_Auxiliary_AuxMap_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="Vehicle_PTOIdleLossMap" xml:space="preserve"> + <value>PTOIdleLossMap</value> + </data> + <data name="Vehicle_PTOIdleLossMap_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="Vehicle_PTOIdleLossMap_EngineSpeed_Attr" xml:space="preserve"> + <value>engineSpeed</value> + </data> + <data name="Vehicle_PTOIdleLossMap_TorqueLoss_Attr" xml:space="preserve"> + <value>ptoTorqueLoss</value> + </data> + <data name="Vehicle_PTOCycle" xml:space="preserve"> + <value>PTOCycle</value> + </data> + <data name="Vehicle_PTOCycle_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="Vehicle_PTOCycle_Time_Attr" xml:space="preserve"> + <value>time</value> + </data> + <data name="Vehicle_PTOCycle_EngineSpeed_Attr" xml:space="preserve"> + <value>engineSpeed</value> + </data> + <data name="Vehicle_PTOCycle_Torque_Attr" xml:space="preserve"> + <value>torque</value> + </data> + <data name="Vehicle_CurbMassChassis" xml:space="preserve"> + <value>CurbMassChassis</value> + </data> + <data name="Vehicle_VIN" xml:space="preserve"> + <value>VIN</value> + </data> + <data name="AxleWheels_Axles_Axle_AxleType" xml:space="preserve"> + <value>AxleType</value> + </data> + <data name="AxleWheels_Axles_Axle_TwinTyres" xml:space="preserve"> + <value>TwinTyres</value> + </data> + <data name="AxleWheels_Axles_Axle_Steered" xml:space="preserve"> + <value>Steered</value> + </data> + <data name="AxleWheels_Axles_Axle_Tyre" xml:space="preserve"> + <value>Tyre</value> + </data> + <data name="Component_AirDrag" xml:space="preserve"> + <value>AirDrag</value> + </data> + <data name="AirDrag_DeclaredCdxA" xml:space="preserve"> + <value>DeclaredCdxA</value> + </data> + <data name="Vehicle_CurbMassExtra" xml:space="preserve"> + <value>CurbMassExtra</value> + </data> + <data name="Component_TechnicalReportId" xml:space="preserve"> + <value>TechnicalReportId</value> + </data> + <data name="AxleWheels_Axles_Axle_RRCDeclared" xml:space="preserve"> + <value>RRCDeclared</value> + </data> + <data name="Component_AppVersion" xml:space="preserve"> + <value>AppVersion</value> + </data> + <data name="Component_CertificationMethod" xml:space="preserve"> + <value>CertificationMethod</value> + </data> + <data name="Component_Gearbox_CertificationMethod" xml:space="preserve"> + <value>MainCertificationMethod</value> + </data> + <data name="Engine_RatedSpeed" xml:space="preserve"> + <value>RatedSpeed</value> + </data> + <data name="Engine_RatedPower" xml:space="preserve"> + <value>RatedPower</value> + </data> + <data name="Engine_MaxTorque" xml:space="preserve"> + <value>MaxEngineTorque</value> + </data> + <data name="Engine_FuelType" xml:space="preserve"> + <value>FuelType</value> + </data> + <data name="Engine_CorrecionFactor_NCV" xml:space="preserve"> + <value>CFNCV</value> + </data> + <data name="Engine_CorrectionFactor_RegPer" xml:space="preserve"> + <value>CFRegPer</value> + </data> + <data name="Vehicle_PTO" xml:space="preserve"> + <value>PTO</value> + </data> + <data name="Vehicle_PTO_ShaftsGearWheels" xml:space="preserve"> + <value>PTOShaftsGearWheels</value> + </data> + <data name="Vehicle_PTO_OtherElements" xml:space="preserve"> + <value>PTOOtherElements</value> + </data> + <data name="Vehicle_IdlingSpeed" xml:space="preserve"> + <value>IdlingSpeed</value> + </data> + <data name="Vehicle_LegislativeClass" xml:space="preserve"> + <value>LegislativeClass</value> + </data> + <data name="DI_Signature" xml:space="preserve"> + <value>Signature</value> + </data> + <data name="DI_Signature_Reference" xml:space="preserve"> + <value>Reference</value> + </data> + <data name="DI_Signature_Reference_URI_Attr" xml:space="preserve"> + <value>URI</value> + </data> + <data name="DI_Signature_Reference_Transforms" xml:space="preserve"> + <value>Transforms</value> + </data> + <data name="DI_Signature_Reference_Transforms_Transform" xml:space="preserve"> + <value>Transform</value> + </data> + <data name="DI_Signature_Algorithm_Attr" xml:space="preserve"> + <value>Algorithm</value> + </data> + <data name="DI_Signature_Reference_DigestMethod" xml:space="preserve"> + <value>DigestMethod</value> + </data> + <data name="DI_Signature_Reference_DigestValue" xml:space="preserve"> + <value>DigestValue</value> + </data> + <data name="Component_ManufacturerAddress" xml:space="preserve"> + <value>ManufacturerAddress</value> + </data> + <data name="Vehicle_TorqueLimits" xml:space="preserve"> + <value>TorqueLimits</value> + </data> + <data name="Vehicle_TorqueLimits_Entry_Gear_Attr" xml:space="preserve"> + <value>gear</value> + </data> + <data name="Vehicle_TorqueLimits_Entry_MaxTorque_Attr" xml:space="preserve"> + <value>maxTorque</value> + </data> + <data name="Vehicle_TorqueLimits_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="Gearbox_Gear_MaxSpeed" xml:space="preserve"> + <value>MaxSpeed</value> + </data> + <data name="Axlegear_LineType" xml:space="preserve"> + <value>LineType</value> + </data> +</root> \ No newline at end of file diff --git a/VectoCommon/VectoCommon/VectoCommon.csproj b/VectoCommon/VectoCommon/VectoCommon.csproj index 132c66726a..3eab0336e6 100644 --- a/VectoCommon/VectoCommon/VectoCommon.csproj +++ b/VectoCommon/VectoCommon/VectoCommon.csproj @@ -59,6 +59,8 @@ <Compile Include="Models\AngledriveType.cs" /> <Compile Include="Models\AuxiliaryModel.cs" /> <Compile Include="Models\AxleConfiguration.cs" /> + <Compile Include="Models\AxleLineType.cs" /> + <Compile Include="Models\CertificationMethod.cs" /> <Compile Include="Models\CrossWindCorrectionMode.cs" /> <Compile Include="Models\DriverMode.cs" /> <Compile Include="Models\ExecutionMode.cs" /> @@ -72,6 +74,11 @@ <Compile Include="OutputData\IOutputFileWriter.cs" /> <Compile Include="OutputData\IOutputPlugin.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Resources\XMLNames.Designer.cs"> + <DependentUpon>XMLNames.resx</DependentUpon> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + </Compile> <Compile Include="Utils\DoubleExtensionMethods.cs" /> <Compile Include="Utils\EnumerableExtensionMethods.cs" /> <Compile Include="Utils\EnumHelper.cs" /> @@ -84,6 +91,13 @@ <ItemGroup> <None Include="packages.config" /> </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="Resources\XMLNames.resx"> + <Generator>PublicResXFileCodeGenerator</Generator> + <LastGenOutput>XMLNames.Designer.cs</LastGenOutput> + <SubType>Designer</SubType> + </EmbeddedResource> + </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. diff --git a/VectoCommon/VectoHashing/VectoComponents.cs b/VectoCommon/VectoHashing/VectoComponents.cs index 7b0ab169ce..60340b81ab 100644 --- a/VectoCommon/VectoHashing/VectoComponents.cs +++ b/VectoCommon/VectoHashing/VectoComponents.cs @@ -1,5 +1,5 @@ using System; -using TUGraz.VectoCore.Resources; +using TUGraz.VectoCommon.Resources; namespace TUGraz.VectoHashing { @@ -14,6 +14,7 @@ namespace TUGraz.VectoHashing Airdrag, Tyre, Vehicle, + VectoOutput } public static class VectoComponentsExtensionMethods @@ -39,6 +40,8 @@ namespace TUGraz.VectoHashing return XMLNames.AxleWheels_Axles_Axle_Tyre; case VectoComponents.Vehicle: return XMLNames.Component_Vehicle; + case VectoComponents.VectoOutput: + return "VectoOutput"; default: throw new ArgumentOutOfRangeException("VectoComponents", component, null); } @@ -63,6 +66,8 @@ namespace TUGraz.VectoHashing return "AD-"; case VectoComponents.Tyre: return "TYRE-"; + case VectoComponents.VectoOutput: + return "RESULT-"; default: throw new ArgumentOutOfRangeException("VectoComponents", component, null); } diff --git a/VectoCommon/VectoHashing/VectoHash.cs b/VectoCommon/VectoHashing/VectoHash.cs index 3602a8bdbf..31f22e326f 100644 --- a/VectoCommon/VectoHashing/VectoHash.cs +++ b/VectoCommon/VectoHashing/VectoHash.cs @@ -5,8 +5,8 @@ using System.IO; using System.Linq; using System.Xml; using System.Xml.Linq; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; -using TUGraz.VectoCore.Resources; using TUGraz.VectoHashing.Impl; using TUGraz.VectoHashing.Util; @@ -59,7 +59,8 @@ namespace TUGraz.VectoHashing var retVal = new List<VectoComponents>(); foreach (var component in EnumHelper.GetValues<VectoComponents>()) { var count = - Document.SelectNodes(string.Format("//*[local-name()='{0}']", component.XMLElementName())).Count; + Document.SelectNodes(string.Format("//*[local-name()='VectoInputDeclaration']/*[local-name()='{0}']", + component.XMLElementName())).Count; for (var i = 0; i < count; i++) { retVal.Add(component); } @@ -67,20 +68,32 @@ namespace TUGraz.VectoHashing return retVal; } + public XElement ComputeXmlHash() + { + var nodes = Document.SelectNodes(GetComponentQueryString()); + if (nodes == null || nodes.Count == 0) { + throw new Exception("No component found"); + } + var componentId = nodes[0].Attributes[XMLNames.Component_ID_Attr].Value; + var hash = DoComputeHash(nodes[0]); + return hash.ToXDocument().Root; + } + public string ComputeHash() { var nodes = Document.SelectNodes(GetComponentQueryString()); if (nodes == null || nodes.Count == 0) { throw new Exception("No component found"); } - return DoComputeHash(nodes[0]); + var componentId = nodes[0].Attributes[XMLNames.Component_ID_Attr].Value; + return GetHashValueFromSig(DoComputeHash(nodes[0]), componentId); } + public string ComputeHash(VectoComponents component, int index = 0) { var nodes = Document.SelectNodes(GetComponentQueryString(component)); - if (nodes == null || nodes.Count == 0) { throw new Exception(string.Format("Component {0} not found", component.XMLElementName())); } @@ -88,13 +101,14 @@ namespace TUGraz.VectoHashing throw new Exception(string.Format("index exceeds number of components found! index: {0}, #components: {1}", index, nodes.Count)); } - return DoComputeHash(nodes[index]); + var componentId = nodes[index].Attributes[XMLNames.Component_ID_Attr].Value; + return GetHashValueFromSig(DoComputeHash(nodes[index]), componentId); } - private static string DoComputeHash(XmlNode dataNode) + private static XmlDocument DoComputeHash(XmlNode dataNode) { var parent = dataNode.ParentNode; - var componentId = dataNode.Attributes[XMLNames.Component_ID_Attr].Value; + if (parent == null) { throw new Exception("Invalid structure of input XML!"); } @@ -104,21 +118,31 @@ namespace TUGraz.VectoHashing var newNode = newDoc.ImportNode(parent, true); node.AppendChild(newNode); - var hash = XMLHashProvider.ComputeHash(newDoc, componentId); - return GetHashValueFromSig(hash, componentId); + var componentId = dataNode.Attributes[XMLNames.Component_ID_Attr].Value; + return XMLHashProvider.ComputeHash(newDoc, componentId); } public XDocument AddHash() { - var components = GetContainigComponents(); - if (components.Contains(VectoComponents.Vehicle)) { - throw new Exception("adding hash for Vehicle is not supported"); + if (Document.DocumentElement == null) { + throw new Exception("invalid input document"); } - if (components.Count > 1) { - throw new Exception("input must not contain multiple components!"); - } - if (components.Count == 0) { - throw new Exception("input does not contain a known component!"); + IList<VectoComponents> components; + if (Document.DocumentElement.LocalName.Equals(XMLNames.VectoInputDeclaration)) { + components = GetContainigComponents(); + if (components.Contains(VectoComponents.Vehicle)) { + throw new Exception("adding hash for Vehicle is not supported"); + } + if (components.Count > 1) { + throw new Exception("input must not contain multiple components!"); + } + if (components.Count == 0) { + throw new Exception("input does not contain a known component!"); + } + } else if (Document.DocumentElement.LocalName.Equals("VectoOutput")) { + components = new List<VectoComponents>() { VectoComponents.VectoOutput }; + } else { + throw new Exception("unknown document structure! neither input data nor output data format"); } var query = string.Format("//*[local-name()='{0}']/*[local-name()='Data']", components[0].XMLElementName()); var node = Document.SelectSingleNode(query); diff --git a/VectoCommon/VectoHashing/VectoHashing.csproj b/VectoCommon/VectoHashing/VectoHashing.csproj index 447ea68acb..965dbb5057 100644 --- a/VectoCommon/VectoHashing/VectoHashing.csproj +++ b/VectoCommon/VectoHashing/VectoHashing.csproj @@ -57,10 +57,6 @@ <EmbeddedResource Include="Resources\XSLT\SortInputData.xslt" /> </ItemGroup> <ItemGroup> - <ProjectReference Include="..\..\VectoCore\VectoCore\VectoCore.csproj"> - <Project>{CD36938A-ADD9-4C65-96DA-B397CDEEA90A}</Project> - <Name>VectoCore</Name> - </ProjectReference> <ProjectReference Include="..\VectoCommon\VectoCommon.csproj"> <Project>{79A066AD-69A9-4223-90F6-6ED5D2D084F4}</Project> <Name>VectoCommon</Name> diff --git a/VectoConsole/Program.cs b/VectoConsole/Program.cs index 460135bfc4..e415ffa02e 100644 --- a/VectoConsole/Program.cs +++ b/VectoConsole/Program.cs @@ -51,7 +51,6 @@ using TUGraz.VectoCore.InputData.FileIO.XML.Engineering; using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; -using TUGraz.VectoCore.Resources; using LogManager = NLog.LogManager; namespace VectoConsole diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs index 2df6ff7a50..1518f394d1 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs @@ -31,6 +31,7 @@ using System; using System.IO; +using System.Xml.Linq; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.Utils; @@ -178,5 +179,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON { get { return PTOTransmission; } } + + public XElement XMLHash { get { return null; } } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs index 3564f87230..eced7e2b03 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs @@ -246,19 +246,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON get { return "N/A"; } } - public string CertificationNumber + public CertificationMethod CertificationMethod { - get { return "N/A"; } + get { return CertificationMethod.NotCertified; } } - public string DigestValue + public string CertificationNumber { get { return "N/A"; } } - public IntegrityStatus IntegrityStatus + public string DigestValue { - get { return IntegrityStatus.Unknown; } + get { return "N/A"; } } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs index 3891417b5c..c3bc053dba 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs @@ -172,6 +172,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } + public AxleLineType LineType + { + get { return AxleLineType.SingleReductionAxle; } + } + #endregion #region IGearboxInputData @@ -489,6 +494,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON get { return "N/A"; } } + public CertificationMethod CertificationMethod { get { return CertificationMethod.NotCertified; } } + public string CertificationNumber { get { return "N/A"; } @@ -498,10 +505,5 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON { get { return ""; } } - - public IntegrityStatus IntegrityStatus - { - get { return IntegrityStatus.Unknown; } - } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs index b56eb792ed..5778ab0487 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs @@ -34,6 +34,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Xml.Linq; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; @@ -328,6 +329,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON get { return PTOTransmission; } } + public XElement XMLHash { get { return null; } } + IAuxiliariesDeclarationInputData IDeclarationInputDataProvider.AuxiliaryInputData() { return this; diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs index 0ff7981068..0cfe43ce72 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs @@ -49,6 +49,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region IVehicleInputData + public string VIN + { + get { return "N.A."; } + } + + public string LegislativeClass + { + get { return "N3"; } + } + public VehicleCategory VehicleCategory { get { @@ -345,6 +355,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON get { return "N.A."; } } + public CertificationMethod CertificationMethod { get {return CertificationMethod.NotCertified;} } + public string CertificationNumber { get { return "N.A."; } @@ -354,10 +366,5 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON { get { return ""; } } - - public IntegrityStatus IntegrityStatus - { - get { return IntegrityStatus.Unknown; } - } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/AbstractDeclarationXMLComponentDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/AbstractDeclarationXMLComponentDataProvider.cs index 20c5c9dfec..95d726f8ad 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/AbstractDeclarationXMLComponentDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/AbstractDeclarationXMLComponentDataProvider.cs @@ -5,9 +5,9 @@ using System.Xml.XPath; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; -using TUGraz.VectoCore.Resources; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration @@ -78,14 +78,22 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration get { return GetElementValue(XMLNames.Component_TechnicalReportId); } } + public CertificationMethod CertificationMethod + { + get { + var value = GetElementValue(XMLNames.Component_CertificationMethod); + return value.ParseEnum<CertificationMethod>(); + } + } + public string CertificationNumber { - get { return GetAttributeValue("../", "certificationNumber"); } + get { return GetAttributeValue("..", "certificationNumber"); } } public virtual string DigestValue { - get { return ""; } + get { return GetElementValue("..//*[local-name()='DigestValue']"); } } public virtual IntegrityStatus IntegrityStatus @@ -105,8 +113,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration protected string GetElementValue(string relativePath) { var path = Helper.Query(XBasePath, relativePath.Any() ? relativePath : null); - //new StringBuilder(XBasePath + - // (relativePath.Any() ? string.Format("/{0}:{1}", Constants.DeclarationNSPrefix, relativePath) : "")); var node = Navigator.SelectSingleNode(path.ToString(), Manager); if (node == null) { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAirdragDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAirdragDataProvider.cs index 4b75142ad6..628364e6f4 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAirdragDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAirdragDataProvider.cs @@ -1,7 +1,8 @@ using System; using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; -using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { @@ -17,6 +18,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration XMLNames.ComponentDataWrapper); } + public new CertificationMethod CertificationMethod + { + get { return CertificationMethod.Measured; } + } + public SquareMeter AirDragArea { get { return GetDoubleElementValue(XMLNames.AirDrag_DeclaredCdxA).SI<SquareMeter>(); } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAngledriveDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAngledriveDataProvider.cs index d08e38034d..ecdcc756b0 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAngledriveDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAngledriveDataProvider.cs @@ -2,7 +2,7 @@ using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; -using TUGraz.VectoCore.Resources; +using TUGraz.VectoCommon.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAuxiliaryDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAuxiliaryDataProvider.cs index d2a74f4469..51f26834fe 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAuxiliaryDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAuxiliaryDataProvider.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.Impl; -using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAxlegearDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAxlegearDataProvider.cs index b4eedd1136..3136d63951 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAxlegearDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAxlegearDataProvider.cs @@ -1,7 +1,10 @@ -using TUGraz.IVT.VectoXML; +using System.ComponentModel.DataAnnotations; +using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCore.Resources; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { @@ -33,5 +36,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { get { throw new VectoException("Efficiency not supported in Declaration Mode!"); } } + + public AxleLineType LineType + { + get { + var value = GetElementValue(XMLNames.Axlegear_LineType); + return value.ParseEnum<AxleLineType>(); + } + } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationDriverDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationDriverDataProvider.cs index d9ac30840c..eb6fbcc25f 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationDriverDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationDriverDataProvider.cs @@ -3,7 +3,6 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.InputData.Impl; using TUGraz.VectoCore.Models.SimulationComponent.Data; -using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationEngineDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationEngineDataProvider.cs index 5b7e33e630..c034d2cdd1 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationEngineDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationEngineDataProvider.cs @@ -1,8 +1,8 @@ using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; -using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationGearboxDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationGearboxDataProvider.cs index ad7d6865cc..5ed7d6a5dd 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationGearboxDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationGearboxDataProvider.cs @@ -4,9 +4,9 @@ using System.Xml; using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.Impl; -using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { @@ -22,6 +22,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration XMLNames.ComponentDataWrapper); } + public new CertificationMethod CertificationMethod + { + get { return GetElementValue(XMLNames.Component_Gearbox_CertificationMethod).ParseEnum<CertificationMethod>(); } + } + public GearboxType Type { get { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationInputDataProvider.cs index 072528514e..f2b10b5cee 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationInputDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationInputDataProvider.cs @@ -1,10 +1,12 @@ using System; using System.Xml; +using System.Xml.Linq; using System.Xml.Schema; using System.Xml.XPath; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.Utils; +using TUGraz.VectoHashing; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { @@ -31,7 +33,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration inputData = XmlReader.Create(inputData, settings); } - Document = new XPathDocument(inputData); + //Document = new XPathDocument(inputData); + + var xmldoc = new XmlDocument(); + xmldoc.Load(inputData); + var h = VectoHash.Load(xmldoc); + XMLHash = h.ComputeXmlHash(); + + Document = new XPathDocument(new XmlNodeReader(xmldoc)); //CheckInputDocument(); @@ -46,7 +55,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration RetarderInputData = new XMLDeclarationRetarderDataProvider(this); XMLDriverData = new XMLDeclarationDriverDataProvider(this); XMLAuxiliaryData = new XMLDeclarationAuxiliaryDataProvider(this); - PTOTransmissionInputData = _vehicleInputData.GetPTOData(); + PTOTransmissionInputData = _vehicleInputData.GetPTOData(); } private static void ValidationCallBack(object sender, ValidationEventArgs args) @@ -102,5 +111,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration } public IPTOTransmissionInputData PTOTransmissionInputData { get; private set; } + + public XElement XMLHash { get; private set; } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationJobInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationJobInputDataProvider.cs index 91d79472fd..eda7fb2898 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationJobInputDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationJobInputDataProvider.cs @@ -1,5 +1,5 @@ using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCore.Resources; +using TUGraz.VectoCommon.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationRetarderDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationRetarderDataProvider.cs index 556f235174..c2c1190d9a 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationRetarderDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationRetarderDataProvider.cs @@ -1,7 +1,7 @@ using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; -using TUGraz.VectoCore.Resources; +using TUGraz.VectoCommon.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationTorqueConverterDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationTorqueConverterDataProvider.cs index 9d63b2f2ce..b4b72b8980 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationTorqueConverterDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationTorqueConverterDataProvider.cs @@ -1,6 +1,6 @@ using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCore.Resources; +using TUGraz.VectoCommon.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs index 66e6f60b1a..f2f1a0dcfb 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs @@ -5,10 +5,10 @@ using System.Xml; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; 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 { @@ -26,6 +26,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration get { return GetElementValue(XMLNames.Vehicle_VIN); } } + public string VIN + { + get { return GetElementValue(XMLNames.Vehicle_VIN); } + } + + public string LegislativeClass + { + get { return GetElementValue(XMLNames.Vehicle_LegislativeClass); } + } + public VehicleCategory VehicleCategory { get { return GetElementValue(XMLNames.Vehicle_VehicleCategory).ParseEnum<VehicleCategory>(); } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/AbstractEngineeringXMLComponentDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/AbstractEngineeringXMLComponentDataProvider.cs index 6e7bcbf04f..6ef8935c83 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/AbstractEngineeringXMLComponentDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/AbstractEngineeringXMLComponentDataProvider.cs @@ -4,8 +4,8 @@ using System.Xml.XPath; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; -using TUGraz.VectoCore.Resources; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAirdragDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAirdragDataProvider.cs index 74ee5e26a1..e97f216e48 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAirdragDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAirdragDataProvider.cs @@ -3,8 +3,8 @@ using System.Xml.XPath; using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; -using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAngledriveDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAngledriveDataProvider.cs index 24c4a8c3b7..c13802ae76 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAngledriveDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAngledriveDataProvider.cs @@ -2,7 +2,7 @@ using System.Xml.XPath; using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; -using TUGraz.VectoCore.Resources; +using TUGraz.VectoCommon.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAuxiliaryDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAuxiliaryDataProvider.cs index 12dcbfd7cf..13f5364ebf 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAuxiliaryDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAuxiliaryDataProvider.cs @@ -6,9 +6,9 @@ using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.Impl; -using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAxlegearDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAxlegearDataProvider.cs index c753be74f5..d0ff022d73 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAxlegearDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAxlegearDataProvider.cs @@ -1,7 +1,9 @@ using System.Xml.XPath; using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCore.Resources; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering { @@ -31,5 +33,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering { get { return GetDoubleElementValue(Helper.Query(XMLNames.Axlegear_TorqueLossMap, XMLNames.Axlegear_Efficiency)); } } + + public AxleLineType LineType + { + get { return GetElementValue(XMLNames.Axlegear_LineType).ParseEnum<AxleLineType>(); } + } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringDriverDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringDriverDataProvider.cs index 202218f349..03c9fbc543 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringDriverDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringDriverDataProvider.cs @@ -6,12 +6,12 @@ using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.Impl; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.SimulationComponent.Data; -using TUGraz.VectoCore.Resources; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringEngineDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringEngineDataProvider.cs index 9c43a85bda..e3b159ae5d 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringEngineDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringEngineDataProvider.cs @@ -4,9 +4,9 @@ using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.Reader; -using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringGearboxDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringGearboxDataProvider.cs index b2aca7b704..f0554c6be3 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringGearboxDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringGearboxDataProvider.cs @@ -4,9 +4,9 @@ using System.Xml.XPath; using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.Impl; -using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringInputDataProvider.cs index 0472ce0210..adad476b88 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringInputDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringInputDataProvider.cs @@ -5,8 +5,8 @@ using System.Xml.XPath; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.Configuration; -using TUGraz.VectoCore.Resources; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringJobInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringJobInputDataProvider.cs index 863989dab0..05e1a399c7 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringJobInputDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringJobInputDataProvider.cs @@ -4,11 +4,11 @@ using System.Xml; using System.Xml.XPath; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.Impl; using TUGraz.VectoCore.Models.Declaration; -using TUGraz.VectoCore.Resources; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringRetarderDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringRetarderDataProvider.cs index 68c7fa0c9e..5bab7e6f50 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringRetarderDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringRetarderDataProvider.cs @@ -3,8 +3,8 @@ using System.Xml.XPath; using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.InputData.Reader.ComponentData; -using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringTorqueConverterDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringTorqueConverterDataProvider.cs index 02670357bf..42bb53b985 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringTorqueConverterDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringTorqueConverterDataProvider.cs @@ -1,8 +1,8 @@ using System.Xml.XPath; using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; -using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs index 53ff07727f..4cb0cddace 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs @@ -9,11 +9,11 @@ using TUGraz.IVT.VectoXML; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.Impl; using TUGraz.VectoCore.Models.Declaration; -using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering { @@ -30,6 +30,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering get { return GetAttributeValue("", XMLNames.Component_ID_Attr); } } + public string VIN + { + get { return GetElementValue(XMLNames.Vehicle_VIN); } + } + + public string LegislativeClass + { + get { return GetElementValue(XMLNames.Vehicle_LegislativeClass); } + } + public VehicleCategory VehicleCategory { get { return GetElementValue(XMLNames.Vehicle_VehicleCategory).ParseEnum<VehicleCategory>(); } diff --git a/VectoCore/VectoCore/InputData/Impl/InputData.cs b/VectoCore/VectoCore/InputData/Impl/InputData.cs index fdb93d5ba9..7817248f8b 100644 --- a/VectoCore/VectoCore/InputData/Impl/InputData.cs +++ b/VectoCore/VectoCore/InputData/Impl/InputData.cs @@ -104,18 +104,16 @@ namespace TUGraz.VectoCore.InputData.Impl public string Model { get; internal set; } - public string Creator { get; internal set; } - public string Date { get; internal set; } public string TechnicalReportId { get; internal set; } + public CertificationMethod CertificationMethod { get; internal set; } + public string CertificationNumber { get; internal set; } public string DigestValue { get; internal set; } - public IntegrityStatus IntegrityStatus { get; internal set; } - public string Wheels { get; internal set; } public bool TwinTyres { get; internal set; } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs index 19e10be48d..c763eeeacb 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs @@ -52,12 +52,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter { var retVal = new VehicleData { SavedInDeclarationMode = data.SavedInDeclarationMode, + VIN = data.VIN, Manufacturer = data.Manufacturer, ModelName = data.Model, Date = data.Date, - CertificationNumber = data.TechnicalReportId, + //CertificationNumber = data.CertificationNumber, DigestValueInput = data.DigestValue, - IntegrityStatus = data.IntegrityStatus, + LegislativeClass = data.LegislativeClass, VehicleCategory = data.VehicleCategory, AxleConfiguration = data.AxleConfiguration, CurbWeight = data.CurbMassChassis, @@ -67,6 +68,20 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter return retVal; } + internal AirdragData SetCommonAirdragData(IAirdragDeclarationInputData data) + { + var retVal = new AirdragData() { + SavedInDeclarationMode = data.SavedInDeclarationMode, + Manufacturer = data.Manufacturer, + ModelName = data.Model, + Date = data.Date, + CertificationMethod = data.CertificationMethod, + CertificationNumber = data.CertificationNumber, + DigestValueInput = data.DigestValue, + }; + return retVal; + } + internal RetarderData SetCommonRetarderData(IRetarderInputData data) { try { @@ -96,9 +111,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter retarder.Manufacturer = data.Manufacturer; retarder.ModelName = data.Model; retarder.Date = data.Date; - retarder.CertificationNumber = data.TechnicalReportId; + retarder.CertificationMethod = data.CertificationMethod; + retarder.CertificationNumber = data.CertificationNumber; retarder.DigestValueInput = data.DigestValue; - retarder.IntegrityStatus = data.IntegrityStatus; return retarder; } catch (Exception e) { @@ -113,9 +128,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter Manufacturer = data.Manufacturer, ModelName = data.Model, Date = data.Date, - CertificationNumber = data.TechnicalReportId, + CertificationNumber = data.CertificationNumber, DigestValueInput = data.DigestValue, - IntegrityStatus = data.IntegrityStatus, Displacement = data.Displacement, IdleSpeed = data.IdleSpeed, ConsumptionMap = FuelConsumptionMapReader.Create(data.FuelConsumptionMap), @@ -134,9 +148,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter Manufacturer = data.Manufacturer, ModelName = data.Model, Date = data.Date, - CertificationNumber = data.TechnicalReportId, + CertificationMethod = data.CertificationMethod, + CertificationNumber = data.CertificationNumber, DigestValueInput = data.DigestValue, - IntegrityStatus = data.IntegrityStatus, Type = data.Type }; } @@ -160,10 +174,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter SavedInDeclarationMode = data.SavedInDeclarationMode, Manufacturer = data.Manufacturer, ModelName = data.Model, + LineType = data.LineType, Date = data.Date, - CertificationNumber = data.TechnicalReportId, + CertificationMethod = data.CertificationMethod, + CertificationNumber = data.CertificationNumber, DigestValueInput = data.DigestValue, - IntegrityStatus = data.IntegrityStatus, AxleGear = new GearData { LossMap = axleLossMap, Ratio = data.Ratio } }; } @@ -189,9 +204,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter Manufacturer = data.Manufacturer, ModelName = data.Model, Date = data.Date, - CertificationNumber = data.TechnicalReportId, + CertificationMethod = data.CertificationMethod, + CertificationNumber = data.CertificationNumber, DigestValueInput = data.DigestValue, - IntegrityStatus = data.IntegrityStatus, Type = type, Angledrive = new TransmissionData { Ratio = data.Ratio } }; diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs index 7612d7fc15..3556dae703 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs @@ -80,8 +80,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter return retVal; } - internal VehicleData CreateVehicleData(IVehicleDeclarationInputData data, IAirdragDeclarationInputData airdragData, - Mission mission, Kilogram loading, Meter vehicleHeight, Kilogram municipalBodyWeight) + internal VehicleData CreateVehicleData(IVehicleDeclarationInputData data, Mission mission, Kilogram loading, + Kilogram municipalBodyWeight) { if (!data.SavedInDeclarationMode) { WarnDeclarationMode("VehicleData"); @@ -93,7 +93,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter retVal.BodyAndTrailerWeight = (mission.MissionType == MissionType.MunicipalUtility ? municipalBodyWeight : mission.BodyCurbWeight) + mission.Trailer.Sum(t => t.TrailerCurbWeight).DefaultIfNull(0); - retVal.CurbWeight += retVal.BodyAndTrailerWeight; + //retVal.CurbWeight += retVal.BodyAndTrailerWeight; retVal.Loading = loading; var drivenIndex = DrivenAxleIndex(data.Axles); @@ -101,12 +101,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter DeclarationData.Wheels.Lookup(data.Axles[drivenIndex].Wheels).DynamicTyreRadius; retVal.CargoVolume = mission.MissionType != MissionType.Construction ? mission.TotalCargoVolume : 0.SI<CubicMeter>(); - var aerodynamicDragArea = airdragData.AirDragArea + mission.Trailer.Sum(t => t.DeltaCdA).DefaultIfNull(0); - retVal.CrossWindCorrectionCurve = - new CrosswindCorrectionCdxALookup(aerodynamicDragArea, - GetDeclarationAirResistanceCurve(mission.CrossWindCorrectionParameters, aerodynamicDragArea, vehicleHeight), - CrossWindCorrectionMode.DeclarationModeCorrection); var axles = data.Axles; if (axles.Count < mission.AxleWeightDistribution.Length) { throw new VectoException("Vehicle does not contain sufficient axles. {0} axles defined, {1} axles required", @@ -414,5 +409,38 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter return null; } + + public AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragInputData, Mission mission, + Segment segment) + { + if (airdragInputData == null) { + return DefaultAirdragData(mission, segment); + } + + var retVal = SetCommonAirdragData(airdragInputData); + var aerodynamicDragArea = airdragInputData.AirDragArea + mission.Trailer.Sum(t => t.DeltaCdA).DefaultIfNull(0); + + retVal.DeclaredAirdragArea = airdragInputData.AirDragArea; + retVal.CrossWindCorrectionCurve = + new CrosswindCorrectionCdxALookup(aerodynamicDragArea, + GetDeclarationAirResistanceCurve(mission.CrossWindCorrectionParameters, aerodynamicDragArea, segment.VehicleHeight), + CrossWindCorrectionMode.DeclarationModeCorrection); + return retVal; + } + + private AirdragData DefaultAirdragData(Mission mission, Segment segment) + { + var aerodynamicDragArea = mission.MissionType == MissionType.Construction + ? segment.CdAConstruction + : segment.CdADefault + mission.Trailer.Sum(t => t.DeltaCdA).DefaultIfNull(0); + + return new AirdragData() { + CertificationMethod = CertificationMethod.StandardValues, + DeclaredAirdragArea = mission.MissionType == MissionType.Construction ? segment.CdAConstruction : segment.CdADefault, + CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(aerodynamicDragArea, + GetDeclarationAirResistanceCurve(mission.CrossWindCorrectionParameters, aerodynamicDragArea, segment.VehicleHeight), + CrossWindCorrectionMode.DeclarationModeCorrection) + }; + } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs index ca5b47bf0b..c5c5727ba9 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs @@ -48,7 +48,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter { public class EngineeringDataAdapter : AbstractSimulationDataAdapter { - internal VehicleData CreateVehicleData(IVehicleEngineeringInputData data, IAirdragEngineeringInputData airdragData) + internal VehicleData CreateVehicleData(IVehicleEngineeringInputData data) { if (data.SavedInDeclarationMode) { WarnEngineeringMode("VehicleData"); @@ -56,12 +56,30 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter var retVal = SetCommonVehicleData(data); retVal.BodyAndTrailerWeight = data.CurbMassExtra; - retVal.CurbWeight += data.CurbMassExtra; + //retVal.CurbWeight += data.CurbMassExtra; retVal.TrailerGrossVehicleWeight = 0.SI<Kilogram>(); retVal.Loading = data.Loading; retVal.DynamicTyreRadius = data.DynamicTyreRadius; - retVal.CrossWindCorrectionMode = airdragData.CrossWindCorrectionMode; var axles = data.Axles; + + + retVal.AxleData = axles.Select(axle => new Axle { + WheelsDimension = axle.Wheels, + Inertia = axle.Inertia, + TwinTyres = axle.TwinTyres, + RollResistanceCoefficient = axle.RollResistanceCoefficient, + AxleWeightShare = axle.AxleWeightShare, + TyreTestLoad = axle.TyreTestLoad, + //Wheels = axle.WheelsStr + }).ToList(); + return retVal; + } + + public AirdragData CreateAirdragData(IAirdragEngineeringInputData airdragData, IVehicleEngineeringInputData data) + { + var retVal = SetCommonAirdragData(airdragData); + retVal.CrossWindCorrectionMode = airdragData.CrossWindCorrectionMode; + switch (airdragData.CrossWindCorrectionMode) { case CrossWindCorrectionMode.NoCorrection: retVal.CrossWindCorrectionCurve = @@ -80,26 +98,16 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter break; case CrossWindCorrectionMode.DeclarationModeCorrection: var height = DeclarationData.Segments.LookupHeight(data.VehicleCategory, data.AxleConfiguration, - retVal.GrossVehicleWeight); + data.GrossVehicleMassRating); retVal.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(airdragData.AirDragArea, DeclarationDataAdapter.GetDeclarationAirResistanceCurve( - GetAirdragParameterSet(retVal.VehicleCategory, data.AxleConfiguration, axles.Count), + GetAirdragParameterSet(data.VehicleCategory, data.AxleConfiguration, data.Axles.Count), airdragData.AirDragArea, height), CrossWindCorrectionMode.DeclarationModeCorrection); break; default: throw new ArgumentOutOfRangeException("CrosswindCorrection", airdragData.CrossWindCorrectionMode.ToString()); } - - retVal.AxleData = axles.Select(axle => new Axle { - WheelsDimension = axle.Wheels, - Inertia = axle.Inertia, - TwinTyres = axle.TwinTyres, - RollResistanceCoefficient = axle.RollResistanceCoefficient, - AxleWeightShare = axle.AxleWeightShare, - TyreTestLoad = axle.TyreTestLoad, - //Wheels = axle.WheelsStr - }).ToList(); return retVal; } diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs index 2e7c1e1a78..f28051a3c6 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs @@ -71,9 +71,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl var driverdata = dao.CreateDriverData(InputDataProvider.DriverInputData); driverdata.AccelerationCurve = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile); - var tempVehicle = dao.CreateVehicleData(InputDataProvider.VehicleInputData, InputDataProvider.AirdragInputData, - segment.Missions.First(), segment.Missions.First().Loadings.First().Value, segment.VehicleHeight, - segment.MunicipalBodyWeight); + var tempVehicle = dao.CreateVehicleData(InputDataProvider.VehicleInputData, segment.Missions.First(), + segment.Missions.First().Loadings.First().Value, segment.MunicipalBodyWeight); + var airdragData = dao.CreateAirdragData(InputDataProvider.AirdragInputData, segment.Missions.First(),segment); var engineData = dao.CreateEngineData(InputDataProvider.EngineInputData, InputDataProvider.GearboxInputData, InputDataProvider.VehicleInputData.TorqueLimits); var axlegearData = dao.CreateAxleGearData(InputDataProvider.AxleGearInputData, false); @@ -83,19 +83,21 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl var retarderData = dao.CreateRetarderData(InputDataProvider.RetarderInputData); var ptoTransmissionData = dao.CreatePTOTransmissionData(InputDataProvider.PTOTransmissionInputData); + var municipalPtoTransmissionData = CreateDefaultPTOData(); if (Report != null) { var powertrainConfig = new VectoRunData() { VehicleData = - dao.CreateVehicleData(InputDataProvider.VehicleInputData, InputDataProvider.AirdragInputData, - segment.Missions.First(), segment.Missions.First().Loadings.First().Value, segment.VehicleHeight, - segment.MunicipalBodyWeight), + dao.CreateVehicleData(InputDataProvider.VehicleInputData, segment.Missions.First(), + segment.Missions.First().Loadings.First().Value, segment.MunicipalBodyWeight), + AirdragData = airdragData, EngineData = engineData, GearboxData = gearboxData, AxleGearData = axlegearData, Retarder = retarderData, Aux = dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData(), segment.Missions.First().MissionType, - segment.VehicleClass) + segment.VehicleClass), + InputDataHash = InputDataProvider.XMLHash }; Report.InitializeReport(powertrainConfig, segment); } @@ -118,8 +120,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl var simulationRunData = new VectoRunData { Loading = loading.Key, VehicleData = - dao.CreateVehicleData(InputDataProvider.VehicleInputData, InputDataProvider.AirdragInputData, mission, - loading.Value, segment.VehicleHeight, segment.MunicipalBodyWeight), + dao.CreateVehicleData(InputDataProvider.VehicleInputData, mission, loading.Value, segment.MunicipalBodyWeight), + AirdragData = dao.CreateAirdragData(InputDataProvider.AirdragInputData, mission, segment), EngineData = engineData.Copy(), GearboxData = gearboxData, AxleGearData = axlegearData, @@ -136,11 +138,12 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl Mission = mission, PTO = mission.MissionType == MissionType.MunicipalUtility ? municipalPtoTransmissionData - : ptoTransmissionData + : ptoTransmissionData, + InputDataHash = InputDataProvider.XMLHash }; simulationRunData.EngineData.FuelConsumptionCorrectionFactor = DeclarationData.WHTCCorrection.Lookup( mission.MissionType.GetNonEMSMissionType(), engineData.WHTCRural, engineData.WHTCUrban, engineData.WHTCMotorway) * - engineData.ColdHotCorrectionFactor; + engineData.ColdHotCorrectionFactor; //simulationRunData.Cycle.Name = mission.MissionType.ToString(); simulationRunData.VehicleData.VehicleClass = segment.VehicleClass; yield return simulationRunData; diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs index 737b325469..47f3607160 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs @@ -64,7 +64,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl var engineData = dao.CreateEngineData(InputDataProvider.EngineInputData, InputDataProvider.GearboxInputData, InputDataProvider.VehicleInputData.TorqueLimits); - var tempVehicle = dao.CreateVehicleData(InputDataProvider.VehicleInputData, InputDataProvider.AirdragInputData); + var tempVehicle = dao.CreateVehicleData(InputDataProvider.VehicleInputData); var axlegearData = dao.CreateAxleGearData(InputDataProvider.AxleGearInputData, useEfficiencyFallback: true); var gearboxData = dao.CreateGearboxData(InputDataProvider.GearboxInputData, engineData, axlegearData.AxleGear.Ratio, @@ -88,7 +88,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl GearboxData = gearboxData, AxleGearData = axlegearData, AngledriveData = angledriveData, - VehicleData = dao.CreateVehicleData(InputDataProvider.VehicleInputData, InputDataProvider.AirdragInputData), + VehicleData = dao.CreateVehicleData(InputDataProvider.VehicleInputData), + AirdragData = dao.CreateAirdragData(InputDataProvider.AirdragInputData, InputDataProvider.VehicleInputData), DriverData = driver, Aux = dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData()), AdvancedAux = dao.CreateAdvancedAuxData(InputDataProvider.AuxiliaryInputData()), diff --git a/VectoCore/VectoCore/Models/Declaration/MissionType.cs b/VectoCore/VectoCore/Models/Declaration/MissionType.cs index 8052e790aa..35dae7e633 100644 --- a/VectoCore/VectoCore/Models/Declaration/MissionType.cs +++ b/VectoCore/VectoCore/Models/Declaration/MissionType.cs @@ -29,6 +29,8 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System; + namespace TUGraz.VectoCore.Models.Declaration { public enum MissionType @@ -69,5 +71,35 @@ namespace TUGraz.VectoCore.Models.Declaration } return self; } + + public static string ToXMLFormat(this MissionType self) + { + switch (self) { + case MissionType.LongHaul: + case MissionType.LongHaulEMS: + return "Long Haul"; + case MissionType.RegionalDelivery: + case MissionType.RegionalDeliveryEMS: + return "Regional Delivery"; + case MissionType.UrbanDelivery: + return "Urban Delivery"; + case MissionType.MunicipalUtility: + return "Municipal Utility"; + case MissionType.Construction: + return "Construction"; + //case MissionType.HeavyUrban: + // return ""; + //case MissionType.Urban: + // return ""; + //case MissionType.Suburban: + // return ""; + //case MissionType.Interurban: + // return ""; + //case MissionType.Coach: + // return ""; + default: + throw new ArgumentOutOfRangeException("MissionType", self, null); + } + } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/Models/Declaration/Segment.cs b/VectoCore/VectoCore/Models/Declaration/Segment.cs index 24f5a92ce7..9dfa065d27 100644 --- a/VectoCore/VectoCore/Models/Declaration/Segment.cs +++ b/VectoCore/VectoCore/Models/Declaration/Segment.cs @@ -37,6 +37,8 @@ namespace TUGraz.VectoCore.Models.Declaration { public class Segment { + public VehicleClass VehicleClass { get; internal set; } + public VehicleCategory VehicleCategory { get; set; } public AxleConfiguration AxleConfiguration { get; set; } @@ -47,8 +49,6 @@ namespace TUGraz.VectoCore.Models.Declaration public Kilogram GrossVehicleMassRating { get; set; } - public VehicleClass VehicleClass { get; internal set; } - public Stream AccelerationFile { get; internal set; } public Mission[] Missions { get; internal set; } @@ -57,6 +57,8 @@ namespace TUGraz.VectoCore.Models.Declaration public MeterPerSecond DesignSpeed { get; internal set; } + public SquareMeter CdADefault { get; internal set; } + public SquareMeter CdAConstruction { get; internal set; } public Kilogram MunicipalBodyWeight { get; internal set; } diff --git a/VectoCore/VectoCore/Models/Declaration/Segments.cs b/VectoCore/VectoCore/Models/Declaration/Segments.cs index 17cf2d02f1..ca1951e2f6 100644 --- a/VectoCore/VectoCore/Models/Declaration/Segments.cs +++ b/VectoCore/VectoCore/Models/Declaration/Segments.cs @@ -92,6 +92,7 @@ namespace TUGraz.VectoCore.Models.Declaration VehicleHeight = LookupHeight(vehicleCategory, axleConfiguration, grossVehicleMassRating), DesignSpeed = row.ParseDouble("designspeed").KMPHtoMeterPerSecond(), GrossVehicleMassRating = grossVehicleMassRating, + CdADefault = row.ParseDouble("cdxa_default").SI<SquareMeter>(), CdAConstruction = string.IsNullOrEmpty(row["cdxa_construction"].ToString()) ? null : row.ParseDouble("cdxa_construction").SI<SquareMeter>(), diff --git a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs index bdb4ad19c1..cf94796b32 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs @@ -32,6 +32,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; +using System.Xml.Linq; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; @@ -49,6 +50,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Data [ValidateObject] public VehicleData VehicleData { get; internal set; } + [Required, ValidateObject] + public AirdragData AirdragData { get; internal set; } + [ValidateObject] public CombustionEngineData EngineData { get; internal set; } @@ -81,18 +85,20 @@ namespace TUGraz.VectoCore.Models.Simulation.Data public ExecutionMode ExecutionMode { get; internal set; } [Required, MinLength(1)] - public string JobName { get; set; } + public string JobName { get; internal set; } - public string ModFileSuffix { get; set; } + public string ModFileSuffix { get; internal set; } [ValidateObject] - public IDeclarationReport Report { get; set; } + public IDeclarationReport Report { get; internal set; } [Required, ValidateObject] - public LoadingType Loading { get; set; } + public LoadingType Loading { get; internal set; } [ValidateObject] - public Mission Mission { get; set; } + public Mission Mission { get; internal set; } + + public XElement InputDataHash { get; internal set; } public class AuxData { @@ -108,14 +114,6 @@ namespace TUGraz.VectoCore.Models.Simulation.Data [ValidateObject] public AuxiliaryData Data; } - public class StartStopData - { - public bool Enabled; - [Required, SIRange(0, 120 / Constants.MeterPerSecondToKMH)] public MeterPerSecond MaxSpeed; - [Required, SIRange(0, 100)] public Second MinTime; - [Required, SIRange(0, 100)] public Second Delay; - } - public static ValidationResult ValidateRunData(VectoRunData runData, ValidationContext validationContext) { var gearboxData = runData.GearboxData; diff --git a/VectoCore/VectoCore/Models/Simulation/IVehicleContainer.cs b/VectoCore/VectoCore/Models/Simulation/IVehicleContainer.cs index f2b90a7edf..46e518f1ae 100644 --- a/VectoCore/VectoCore/Models/Simulation/IVehicleContainer.cs +++ b/VectoCore/VectoCore/Models/Simulation/IVehicleContainer.cs @@ -29,7 +29,9 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System; using System.ComponentModel.DataAnnotations; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Models.Connector.Ports; using TUGraz.VectoCore.Models.Simulation.Data; @@ -69,6 +71,7 @@ namespace TUGraz.VectoCore.Models.Simulation /// <summary> /// Finishes the simulation. /// </summary> - new void FinishSimulation(); + /// <param name="exception"></param> + void FinishSimulationRun(Exception exception = null); } } \ No newline at end of file diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index bf281f6531..551e52b2f5 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -137,7 +137,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl // --> axleGear --> (retarder) --> GearBox --> (retarder) --> Clutch --> engine <-- Aux var cycle = new MeasuredSpeedDrivingCycle(container, data.Cycle); var powertrain = cycle - .AddComponent(new Vehicle(container, data.VehicleData)) + .AddComponent(new Vehicle(container, data.VehicleData, data.AirdragData)) .AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia)) .AddComponent(new Brakes(container)) .AddComponent(new AxleGear(container, data.AxleGearData)) @@ -168,7 +168,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl // MeasuredSpeedDrivingCycle --> vehicle --> wheels --> brakes // --> axleGear --> (retarder) --> CycleGearBox --> (retarder) --> CycleClutch --> engine <-- Aux var powertrain = new MeasuredSpeedDrivingCycle(container, data.Cycle) - .AddComponent(new Vehicle(container, data.VehicleData)) + .AddComponent(new Vehicle(container, data.VehicleData, data.AirdragData)) .AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia)) .AddComponent(new Brakes(container)) .AddComponent(new AxleGear(container, data.AxleGearData)) @@ -197,7 +197,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl // --> axleGear --> (retarder) --> gearBox --> (retarder) --> clutch --> engine <-- Aux var cycle = new DistanceBasedDrivingCycle(container, data.Cycle); var powertrain = cycle.AddComponent(new Driver(container, data.DriverData, new DefaultDriverStrategy())) - .AddComponent(new Vehicle(container, data.VehicleData)) + .AddComponent(new Vehicle(container, data.VehicleData, data.AirdragData)) .AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia)) .AddComponent(new Brakes(container)) .AddComponent(new AxleGear(container, data.AxleGearData)) diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs index 45f7d7dac2..ba64c342f1 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs @@ -45,6 +45,7 @@ using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.ModFilter; +using TUGraz.VectoCore.OutputData.XML; namespace TUGraz.VectoCore.Models.Simulation.Impl { @@ -77,10 +78,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl if (declDataProvider == null) { throw new VectoException("InputDataProvider does not implement DeclarationData interface"); } + var report = declarationReport ?? new XMLDeclarationReport(writer); if (declarationReport != null) { declarationReport.JobName = declDataProvider.JobInputData().JobName; } - DataReader = new DeclarationModeVectoRunDataFactory(declDataProvider, declarationReport); + DataReader = new DeclarationModeVectoRunDataFactory(declDataProvider, report); break; case ExecutionMode.Engineering: var engDataProvider = dataProvider as IEngineeringInputDataProvider; @@ -132,11 +134,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl foreach (var data in DataReader.NextRun()) { var d = data; if (d.Report != null) { - d.Report.PrepareResult(d.Loading, d.Mission); + d.Report.PrepareResult(d.Loading, d.Mission, d); } Action<ModalDataContainer> addReportResult = writer => { if (d.Report != null) { - d.Report.AddResult(d.Loading, d.Mission, writer); + d.Report.AddResult(d.Loading, d.Mission, d, writer); } }; if (!data.Cycle.CycleType.IsDistanceBased() && ModalResults1Hz && !warning1Hz) { diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs index 2d5f0bd1dc..4468139f37 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs @@ -114,7 +114,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl if (_cancelled) { Log.Error("Run canceled!"); Container.RunStatus = Status.Canceled; - Container.FinishSimulation(); + Container.FinishSimulationRun(); return; } Container.AbsTime = AbsTime; @@ -124,38 +124,40 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl Log.Error("SIMULATION RUN ABORTED! ========================"); Log.Error(vse); Container.RunStatus = Status.Aborted; - Container.FinishSimulation(); - throw new VectoSimulationException("{6} ({7} {8}) - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", - vse, - AbsTime, Container.Distance, dt, Container.VehicleSpeed, TryCatch(() => Container.Gear), + var ex = new VectoSimulationException("{6} ({7} {8}) - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", + vse,AbsTime, Container.Distance, dt, Container.VehicleSpeed, TryCatch(() => Container.Gear), vse.Message, RunIdentifier, CycleName, RunSuffix); + Container.FinishSimulationRun(ex); + throw ex; } catch (VectoException ve) { Log.Error("SIMULATION RUN ABORTED! ========================"); Log.Error(ve); Container.RunStatus = Status.Aborted; + var ex = new VectoSimulationException("{6} ({7} {8}) - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", + ve, + AbsTime, Container.Distance, dt, Container.VehicleSpeed, TryCatch(() => Container.Gear), ve.Message, + RunIdentifier, CycleName, RunSuffix); try { - Container.FinishSimulation(); + Container.FinishSimulationRun(ex); } catch (Exception ve2) { ve = new VectoException("Multiple Exceptions occured.", new AggregateException(ve, new VectoException("Exception during finishing Simulation.", ve2))); } - - throw new VectoSimulationException("{6} ({7} {8}) - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", - ve, - AbsTime, Container.Distance, dt, Container.VehicleSpeed, TryCatch(() => Container.Gear), ve.Message, - RunIdentifier, CycleName, RunSuffix); + throw ex; } catch (Exception e) { Log.Error("SIMULATION RUN ABORTED! ========================"); Log.Error(e); Container.RunStatus = Status.Aborted; - Container.FinishSimulation(); - throw new VectoSimulationException("{6} ({7} {8}) - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", + + var ex = new VectoSimulationException("{6} ({7} {8}) - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", e, AbsTime, Container.Distance, dt, Container.VehicleSpeed, TryCatch(() => Container.Gear), e.Message, RunIdentifier, CycleName, RunSuffix); + Container.FinishSimulationRun(ex); + throw ex; } Container.RunStatus = Progress < 1 ? Status.Aborted : Status.Success; - Container.FinishSimulation(); + Container.FinishSimulationRun(); if (Progress.IsSmaller(1, 1e-9)) { throw new VectoSimulationException( "{5} ({6} {7}) Progress: {8} - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4}", diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs index 1d19735199..a4dfbd5cab 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs @@ -264,7 +264,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl return Cycle; } - public FuelType FuelType { get { return ModData.FuelData.FuelType; } } + public FuelType FuelType + { + get { return ModData.FuelData.FuelType; } + } public Second AbsTime { get; set; } @@ -320,17 +323,22 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl } } - public void FinishSimulation() + public void FinishSimulationRun(Exception e = null) { Log.Info("VehicleContainer finishing simulation."); ModData.Finish(RunStatus); WriteSumData(ModData); - ModData.FinishSimulation(); + ModData.FinishSimulation(e); DrivingCycle.FinishSimulation(); } + public void FinishSimulation() + { + throw new NotImplementedException(); + } + public VectoRun.Status RunStatus { get; set; } #endregion @@ -361,6 +369,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl return DrivingCycle.LookAhead(time); } + public Watt BrakePower { get { return Brakes.BrakePower; } diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/AxleGearData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/AxleGearData.cs index 643ed4d1bf..9e753dcb26 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/AxleGearData.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/AxleGearData.cs @@ -29,6 +29,8 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System; +using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; @@ -37,5 +39,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data public class AxleGearData : SimulationComponentData { [ValidateObject] public TransmissionData AxleGear; + + public AxleLineType LineType; } + + } \ No newline at end of file diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/ICrossWindCorrection.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/ICrossWindCorrection.cs index 535265ffd0..7b96aae29c 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/ICrossWindCorrection.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/ICrossWindCorrection.cs @@ -42,6 +42,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data void SetDataBus(IDataBus dataBus); CrossWindCorrectionMode CorrectionMode { get; } + SquareMeter AirDragArea { get; } Watt AverageAirDragPowerLoss(MeterPerSecond v1, MeterPerSecond v2); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs index 72d66259e2..2eed9ad6e2 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs @@ -34,6 +34,7 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.OutputData.XML; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.Models.SimulationComponent.Data @@ -48,14 +49,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data public string Date { get; internal set; } + public CertificationMethod CertificationMethod { get; internal set; } + public string CertificationNumber { get; internal set; } public string DigestValueInput { get; internal set; } - public string DigestValueComputed { get; internal set; } - - public IntegrityStatus IntegrityStatus { get; internal set; } - protected static ExecutionMode GetExecutionMode(ValidationContext context) { var validationService = diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs index 74a4ae43bd..c25999c543 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs @@ -42,6 +42,18 @@ using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.Models.SimulationComponent.Data { + + public class AirdragData : SimulationComponentData + { + + public CrossWindCorrectionMode CrossWindCorrectionMode { get; set; } + + [Required, ValidateObject] + public ICrossWindCorrection CrossWindCorrectionCurve { get; internal set; } + + public SquareMeter DeclaredAirdragArea { get; internal set; } + } + /// <summary> /// Data Class for the Vehicle /// </summary> @@ -50,15 +62,15 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data { public string VIN { get; internal set; } + public string LegislativeClass { get; internal set; } + public VehicleCategory VehicleCategory { get; internal set; } public VehicleClass VehicleClass { get; internal set; } public AxleConfiguration AxleConfiguration { get; internal set; } - [Required, ValidateObject] - public ICrossWindCorrection CrossWindCorrectionCurve { get; internal set; } - + [Required, ValidateObject] private List<Axle> _axleData; private KilogramSquareMeter _wheelsInertia; @@ -150,8 +162,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data protected internal set { _rollResistanceCoefficientWithoutTrailer = value; } } - public CrossWindCorrectionMode CrossWindCorrectionMode { get; set; } - public Kilogram TotalVehicleWeight { get { @@ -168,9 +178,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data public Kilogram TotalCurbWeight { - get { return CurbWeight ?? 0.SI<Kilogram>(); } + get { return (CurbWeight ?? 0.SI<Kilogram>()) + (BodyAndTrailerWeight ?? 0.SI<Kilogram>()); } } + protected void ComputeRollResistanceAndReducedMassWheels() { if (TotalVehicleWeight == 0.SI<Kilogram>()) { diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs index 00db671c14..d6ab6d75a9 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs @@ -50,14 +50,19 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { internal readonly VehicleData ModelData; - public Vehicle(IVehicleContainer container, VehicleData modelData) : base(container) + public AirdragData AirdragData; + + + public Vehicle(IVehicleContainer container, VehicleData modelData, AirdragData airdrag) : base(container) { ModelData = modelData; - if (modelData.CrossWindCorrectionCurve != null) { - modelData.CrossWindCorrectionCurve.SetDataBus(container); + AirdragData = airdrag; + if (AirdragData.CrossWindCorrectionCurve != null) { + AirdragData.CrossWindCorrectionCurve.SetDataBus(container); } } + public IResponse Initialize(MeterPerSecond vehicleSpeed, Radian roadGradient) { PreviousState = new VehicleState { @@ -187,7 +192,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl private Watt ComputeAirDragPowerLoss(MeterPerSecond v1, MeterPerSecond v2) { - return ModelData.CrossWindCorrectionCurve.AverageAirDragPowerLoss(v1, v2); + return AirdragData.CrossWindCorrectionCurve.AverageAirDragPowerLoss(v1, v2); } public Meter Distance diff --git a/VectoCore/VectoCore/OutputData/DeclarationReport.cs b/VectoCore/VectoCore/OutputData/DeclarationReport.cs index 7c15dd5354..59c107bfa8 100644 --- a/VectoCore/VectoCore/OutputData/DeclarationReport.cs +++ b/VectoCore/VectoCore/OutputData/DeclarationReport.cs @@ -43,8 +43,8 @@ namespace TUGraz.VectoCore.OutputData { public interface IDeclarationReport { - void PrepareResult(LoadingType loading, Mission mission); - void AddResult(LoadingType loadingType, Mission mission, IModalDataContainer modData); + void PrepareResult(LoadingType loading, Mission mission, VectoRunData runData); + void AddResult(LoadingType loadingType, Mission mission, VectoRunData runData, IModalDataContainer modData); void InitializeReport(VectoRunData modelData, Segment segment); string Creator { get; set; } string JobName { get; set; } @@ -55,45 +55,27 @@ namespace TUGraz.VectoCore.OutputData /// </summary> public abstract class DeclarationReport<T> : IDeclarationReport where T : new() { - ///// <summary> - ///// Container class for one mission and the modData for the different loadings. - ///// </summary> - //protected class ResultContainer<TResultEntry> - //{ - // /// <summary> - // /// The mission - // /// </summary> - // public Mission Mission; - - // /// <summary> - // /// Dictionary of LoadingTypes and DeclarationResults - // /// </summary> - // public Dictionary<LoadingType, TResultEntry> ModData; - //} public class ResultContainer<TEntry> { - //public Stream PDFPage; - public Mission Mission; - - public MissionProfile MissionProfile; + public MissionType Mission; public Dictionary<LoadingType, TEntry> ModData; } - public class MissionProfile - { - public readonly IList<double> DistanceKm; - public readonly IList<double> TargetSpeed; - public readonly IList<double> Altitude; - - public MissionProfile(IModalDataContainer m) - { - DistanceKm = m.GetValues<Meter>(ModalResultField.dist).Select(v => v.ConvertTo().Kilo.Meter).ToDouble(); - TargetSpeed = - m.GetValues<MeterPerSecond>(ModalResultField.v_targ).Select(v => v.ConvertTo().Kilo.Meter.Per.Hour).ToDouble(); - Altitude = m.GetValues<Meter>(ModalResultField.altitude).ToDouble(); - } - } + //public class MissionProfile + //{ + // public readonly IList<double> DistanceKm; + // public readonly IList<double> TargetSpeed; + // public readonly IList<double> Altitude; + + // public MissionProfile(IModalDataContainer m) + // { + // DistanceKm = m.GetValues<Meter>(ModalResultField.dist).Select(v => v.ConvertTo().Kilo.Meter).ToDouble(); + // TargetSpeed = + // m.GetValues<MeterPerSecond>(ModalResultField.v_targ).Select(v => v.ConvertTo().Kilo.Meter.Per.Hour).ToDouble(); + // Altitude = m.GetValues<Meter>(ModalResultField.altitude).ToDouble(); + // } + //} /// <summary> /// Dictionary of MissionTypes and their corresponding results. @@ -127,12 +109,12 @@ namespace TUGraz.VectoCore.OutputData private int _resultCount; [MethodImpl(MethodImplOptions.Synchronized)] - public void PrepareResult(LoadingType loading, Mission mission) + public void PrepareResult(LoadingType loading, Mission mission, VectoRunData runData) { if (!Missions.ContainsKey(mission.MissionType)) { Missions[mission.MissionType] = new ResultContainer<T>() { - Mission = mission, - ModData = new Dictionary<LoadingType, T>() + Mission = mission.MissionType, + ModData = new Dictionary<LoadingType, T>(), }; } Missions[mission.MissionType].ModData[loading] = new T(); @@ -140,7 +122,8 @@ namespace TUGraz.VectoCore.OutputData [MethodImpl(MethodImplOptions.Synchronized)] - public void AddResult(LoadingType loadingType, Mission mission, IModalDataContainer modData) + public void AddResult(LoadingType loadingType, Mission mission, VectoRunData runData, + IModalDataContainer modData) { if (modData.RunStatus != VectoRun.Status.Success) { //Missions.Clear(); @@ -152,12 +135,12 @@ namespace TUGraz.VectoCore.OutputData if (!Missions[mission.MissionType].ModData.ContainsKey(loadingType)) { throw new VectoException("Unknown loading type {0} for mission {1}", loadingType, mission.MissionType); } - if (Missions[mission.MissionType].MissionProfile == null) { - Missions[mission.MissionType].MissionProfile = new MissionProfile(modData); - } + //if (Missions[mission.MissionType].MissionProfile == null) { + // Missions[mission.MissionType].MissionProfile = new MissionProfile(modData); + //} _resultCount--; - DoAddResult(Missions[mission.MissionType].ModData[loadingType], loadingType, mission, modData); + DoAddResult(Missions[mission.MissionType].ModData[loadingType], runData, modData); if (_resultCount == 0) { DoWriteReport(); @@ -170,11 +153,10 @@ namespace TUGraz.VectoCore.OutputData /// Adds the result of one run for the specific mission and loading. If all runs finished (given by the resultCount) the report will be written. /// </summary> /// <param name="entry"></param> - /// <param name="loadingType">Type of the loading.</param> - /// <param name="mission">The mission.</param> + /// <param name="runData"></param> /// <param name="modData">The mod data.</param> [MethodImpl(MethodImplOptions.Synchronized)] - protected abstract void DoAddResult(T entry, LoadingType loadingType, Mission mission, IModalDataContainer modData); + protected abstract void DoAddResult(T entry, VectoRunData runData, IModalDataContainer modData); protected internal abstract void DoWriteReport(); diff --git a/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs index bc2aebf957..87e9681b90 100644 --- a/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs +++ b/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs @@ -52,6 +52,12 @@ namespace TUGraz.VectoCore.OutputData.FileIO get { return Path.ChangeExtension(_jobFile, Constants.FileExtensions.PDFReport); } } + public string XMLFullReportName + { + get { return Path.ChangeExtension(_jobFile, "RESULT.xml"); } + } + + public string SumFileName { get { return Path.ChangeExtension(_jobFile, Constants.FileExtensions.SumFile); } @@ -93,7 +99,10 @@ namespace TUGraz.VectoCore.OutputData.FileIO switch (type) { case ReportType.DeclarationReportPdf: return new FileStream(PDFReportName, FileMode.Create); + case ReportType.DeclarationReportXMLFulll: + return new FileStream(XMLFullReportName, FileMode.Create); default: + throw new ArgumentOutOfRangeException("type"); } } diff --git a/VectoCore/VectoCore/OutputData/IDataWriter.cs b/VectoCore/VectoCore/OutputData/IDataWriter.cs index 254835ca38..cb88ba8834 100644 --- a/VectoCore/VectoCore/OutputData/IDataWriter.cs +++ b/VectoCore/VectoCore/OutputData/IDataWriter.cs @@ -53,6 +53,8 @@ namespace TUGraz.VectoCore.OutputData public enum ReportType { - DeclarationReportPdf + DeclarationReportPdf, + DeclarationReportXMLFulll, + DeclarationReportXMLCOC } } \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs index d61e162018..b746e57605 100644 --- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; using System.Data; +using System.Diagnostics; using System.Linq; using System.Runtime.Remoting.Metadata.W3cXsd2001; using TUGraz.VectoCommon.Utils; @@ -76,6 +77,10 @@ namespace TUGraz.VectoCore.OutputData VectoRun.Status RunStatus { get; } + string Error { get; } + + string StackTrace { get; } + /// <summary> /// Finishes the writing of the DataWriter. /// </summary> @@ -85,7 +90,10 @@ namespace TUGraz.VectoCore.OutputData IEnumerable<T> GetValues<T>(DataColumn col); + IEnumerable<T> GetValues<T>(Func<DataRow, T> selectorFunc); + Dictionary<string, DataColumn> Auxiliaries { get; set; } + T TimeIntegral<T>(ModalResultField field, Func<SI, bool> filter = null) where T : SIBase<T>; void SetDataValue(string fieldName, object value); @@ -96,7 +104,8 @@ namespace TUGraz.VectoCore.OutputData /// clear the modal data after the simulation /// called after the simulation is finished and the sum-entries have been written /// </summary> - void FinishSimulation(); + /// <param name="exception"></param> + void FinishSimulation(Exception exception = null); } public static class ModalDataContainerExtensions @@ -133,7 +142,7 @@ namespace TUGraz.VectoCore.OutputData return self ?? defaultValue.SI<T>(); } - public static MeterPerSquareSecond AccelerationsPositive(this ModalDataContainer data) + public static MeterPerSquareSecond AccelerationsPositive(this IModalDataContainer data) { return data.GetValues<MeterPerSquareSecond>(ModalResultField.acc) .Where(x => x > 0.125) @@ -141,7 +150,7 @@ namespace TUGraz.VectoCore.OutputData .Average(); } - public static MeterPerSquareSecond AccelerationsNegative(this ModalDataContainer data) + public static MeterPerSquareSecond AccelerationsNegative(this IModalDataContainer data) { return data.GetValues<MeterPerSquareSecond>(ModalResultField.acc) .Where(x => x < -0.125) @@ -149,48 +158,44 @@ namespace TUGraz.VectoCore.OutputData .Average(); } - public static Scalar AccelerationTimeShare(this ModalDataContainer data) + public static Scalar AccelerationTimeShare(this IModalDataContainer data) { - var accelerationTimeShare = data.Data.Rows.Cast<DataRow>() - .Select(x => new { - a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0), - dt = x.Field<Second>((int)ModalResultField.simulationInterval) - }) + var accelerationTimeShare = data.GetValues(x => new { + a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0), + dt = x.Field<Second>((int)ModalResultField.simulationInterval) + }) .Sum(x => x.a > 0.125 ? x.dt : 0.SI<Second>()).DefaultIfNull(0); return 100 * (accelerationTimeShare / data.Duration()).Cast<Scalar>(); } - public static Scalar DecelerationTimeShare(this ModalDataContainer data) + public static Scalar DecelerationTimeShare(this IModalDataContainer data) { - var decelerationTimeShare = data.Data.Rows.Cast<DataRow>() - .Select(x => new { - a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0), - dt = x.Field<Second>((int)ModalResultField.simulationInterval) - }) + var decelerationTimeShare = data.GetValues(x => new { + a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0), + dt = x.Field<Second>((int)ModalResultField.simulationInterval) + }) .Sum(x => x.a < -0.125 ? x.dt : 0.SI<Second>()).DefaultIfNull(0); return 100 * (decelerationTimeShare / data.Duration()).Cast<Scalar>(); } - public static Scalar CruiseTimeShare(this ModalDataContainer data) + public static Scalar CruiseTimeShare(this IModalDataContainer data) { - var cruiseTime = data.Data.Rows.Cast<DataRow>() - .Select(x => new { - v = x.Field<MeterPerSecond>((int)ModalResultField.v_act).DefaultIfNull(0), - a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0), - dt = x.Field<Second>((int)ModalResultField.simulationInterval) - }) + var cruiseTime = data.GetValues(x => new { + v = x.Field<MeterPerSecond>((int)ModalResultField.v_act).DefaultIfNull(0), + a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0), + dt = x.Field<Second>((int)ModalResultField.simulationInterval) + }) .Sum(x => x.v >= 0.1.KMPHtoMeterPerSecond() && x.a.IsBetween(-0.125, 0.125) ? x.dt : 0.SI<Second>()) .DefaultIfNull(0); return 100 * (cruiseTime / data.Duration()).Cast<Scalar>(); } - public static Scalar StopTimeShare(this ModalDataContainer data) + public static Scalar StopTimeShare(this IModalDataContainer data) { - var stopTime = data.Data.Rows.Cast<DataRow>() - .Select(x => new { - v = x.Field<MeterPerSecond>((int)ModalResultField.v_act).DefaultIfNull(0), - dt = x.Field<Second>((int)ModalResultField.simulationInterval) - }) + var stopTime = data.GetValues(x => new { + v = x.Field<MeterPerSecond>((int)ModalResultField.v_act).DefaultIfNull(0), + dt = x.Field<Second>((int)ModalResultField.simulationInterval) + }) .Sum(x => x.v < 0.1.KMPHtoMeterPerSecond() ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>(); return 100 * (stopTime / data.Duration()).Cast<Scalar>(); } @@ -455,26 +460,30 @@ namespace TUGraz.VectoCore.OutputData } - public static MeterPerSecond MaxSpeed(this ModalDataContainer data) + public static MeterPerSecond MaxSpeed(this IModalDataContainer data) { return data.Max<MeterPerSecond>(ModalResultField.v_act).DefaultIfNull(0); } - public static MeterPerSquareSecond MaxAcceleration(this ModalDataContainer data) + public static MeterPerSecond MinSpeed(this IModalDataContainer data) + { + return data.Min<MeterPerSecond>(ModalResultField.v_act).DefaultIfNull(0); + } + + public static MeterPerSquareSecond MaxAcceleration(this IModalDataContainer data) { return data.Max<MeterPerSquareSecond>(ModalResultField.acc).DefaultIfNull(0); } - public static MeterPerSquareSecond MaxDeceleration(this ModalDataContainer data) + public static MeterPerSquareSecond MaxDeceleration(this IModalDataContainer data) { return -data.Min<MeterPerSquareSecond>(ModalResultField.acc).DefaultIfNull(0); } - public static PerSecond AvgEngineSpeed(this ModalDataContainer data) + public static PerSecond AvgEngineSpeed(this IModalDataContainer data) { - var integral = data.Data.Rows.Cast<DataRow>() - .Sum(x => x.Field<PerSecond>((int)ModalResultField.n_eng_avg).Value() * - x.Field<Second>((int)ModalResultField.simulationInterval).Value()); + var integral = data.GetValues(x => x.Field<PerSecond>((int)ModalResultField.n_eng_avg).Value() * + x.Field<Second>((int)ModalResultField.simulationInterval).Value()).Sum(); return (integral / Duration(data).Value()).SI<PerSecond>(); } @@ -483,72 +492,71 @@ namespace TUGraz.VectoCore.OutputData return data.Max<PerSecond>(ModalResultField.n_eng_avg); } - public static Scalar EngineMaxLoadTimeShare(this ModalDataContainer data) + public static Scalar EngineMaxLoadTimeShare(this IModalDataContainer data) { - var sum = data.Data.Rows.Cast<DataRow>() - .Select(x => new { - tMax = x.Field<NewtonMeter>((int)ModalResultField.Tq_full).DefaultIfNull(-1), - tEng = x.Field<NewtonMeter>((int)ModalResultField.T_eng_fcmap).DefaultIfNull(0), - dt = x.Field<Second>((int)ModalResultField.simulationInterval) - }) - .Sum(x => x.tMax.IsEqual(x.tEng, 5.SI<NewtonMeter>()) ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>(); + var sum = data.GetValues(x => new { + tMax = x.Field<NewtonMeter>((int)ModalResultField.Tq_full).DefaultIfNull(-1), + tEng = x.Field<NewtonMeter>((int)ModalResultField.T_eng_fcmap).DefaultIfNull(0), + dt = x.Field<Second>((int)ModalResultField.simulationInterval) + }).Sum(x => x.tMax.IsEqual(x.tEng, 5.SI<NewtonMeter>()) ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>(); return 100 * sum / Duration(data); } - public static Scalar GearshiftCount(this ModalDataContainer data) + public static Scalar GearshiftCount(this IModalDataContainer data) { var prevGear = data.GetValues<uint>(ModalResultField.Gear).First(); var gearCount = 0; - foreach (DataRow row in data.Data.Rows) { - var gear = row.Field<uint>((int)ModalResultField.Gear); - var speed = row.Field<MeterPerSecond>((int)ModalResultField.v_act); + + data.GetValues(x => { + var gear = x.Field<uint>((int)ModalResultField.Gear); + var speed = x.Field<MeterPerSecond>((int)ModalResultField.v_act); if (speed != null && speed.IsSmallerOrEqual(0.1)) { prevGear = 0; gearCount++; - continue; + return gear; // not used } if (gear == 0 || gear == prevGear) { - continue; + return gear; // not used } gearCount++; prevGear = gear; - } + return gear; // not used + }); return gearCount.SI<Scalar>(); } - public static Scalar CoastingTimeShare(this ModalDataContainer data) + public static Scalar CoastingTimeShare(this IModalDataContainer data) { - var sum = data.Data.Rows.Cast<DataRow>() - .Select(x => new { - DrivingBehavior = x.Field<DrivingBehavior>((int)ModalResultField.drivingBehavior), - dt = x.Field<Second>((int)ModalResultField.simulationInterval) - }) + var sum = data.GetValues(x => new { + DrivingBehavior = x.Field<DrivingBehavior>((int)ModalResultField.drivingBehavior), + dt = x.Field<Second>((int)ModalResultField.simulationInterval) + }) .Sum(x => x.DrivingBehavior == DrivingBehavior.Coasting ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>(); return 100 * sum / Duration(data); } - public static Scalar BrakingTimeShare(this ModalDataContainer data) + public static Scalar BrakingTimeShare(this IModalDataContainer data) { - var sum = data.Data.Rows.Cast<DataRow>() - .Select(x => new { - DrivingBehavior = x.Field<DrivingBehavior>((int)ModalResultField.drivingBehavior), - dt = x.Field<Second>((int)ModalResultField.simulationInterval) - }) + var sum = data.GetValues(x => new { + DrivingBehavior = x.Field<DrivingBehavior>((int)ModalResultField.drivingBehavior), + dt = x.Field<Second>((int)ModalResultField.simulationInterval) + }) .Sum(x => x.DrivingBehavior == DrivingBehavior.Braking ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>(); return 100 * sum / Duration(data); } - public static Dictionary<uint, Scalar> TimeSharePerGear(this ModalDataContainer data, uint gearCount) + public static Dictionary<uint, Scalar> TimeSharePerGear(this IModalDataContainer data, uint gearCount) { var retVal = new Dictionary<uint, Scalar>(); for (uint i = 0; i <= gearCount; i++) { retVal[i] = 0.SI<Scalar>(); } - foreach (var dataRow in data.Data.Rows.Cast<DataRow>()) { - var gear = dataRow.Field<uint>((int)ModalResultField.Gear); - retVal[gear] += dataRow.Field<Second>((int)ModalResultField.simulationInterval).Value(); - } + data.GetValues(x => { + var gear = x.Field<uint>((int)ModalResultField.Gear); + retVal[gear] += x.Field<Second>((int)ModalResultField.simulationInterval).Value(); + return gear; // not used + }); var duration = Duration(data).Value(); for (uint i = 0; i <= gearCount; i++) { diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs index 433f526adb..a6a5ec86d9 100644 --- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; using System.Data; +using System.Diagnostics; using System.Globalization; using System.Linq; using System.Runtime.CompilerServices; @@ -53,6 +54,7 @@ namespace TUGraz.VectoCore.OutputData private readonly IModalDataWriter _writer; private readonly List<string> _additionalColumns = new List<string>(); + private Exception SimException; public string RunName { get; private set; } public string CycleName { get; private set; } public string RunSuffix { get; private set; } @@ -61,6 +63,9 @@ namespace TUGraz.VectoCore.OutputData public VectoRun.Status RunStatus { get; protected set; } + public string Error { get { return SimException == null ? null : SimException.Message; } } + public string StackTrace { get { return SimException == null ? null : SimException.StackTrace; } } + public bool WriteAdvancedAux { get; set; } public ModalDataContainer(string runName, FuelType fuel, IModalDataWriter writer, bool writeEngineOnly = false) @@ -242,6 +247,11 @@ namespace TUGraz.VectoCore.OutputData return Data.Rows.Cast<DataRow>().Select(x => x.Field<T>(col)); } + public IEnumerable<T> GetValues<T>(Func<DataRow, T> selectorFunc) + { + return from DataRow row in Data.Rows select selectorFunc(row); + } + public T TimeIntegral<T>(ModalResultField field, Func<SI, bool> filter = null) where T : SIBase<T> { var result = 0.0; @@ -311,8 +321,9 @@ namespace TUGraz.VectoCore.OutputData } } - public void FinishSimulation() + public void FinishSimulation(Exception exception) { + SimException = exception; //Data.Clear(); //.Rows.Clear(); Data = null; CurrentRow = null; diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index 36e2b904b2..2c992aa64d 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -306,7 +306,8 @@ namespace TUGraz.VectoCore.OutputData row[VEHICLE_MODEL] = runData.VehicleData.ModelName; row[HDV_CO2_VEHICLE_CLASS] = runData.VehicleData.VehicleClass.GetClassNumber(); - row[CURB_MASS] = runData.VehicleData.CurbWeight - (runData.VehicleData.BodyAndTrailerWeight ?? 0.SI<Kilogram>()); + row[CURB_MASS] = runData.VehicleData.CurbWeight; + // - (runData.VehicleData.BodyAndTrailerWeight ?? 0.SI<Kilogram>()); row[LOADING] = runData.VehicleData.Loading; row[CARGO_VOLUME] = runData.VehicleData.CargoVolume; @@ -330,7 +331,7 @@ namespace TUGraz.VectoCore.OutputData row[ENGINE_CF_REG_PER] = runData.EngineData.CorrectionFactorRegPer; row[ENGINE_ACTUAL_CORRECTION_FACTOR] = runData.EngineData.FuelConsumptionCorrectionFactor; - row[CD_x_A] = runData.VehicleData.CrossWindCorrectionCurve.AirDragArea; + row[CD_x_A] = runData.AirdragData.CrossWindCorrectionCurve.AirDragArea; row[ROLLING_RESISTANCE_COEFFICIENT_WO_TRAILER] = runData.VehicleData.RollResistanceCoefficientWithoutTrailer; @@ -514,38 +515,33 @@ namespace TUGraz.VectoCore.OutputData row[ACC] = modData.AccelerationAverage(); - var modal = modData as ModalDataContainer; - if (modal == null) { - Log.Error("unknown modal data container!"); - return; - } - row[ACC_POS] = modal.AccelerationsPositive(); - row[ACC_NEG] = modal.AccelerationsNegative(); - var accTimeShare = modal.AccelerationTimeShare(); + row[ACC_POS] = modData.AccelerationsPositive(); + row[ACC_NEG] = modData.AccelerationsNegative(); + var accTimeShare = modData.AccelerationTimeShare(); row[ACC_TIMESHARE] = accTimeShare; - var decTimeShare = modal.DecelerationTimeShare(); + var decTimeShare = modData.DecelerationTimeShare(); row[DEC_TIMESHARE] = decTimeShare; - var cruiseTimeShare = modal.CruiseTimeShare(); + var cruiseTimeShare = modData.CruiseTimeShare(); row[CRUISE_TIMESHARE] = cruiseTimeShare; - var stopTimeShare = modal.StopTimeShare(); + var stopTimeShare = modData.StopTimeShare(); row[STOP_TIMESHARE] = stopTimeShare; - row[MAX_SPEED] = modal.MaxSpeed().AsKmph.SI<Scalar>(); - row[MAX_ACCELERATION] = modal.MaxAcceleration(); - row[MAX_DECELERATION] = modal.MaxDeceleration(); - row[AVG_ENGINE_SPEED] = modal.AvgEngineSpeed().AsRPM.SI<Scalar>(); + row[MAX_SPEED] = modData.MaxSpeed().AsKmph.SI<Scalar>(); + row[MAX_ACCELERATION] = modData.MaxAcceleration(); + row[MAX_DECELERATION] = modData.MaxDeceleration(); + row[AVG_ENGINE_SPEED] = modData.AvgEngineSpeed().AsRPM.SI<Scalar>(); row[MAX_ENGINE_SPEED] = modData.MaxEngineSpeed().AsRPM.SI<Scalar>(); - row[ENGINE_FULL_LOAD_TIME_SHARE] = modal.EngineMaxLoadTimeShare(); - row[COASTING_TIME_SHARE] = modal.CoastingTimeShare(); - row[BRAKING_TIME_SHARE] = modal.BrakingTimeShare(); + row[ENGINE_FULL_LOAD_TIME_SHARE] = modData.EngineMaxLoadTimeShare(); + row[COASTING_TIME_SHARE] = modData.CoastingTimeShare(); + row[BRAKING_TIME_SHARE] = modData.BrakingTimeShare(); if (gearCount <= 0) { return; } - row[NUM_GEARSHIFTS] = modal.GearshiftCount(); - var timeSharePerGear = modal.TimeSharePerGear(gearCount); + row[NUM_GEARSHIFTS] = modData.GearshiftCount(); + var timeSharePerGear = modData.TimeSharePerGear(gearCount); for (uint i = 0; i <= gearCount; i++) { var colName = string.Format(TIME_SHARE_PER_GEAR_FORMAT, i); diff --git a/VectoCore/VectoCore/OutputData/XML/AbstractXMLWriter.cs b/VectoCore/VectoCore/OutputData/XML/AbstractXMLWriter.cs index 380ff1eb79..294928d83c 100644 --- a/VectoCore/VectoCore/OutputData/XML/AbstractXMLWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/AbstractXMLWriter.cs @@ -6,15 +6,15 @@ using System.Xml; using System.Xml.Linq; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; -using TUGraz.VectoCore.Resources; namespace TUGraz.IVT.VectoXML.Writer { public abstract class AbstractXMLWriter { //protected const string SchemaLocationBaseUrl = "http://markus.quaritsch.at/VECTO/"; - protected const string SchemaLocationBaseUrl = "https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/"; + public const string SchemaLocationBaseUrl = "https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/"; protected const string SchemaVersion = "0.8"; protected XNamespace tns; @@ -64,57 +64,6 @@ namespace TUGraz.IVT.VectoXML.Writer }))) .Cast<object>().ToArray(); } - - protected string GetVehicleCategoryXML(VehicleCategory vehicleCategory) - { - switch (vehicleCategory) { - case VehicleCategory.Coach: - case VehicleCategory.Tractor: - return vehicleCategory.ToString(); - case VehicleCategory.CityBus: - return "City Bus"; - case VehicleCategory.InterurbanBus: - return "Interurban Bus"; - case VehicleCategory.RigidTruck: - return "Rigid Truck"; - - default: - throw new ArgumentOutOfRangeException("vehicleCategory", vehicleCategory, null); - } - } - - protected string GetCorrectionModeXML(CrossWindCorrectionMode mode) - { - switch (mode) { - case CrossWindCorrectionMode.NoCorrection: - return "No Correction"; - case CrossWindCorrectionMode.SpeedDependentCorrectionFactor: - return "Speed Dependent Correction Factor"; - case CrossWindCorrectionMode.VAirBetaLookupTable: - return "VAir Beta Lookup Table"; - case CrossWindCorrectionMode.DeclarationModeCorrection: - return "Declaration Mode Correction"; - default: - throw new ArgumentOutOfRangeException("CrosswindCorrection", mode, null); - } - } - - protected string GetRetarterTypeXML(RetarderType type) - { - switch (type) { - case RetarderType.None: - return "None"; - case RetarderType.TransmissionInputRetarder: - return "Transmission Input Retarder"; - case RetarderType.TransmissionOutputRetarder: - return "Transmission Output Retarder"; - case RetarderType.EngineRetarder: - return "Engine Retarder"; - case RetarderType.LossesIncludedInTransmission: - return "Losses included in Gearbox"; - default: - throw new ArgumentOutOfRangeException("RetarderType", type, null); - } - } + } } \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/AttributeMappings.cs b/VectoCore/VectoCore/OutputData/XML/AttributeMappings.cs index a51c7530eb..40b15debe4 100644 --- a/VectoCore/VectoCore/OutputData/XML/AttributeMappings.cs +++ b/VectoCore/VectoCore/OutputData/XML/AttributeMappings.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.InputData.Reader; using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; -using TUGraz.VectoCore.Resources; namespace TUGraz.IVT.VectoXML { diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs index 2b3fb7b9e2..bfa8f3092f 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Globalization; using System.Linq; using System.Security.Cryptography; @@ -10,215 +11,193 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.Models.SimulationComponent.Data; namespace TUGraz.VectoCore.OutputData.XML { public class XMLDeclarationReport : DeclarationReport<XMLDeclarationReport.ResultEntry> { + private XMLFullReport _fullReport; + private IOutputDataWriter Writer; + public class ResultEntry { - public MeterPerSecond AverageSpeed; - public SI FcLiterPer100Km; + public MeterPerSecond AverageSpeed { get; private set; } - public SI Co2GramPerKilometer; + public Joule EnergyConsumptionTotal { get; private set; } - public void SetResultData(IModalDataContainer data) - { - AverageSpeed = data.Speed(); - FcLiterPer100Km = data.FuelConsumptionFinalLiterPer100Kilometer() ?? 0.SI(); + public Kilogram CO2Total { get; private set; } - Co2GramPerKilometer = (data.CO2PerMeter() ?? 0.SI<KilogramPerMeter>()).ConvertTo().Gramm.Per.Kilo.Meter; - } - } + public Kilogram FuelConsumptionTotal { get; private set; } - protected XElement VehicleConfiguration; - protected XElement IntegrityStatus; + public Meter Distance { get; private set; } + public Scalar GearshiftCount { get; private set; } - public XMLDeclarationReport() - { - Report = new XDocument(new XDeclaration("1.0", "utf-8", "yes")); - } + public Scalar FullLoadPercentage { get; private set; } - public XDocument Report { get; private set; } + public MeterPerSquareSecond MaxDeceleration { get; private set; } + public MeterPerSquareSecond MaxAcceleration { get; private set; } - protected override void DoAddResult(ResultEntry entry, LoadingType loadingType, Mission mission, - IModalDataContainer modData) - { - entry.SetResultData(modData); - } + public MeterPerSecond MaxSpeed { get; private set; } - protected internal override void DoWriteReport() - { - var xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); - var xsd = XNamespace.Get("http://www.w3.org/2001/XMLSchema"); - XNamespace vectoNs = @"VectoOutput.XSD"; - var vectoVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); - - Report.Add(new XElement("VectoOutput", - new XAttribute("schemaVersion", "0.1"), - new XAttribute("type", "declaration"), - //new XAttribute("xmlns", vectoNs.NamespaceName), - new XAttribute(xsi + "noNamespaceSchemaLocation", vectoNs.NamespaceName), - new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName), - new XElement("DeclarationReport", - new XAttribute("id", GetReportID()), - new XElement("AppVersion", vectoVersion), - new XElement("Date", XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)), - VehicleConfiguration, - IntegrityStatus, - new XElement("SimulationResults", - Missions.OrderBy(m => m.Key).Select((m, i) => GetResult(m.Value, i)) - ) - ), - new XElement("Signature") - ) - ); - } + public MeterPerSecond MinSpeed { get; private set; } + public string Error { get; private set; } - private static XElement[] GetResult(ResultContainer<ResultEntry> result, int i) - { - var retVal = new List<XElement>(); - foreach (var pair in result.ModData) { - var data = pair.Value; - var loading = result.Mission.Loadings[pair.Key]; - - retVal.Add(new XElement("SimulationRun", - new XElement("DrivingCycle", result.Mission.MissionType.ToString()), - new XElement("Loading", - new XAttribute("unit", "kg"), - loading.ToOutputFormat(1)), - GetFuelConsumptionReport(data, loading), - GetCO2Report(data, loading), - new XElement("AvgSpeed", - new XAttribute("unit", "km/h"), - data.AverageSpeed.ConvertTo().Kilo.Meter.Per.Hour.ToOutputFormat(3) - ) - ) - ); - } - return retVal.ToArray(); - } + public VectoRun.Status Status { get; private set; } - private static XElement GetCO2Report(ResultEntry data, Kilogram loading) - { - var retVal = new XElement("CO2Results", - new XElement("CO2", - new XAttribute("unit", "g/km"), data.Co2GramPerKilometer.ToOutputFormat(3))); - if (!loading.IsEqual(0)) { - retVal.Add(new XElement("CO2", - new XAttribute("unit", "g/t.km"), (data.Co2GramPerKilometer / loading.ConvertTo().Ton).ToOutputFormat(3))); - } - return retVal; - } + public string StackTrace { get; private set; } - private static XElement GetFuelConsumptionReport(ResultEntry data, Kilogram loading) - { - var retVal = new XElement("FuelConsumptionResults", - new XElement("FuelConsumption", - new XAttribute("unit", "l/100km"), data.FcLiterPer100Km.ToOutputFormat(3))); - if (!loading.IsEqual(0)) { - retVal.Add(new XElement("FuelConsumption", - new XAttribute("unit", "l/100t.km"), (data.FcLiterPer100Km / loading.ConvertTo().Ton).ToOutputFormat(3))); + public FuelType FuelType { get; private set; } + + public Kilogram Payload { get; private set; } + + public Kilogram TotalVehicleWeight { get; private set; } + + public CubicMeter CargoVolume { get; private set; } + + + public void SetResultData(VectoRunData runData, IModalDataContainer data) + { + FuelType = data.FuelData.FuelType; + Payload = runData.VehicleData.Loading; + CargoVolume = runData.VehicleData.CargoVolume; + TotalVehicleWeight = runData.VehicleData.TotalVehicleWeight; + Status = data.RunStatus; + Error = data.Error; + StackTrace = data.StackTrace; + AverageSpeed = data.Speed(); + MinSpeed = data.MinSpeed(); + MaxSpeed = data.MaxSpeed(); + MaxAcceleration = data.MaxAcceleration(); + MaxDeceleration = data.MaxDeceleration(); + FullLoadPercentage = data.EngineMaxLoadTimeShare(); + GearshiftCount = data.GearshiftCount(); + + Distance = data.Distance(); + + FuelConsumptionTotal = data.TimeIntegral<Kilogram>(ModalResultField.FCFinal); + CO2Total = FuelConsumptionTotal * data.FuelData.CO2PerFuelWeight; + EnergyConsumptionTotal = FuelConsumptionTotal * data.FuelData.LowerHeatingValue; } - return retVal; } - private static string GetReportID() + public XMLDeclarationReport(IOutputDataWriter writer = null) { - var md5 = MD5.Create(); - return string.Format("VECTO-{0}", - Convert.ToBase64String( - md5.ComputeHash(Encoding.UTF8.GetBytes(DateTime.UtcNow.ToString(CultureInfo.InvariantCulture))) - ) - ); + _fullReport = new XMLFullReport(); //new XDocument(new XDeclaration("1.0", "utf-8", "yes")); + //CustomerReport = new XDocument(new XDeclaration("1.0", "utf-8", "yes")); + + Writer = writer; } - protected override void DoInitializeReport(VectoRunData modelData, Segment segment) + public XDocument FullReport { - VehicleConfiguration = new XElement("Vehicle", - new XAttribute("id", modelData.VehicleData.CertificationNumber), - GetComponentAttributes(modelData.VehicleData)); - var components = new XElement("Components", - GetComponentDescription("Engine", modelData.EngineData), - GetComponentDescription("Gearbox", modelData.GearboxData), - GetComponentDescription("Axlegear", modelData.AxleGearData) - ); - if (modelData.Retarder.Type != RetarderType.None) { - components.Add(GetComponentDescription("Retarder", modelData.Retarder)); - } - components.Add(GetWheelsDescription(modelData.VehicleData.AxleData)); - components.Add(GetAuxiliariesDescription(modelData.Aux)); - VehicleConfiguration.Add(components); - - IntegrityStatus = new XElement("SignatureVerification"); - IntegrityStatus.Add(GetIntegrityStatus(modelData.VehicleData)); - IntegrityStatus.Add(GetIntegrityStatus(modelData.EngineData)); - IntegrityStatus.Add(GetIntegrityStatus(modelData.GearboxData)); - IntegrityStatus.Add(GetIntegrityStatus(modelData.AxleGearData)); - if (modelData.Retarder.Type != RetarderType.None) { - IntegrityStatus.Add(GetIntegrityStatus(modelData.Retarder)); - } + get { return _fullReport.Report; } } - private static XElement GetIntegrityStatus(SimulationComponentData component) + + protected override void DoAddResult(ResultEntry entry, VectoRunData runData, IModalDataContainer modData) { - return new XElement("Entry", - new XAttribute("ref", component.CertificationNumber), - new XAttribute("digest", component.DigestValueInput), - new XAttribute("check", component.IntegrityStatus)); + entry.SetResultData(runData, modData); } - private static XElement GetAuxiliariesDescription(IEnumerable<VectoRunData.AuxData> aux) + protected internal override void DoWriteReport() { - var retVal = new XElement("Component", - new XAttribute("type", "Auxiliaries"), - new XAttribute("id", "AUX")); - foreach (var auxData in aux) { - retVal.Add(new XElement("Auxiliary", - new XAttribute("name", auxData.ID), - new XAttribute("technology", auxData.Technology) - )); + foreach (var result in Missions.OrderBy(m => m.Key)) { + _fullReport.AddResult(result.Value); } - return retVal; - } - private static XElement GetWheelsDescription(List<Axle> axleData) - { - var retVal = new XElement("Component", - new XAttribute("type", "AxleWheels"), - new XAttribute("id", "AXL")); - - foreach (var axle in axleData.Where(axle => axle.AxleType != AxleType.Trailer)) { - retVal.Add(new XElement("Axle", - new XAttribute("twinTyres", axle.TwinTyres), - new XAttribute("axleType", axle.AxleType.ToString()), - new XElement("Dimension", axle.WheelsDimension), - GetComponentAttributes(axle))); + if (Writer != null) { + var xmlWriter = new XmlTextWriter(Writer.WriteStream(ReportType.DeclarationReportXMLFulll), Encoding.UTF8) { + Formatting = Formatting.Indented + }; + _fullReport.Report.WriteTo(xmlWriter); + xmlWriter.Flush(); + xmlWriter.Close(); } - return retVal; + //var xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); + //var xsd = XNamespace.Get("http://www.w3.org/2001/XMLSchema"); + //XNamespace vectoNs = @"VectoOutput.XSD"; + //var vectoVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); + + //FullReport.Add(new XElement("VectoOutput", + // new XAttribute("schemaVersion", "0.1"), + // new XAttribute("type", "declaration"), + // //new XAttribute("xmlns", vectoNs.NamespaceName), + // new XAttribute(xsi + "noNamespaceSchemaLocation", vectoNs.NamespaceName), + // new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName), + // new XElement("DeclarationReport", + // new XAttribute("id", GetReportID()), + // new XElement("AppVersion", vectoVersion), + // new XElement("Date", XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)), + // VehicleConfiguration, + // IntegrityStatus, + // new XElement("SimulationResults", + // Missions.OrderBy(m => m.Key).Select((m, i) => GetResult(m.Value, i)) + // ) + // ), + // new XElement("Signature") + // ) + // ); } - private static XElement GetComponentDescription(string type, SimulationComponentData component) - { - return new XElement("Component", - new XAttribute("type", type), - new XAttribute("id", component.CertificationNumber), - GetComponentAttributes(component)); - } - private static XElement[] GetComponentAttributes(SimulationComponentData component) + //private static XElement[] GetResult(ResultContainer<ResultEntry> result, int i) + //{ + // var retVal = new List<XElement>(); + // foreach (var pair in result.ModData) { + // var data = pair.Value; + // var loading = result.Mission.Loadings[pair.Key]; + + // retVal.Add(new XElement("SimulationRun", + // new XElement("DrivingCycle", result.Mission.MissionType.ToString()), + // new XElement("Loading", + // new XAttribute("unit", "kg"), + // loading.ToOutputFormat(1)), + // GetFuelConsumptionReport(data, loading), + // GetCO2Report(data, loading), + // new XElement("AvgSpeed", + // new XAttribute("unit", "km/h"), + // data.AverageSpeed.ConvertTo().Kilo.Meter.Per.Hour.ToOutputFormat(3) + // ) + // ) + // ); + // } + // return retVal.ToArray(); + //} + + //private static XElement GetCO2Report(ResultEntry data, Kilogram loading) + //{ + // var retVal = new XElement("CO2Results", + // new XElement("CO2", + // new XAttribute("unit", "g/km"), data.Co2GramPerKilometer.ToOutputFormat(3))); + // if (!loading.IsEqual(0)) { + // retVal.Add(new XElement("CO2", + // new XAttribute("unit", "g/t.km"), (data.Co2GramPerKilometer / loading.ConvertTo().Ton).ToOutputFormat(3))); + // } + // return retVal; + //} + + //private static XElement GetFuelConsumptionReport(ResultEntry data, Kilogram loading) + //{ + // var retVal = new XElement("FuelConsumptionResults", + // new XElement("FuelConsumption", + // new XAttribute("unit", "l/100km"), data.FcLiterPer100Km.ToOutputFormat(3))); + // if (!loading.IsEqual(0)) { + // retVal.Add(new XElement("FuelConsumption", + // new XAttribute("unit", "l/100t.km"), (data.FcLiterPer100Km / loading.ConvertTo().Ton).ToOutputFormat(3))); + // } + // return retVal; + //} + + + protected override void DoInitializeReport(VectoRunData modelData, Segment segment) { - return new[] { - new XElement("Vendor", component.Manufacturer), - new XElement("MakeAndModel", component.ModelName), - new XElement("TypeId", component.CertificationNumber), - new XElement("ComponentDataHash", component.DigestValueInput) - }; + _fullReport.Initialize(modelData, segment); } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationWriter.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationWriter.cs index 3f02a25371..169c0088c0 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationWriter.cs @@ -8,11 +8,11 @@ using TUGraz.IVT.VectoXML; using TUGraz.IVT.VectoXML.Writer; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.Reader; using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; -using TUGraz.VectoCore.Resources; namespace TUGraz.VectoCore.OutputData.XML { @@ -100,12 +100,12 @@ namespace TUGraz.VectoCore.OutputData.XML new XAttribute(XMLNames.Component_ID_Attr, "VEH-" + vehicle.Model), GetDefaultComponentElements(vehicle.TechnicalReportId, vehicle.Model, "N.A."), new XElement(tns + XMLNames.Vehicle_LegislativeClass, "N3"), - new XElement(tns + XMLNames.Vehicle_VehicleCategory, GetVehicleCategoryXML(vehicle.VehicleCategory)), + new XElement(tns + XMLNames.Vehicle_VehicleCategory, vehicle.VehicleCategory.ToXMLFormat()), new XElement(tns + XMLNames.Vehicle_AxleConfiguration, vehicle.AxleConfiguration.GetName()), new XElement(tns + XMLNames.Vehicle_CurbMassChassis, vehicle.CurbMassChassis.ToXMLFormat(0)), new XElement(tns + XMLNames.Vehicle_GrossVehicleMass, vehicle.GrossVehicleMassRating.ToXMLFormat(0)), new XElement(tns + XMLNames.Vehicle_IdlingSpeed, data.EngineInputData.IdleSpeed.ToXMLFormat(0)), - new XElement(tns + XMLNames.Vehicle_RetarderType, GetRetarterTypeXML(retarder.Type)), + new XElement(tns + XMLNames.Vehicle_RetarderType, retarder.Type.ToXMLFormat()), retarder.Type.IsDedicatedComponent() ? new XElement(tns + XMLNames.Vehicle_RetarderRatio, retarder.Ratio.ToXMLFormat(3)) : null, @@ -341,7 +341,7 @@ namespace TUGraz.VectoCore.OutputData.XML AddSignatureDummy(id) ); } - + private string AuxTypeToXML(AuxiliaryType type) { return type.ToString(); diff --git a/VectoCore/VectoCore/OutputData/XML/XMLEngineeringWriter.cs b/VectoCore/VectoCore/OutputData/XML/XMLEngineeringWriter.cs index 3584b1b9e9..026e94b071 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLEngineeringWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLEngineeringWriter.cs @@ -9,10 +9,10 @@ using TUGraz.IVT.VectoXML; using TUGraz.IVT.VectoXML.Writer; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.Reader.ComponentData; -using TUGraz.VectoCore.Resources; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.OutputData.XML @@ -191,12 +191,12 @@ namespace TUGraz.VectoCore.OutputData.XML return new XElement(tns + XMLNames.Component_Vehicle, new XAttribute(XMLNames.Component_ID_Attr, "VEH-" + vehicle.Model), GetDefaultComponentElements(vehicle.TechnicalReportId, vehicle.Model), - new XElement(tns + XMLNames.Vehicle_VehicleCategory, GetVehicleCategoryXML(vehicle.VehicleCategory)), + new XElement(tns + XMLNames.Vehicle_VehicleCategory, vehicle.VehicleCategory.ToXMLFormat()), new XElement(tns + XMLNames.Vehicle_AxleConfiguration, vehicle.AxleConfiguration.GetName()), new XElement(tns + XMLNames.Vehicle_CurbMassChassis, vehicle.CurbMassChassis.Value().ToXMLFormat(0)), new XElement(tns + XMLNames.Vehicle_GrossVehicleMass, vehicle.GrossVehicleMassRating.Value().ToXMLFormat(0)), //new XElement(tns + XMLNames.Vehicle_AirDragArea, airdrag.AirDragArea.Value()), - new XElement(tns + XMLNames.Vehicle_RetarderType, GetRetarterTypeXML(retarder.Type)), + new XElement(tns + XMLNames.Vehicle_RetarderType, retarder.Type.ToXMLFormat()), retarder.Type.IsDedicatedComponent() ? new XElement(tns + XMLNames.Vehicle_RetarderRatio, retarder.Ratio.ToXMLFormat(3)) : null, @@ -514,7 +514,7 @@ namespace TUGraz.VectoCore.OutputData.XML new XElement(tns + XMLNames.ComponentDataWrapper, new XAttribute(XMLNames.Component_ID_Attr, id), GetDefaultComponentElements(data.Model, "N.A."), - new XElement(tns + XMLNames.Vehicle_CrossWindCorrectionMode, GetCorrectionModeXML(data.CrossWindCorrectionMode)), + new XElement(tns + XMLNames.Vehicle_CrossWindCorrectionMode, data.CrossWindCorrectionMode.ToXMLFormat()), new XElement(tns + XMLNames.Vehicle_AirDragArea, data.AirDragArea.Value().ToXMLFormat(2))), GetCrossWindCorrectionData(data) ); diff --git a/VectoCore/VectoCore/OutputData/XML/XMLFullReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLFullReport.cs new file mode 100644 index 0000000000..ef36c36649 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/XMLFullReport.cs @@ -0,0 +1,348 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Xml; +using System.Xml.Linq; +using TUGraz.IVT.VectoXML.Writer; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Configuration; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.SimulationComponent.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; +using TUGraz.VectoHashing; + +namespace TUGraz.VectoCore.OutputData.XML +{ + public class XMLFullReport + { + protected XElement VehiclePart; + + protected XElement InputDataIntegrity; + + protected XElement Results; + + protected XNamespace tns; + protected XNamespace di; + private bool allSuccess = true; + + + public XMLFullReport() + { + di = "http://www.w3.org/2000/09/xmldsig#"; + tns = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4"; + VehiclePart = new XElement(tns + XMLNames.Component_Vehicle); + Results = new XElement(tns + "Results"); + } + + public void Initialize(VectoRunData modelData, Segment segment) + { + VehiclePart.Add( + new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN), + new XElement(tns + XMLNames.Vehicle_VehicleCategory, modelData.VehicleData.LegislativeClass), + new XElement(tns + "VehicleGroup", segment.VehicleClass.GetClassNumber()), + new XElement(tns + XMLNames.Vehicle_AxleConfiguration, modelData.VehicleData.AxleConfiguration.GetName()), + new XElement(tns + XMLNames.Vehicle_GrossVehicleMass, modelData.VehicleData.GrossVehicleWeight.ToXMLFormat(0)), + new XElement(tns + XMLNames.Vehicle_CurbMassChassis, modelData.VehicleData.CurbWeight.ToXMLFormat(0)), + new XElement(tns + XMLNames.Vehicle_PTO, modelData.PTO != null), + GetTorqueLimits(modelData.EngineData), + new XElement(tns + XMLNames.Vehicle_Components, + GetEngineDescription(modelData.EngineData), + GetGearboxDescription(modelData.GearboxData), + GetTorqueConverterDescription(modelData.GearboxData.TorqueConverterData), + GetRetarderDescription(modelData.Retarder), + GetAngledriveDescription(modelData.AngledriveData), + GetAxlegearDescription(modelData.AxleGearData), + GetAirDragDescription(modelData.AirdragData), + GetAxleWheelsDescription(modelData.VehicleData), + GetAuxiliariesDescription(modelData.Aux) + ) + ); + InputDataIntegrity = new XElement(tns + "InputDataSignature", + modelData.InputDataHash == null ? CreateDummySig() : new XElement(modelData.InputDataHash)); + } + + private XElement CreateDummySig() + { + return new XElement(di + XMLNames.DI_Signature_Reference, + new XElement(di + XMLNames.DI_Signature_Reference_DigestMethod, + new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "null")), + new XElement(di + XMLNames.DI_Signature_Reference_DigestValue, "NOT AVAILABLE") + ); + } + + private XElement GetTorqueLimits(CombustionEngineData modelData) + { + var limits = new List<XElement>(); + var maxTorque = modelData.FullLoadCurves[0].MaxTorque; + for (uint i = 1; i < modelData.FullLoadCurves.Count; i++) { + if (!maxTorque.IsEqual(modelData.FullLoadCurves[i].MaxTorque, 1e-3.SI<NewtonMeter>())) { + limits.Add(new XElement(tns + XMLNames.Vehicle_TorqueLimits_Entry, + new XAttribute(XMLNames.Vehicle_TorqueLimits_Entry_Gear_Attr, i), + new XAttribute(XMLNames.Vehicle_TorqueLimits_Entry_MaxTorque_Attr, + modelData.FullLoadCurves[i].MaxTorque.ToXMLFormat(0)))); + } + } + + return limits.Count == 0 ? null : new XElement(tns + XMLNames.Vehicle_TorqueLimits, limits.Cast<object>().ToArray()); + } + + private XElement GetEngineDescription(CombustionEngineData engineData) + { + return new XElement(tns + XMLNames.Component_Engine, + GetCommonDescription(engineData), + new XElement(tns + XMLNames.Engine_RatedPower, engineData.RatedPowerDeclared.ToXMLFormat(0)), + new XElement(tns + XMLNames.Engine_IdlingSpeed, engineData.IdleSpeed.AsRPM.ToXMLFormat(0)), + new XElement(tns + XMLNames.Engine_RatedSpeed, engineData.RatedSpeedDeclared.AsRPM.ToXMLFormat(0)), + new XElement(tns + XMLNames.Engine_Displacement, + engineData.Displacement.ConvertTo().Cubic.Centi.Meter.ToXMLFormat(0)), + new XElement(tns + XMLNames.Engine_FuelType, engineData.FuelType.ToXMLFormat()) + ); + } + + private XElement GetGearboxDescription(GearboxData gearboxData) + { + return new XElement(tns + XMLNames.Component_Gearbox, + GetCommonDescription(gearboxData), + new XElement(tns + XMLNames.Gearbox_TransmissionType, gearboxData.Type.ToXMLFormat()), + new XElement(tns + "GearsCount", gearboxData.Gears.Count), + new XElement(tns + "TransmissionRatioFinalGear", gearboxData.Gears.Last().Value.Ratio.ToXMLFormat(3)) + ); + } + + private XElement GetTorqueConverterDescription(TorqueConverterData torqueConverterData) + { + if (torqueConverterData == null) { + return null; + } + return new XElement(tns + XMLNames.Component_TorqueConverter, + GetCommonDescription(torqueConverterData)); + } + + private XElement GetRetarderDescription(RetarderData retarder) + { + return new XElement(tns + XMLNames.Component_Retarder, + new XElement(tns + XMLNames.Vehicle_RetarderType, retarder.Type.ToXMLFormat()), + retarder.Type.IsDedicatedComponent() ? GetCommonDescription(retarder) : null); + } + + private object GetAngledriveDescription(AngledriveData angledriveData) + { + if (angledriveData == null) { + return null; + } + return new XElement(tns + XMLNames.Component_Angledrive, + GetCommonDescription(angledriveData), + new XElement(tns + XMLNames.AngleDrive_Ratio, angledriveData.Angledrive.Ratio)); + } + + private XElement GetAxlegearDescription(AxleGearData axleGearData) + { + return new XElement(tns + XMLNames.Component_Axlegear, + GetCommonDescription(axleGearData), + new XElement(tns + XMLNames.Axlegear_LineType, axleGearData.LineType.ToXMLFormat()), + new XElement(tns + XMLNames.Axlegear_Ratio, axleGearData.AxleGear.Ratio.ToXMLFormat(3))); + } + + private XElement GetAirDragDescription(AirdragData airdragData) + { + if (airdragData.CertificationMethod == CertificationMethod.StandardValues) { + return new XElement(tns + XMLNames.Component_AirDrag, + new XElement(tns + "CertificationMethod", airdragData.CertificationMethod.ToXMLFormat()), + new XElement(tns + "CdxA", airdragData.DeclaredAirdragArea.ToXMLFormat(2)) + ); + } + return new XElement(tns + XMLNames.Component_AirDrag, + new XElement(tns + XMLNames.Component_Model, airdragData.ModelName), + new XElement(tns + "CertificationMethod", airdragData.CertificationMethod.ToXMLFormat()), + new XElement(tns + "CertificationNumber", airdragData.CertificationNumber), + new XElement(tns + XMLNames.DI_Signature_Reference_DigestValue, airdragData.DigestValueInput), + new XElement(tns + "CdxA", airdragData.DeclaredAirdragArea.ToXMLFormat(2)) + ); + } + + private XElement GetAxleWheelsDescription(VehicleData vehicleData) + { + var retVal = new XElement(tns + XMLNames.Component_AxleWheels); + var axleData = vehicleData.AxleData; + for (var i = 0; i < axleData.Count; i++) { + if (axleData[i].AxleType == AxleType.Trailer) { + continue; + } + retVal.Add(GetAxleDescription(i + 1, axleData[i])); + } + + return retVal; + } + + private XElement GetAxleDescription(int i, Axle axle) + { + return new XElement(tns + XMLNames.AxleWheels_Axles_Axle, + new XAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, i), + new XElement(tns + "TyreDimension", axle.WheelsDimension), + new XElement(tns + "TyreCertificationNumber", axle.CertificationNumber), + new XElement(tns + "TyreRRCDeclared", axle.RollResistanceCoefficient.ToXMLFormat(4)), + new XElement(tns + XMLNames.AxleWheels_Axles_Axle_TwinTyres, axle.TwinTyres)); + } + + private XElement GetAuxiliariesDescription(IEnumerable<VectoRunData.AuxData> aux) + { + var auxData = aux.ToDictionary(a => a.ID); + var auxList = new[] { + AuxiliaryType.Fan, AuxiliaryType.SteeringPump, AuxiliaryType.ElectricSystem, AuxiliaryType.PneumaticSystem, + AuxiliaryType.HVAC + }; + var retVal = new XElement(tns + XMLNames.Component_Auxiliaries); + foreach (var auxId in auxList) { + foreach (var entry in auxData[auxId.Key()].Technology) { + retVal.Add(new XElement(tns + GetTagName(auxId), entry)); + } + } + return retVal; + } + + private string GetTagName(AuxiliaryType auxId) + { + return auxId.ToString() + "Technology"; + } + + private object[] GetCommonDescription(CombustionEngineData data) + { + return new object[] { + new XElement(tns + XMLNames.Component_Model, data.ModelName), + new XElement(tns + "CertificationNumber", data.CertificationNumber), + new XElement(tns + XMLNames.DI_Signature_Reference_DigestValue, data.DigestValueInput) + }; + } + + private object[] GetCommonDescription(SimulationComponentData data) + { + return new object[] { + new XElement(tns + XMLNames.Component_Model, data.ModelName), + new XElement(tns + "CertificationMethod", data.CertificationMethod.ToXMLFormat()), + data.CertificationMethod == CertificationMethod.StandardValues + ? null + : new XElement(tns + "CertificationNumber", data.CertificationNumber), + new XElement(tns + XMLNames.DI_Signature_Reference_DigestValue, data.DigestValueInput) + }; + } + + public void AddResult( + DeclarationReport<XMLDeclarationReport.ResultEntry>.ResultContainer<XMLDeclarationReport.ResultEntry> entry) + { + foreach (var resultEntry in entry.ModData) { + allSuccess &= resultEntry.Value.Status == VectoRun.Status.Success; + Results.Add(new XElement(tns + "Result", + new XAttribute("status", resultEntry.Value.Status.ToString().ToLower()), + new XElement(tns + "Mission", entry.Mission.ToXMLFormat()), + GetResults(resultEntry))); + } + } + + private object[] GetResults(KeyValuePair<LoadingType, XMLDeclarationReport.ResultEntry> resultEntry) + { + switch (resultEntry.Value.Status) { + case VectoRun.Status.Pending: + case VectoRun.Status.Running: + return null; // should not happen! + case VectoRun.Status.Success: + return GetSuccessResultEntry(resultEntry.Value); + case VectoRun.Status.Canceled: + case VectoRun.Status.Aborted: + return new object[] { + new XElement("Error", resultEntry.Value.Error), + new XElement("ErrorDetails", resultEntry.Value.StackTrace), + }; + default: + throw new ArgumentOutOfRangeException(); + } + } + + private object[] GetSuccessResultEntry(XMLDeclarationReport.ResultEntry result) + { + return new object[] { + new XElement(tns + "Distance", new XAttribute("unit", "km"), result.Distance.ToXMLFormat(1)), + new XElement(tns + "SimulationParameters", + new XElement(tns + "TotalVehicleMass", new XAttribute("unit", "kg"), result.TotalVehicleWeight.ToXMLFormat(0)), + new XElement(tns + "Payload", new XAttribute("unit", "kg"), result.Payload.ToXMLFormat(0)), + new XElement(tns + "FuelType", result.FuelType.ToXMLFormat()) + ), + new XElement(tns + "VehiclePerformance", + new XElement(tns + "AverageSpeed", new XAttribute("unit", "km/h"), result.AverageSpeed.AsKmph.ToXMLFormat(1)), + new XElement(tns + "MinSpeed", new XAttribute("unit", "km/h"), result.MinSpeed.AsKmph.ToXMLFormat(1)), + new XElement(tns + "MaxSpeed", new XAttribute("unit", "km/h"), result.MaxSpeed.AsKmph.ToXMLFormat(1)), + new XElement(tns + "MaxDeceleration", new XAttribute("unit", "m/s²"), result.MaxDeceleration.ToXMLFormat(2)), + new XElement(tns + "MaxAcceleration", new XAttribute("unit", "m/s²"), result.MaxAcceleration.ToXMLFormat(2)), + new XElement(tns + "FullLoadDrivingtimePercentage", result.FullLoadPercentage.ToXMLFormat(0)), + new XElement(tns + "GearshiftCount", result.GearshiftCount.ToXMLFormat(0)) + ), + //FC + new XElement(tns + "FuelConsumption", new XAttribute("unit", "g/km"), + (result.FuelConsumptionTotal.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter).ToXMLFormat(1)), + new XElement(tns + "FuelConsumption", new XAttribute("unit", "g/t-km"), + (result.FuelConsumptionTotal.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter / + result.Payload.ConvertTo().Ton).ToXMLFormat(1)), + new XElement(tns + "FuelConsumption", new XAttribute("unit", "g/m³-km"), + (result.FuelConsumptionTotal.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter / result.CargoVolume) + .ToXMLFormat(1)), + new XElement(tns + "FuelConsumption", new XAttribute("unit", "MJ/km"), + (result.EnergyConsumptionTotal / result.Distance.ConvertTo().Kilo.Meter / 1e6).ToXMLFormat(1)), + //CO2 + new XElement(tns + "CO2", new XAttribute("unit", "g/km"), + (result.CO2Total.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter).ToXMLFormat(1)), + new XElement(tns + "CO2", new XAttribute("unit", "g/t-km"), + (result.CO2Total.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter / + result.Payload.ConvertTo().Ton).ToXMLFormat(1)), + new XElement(tns + "CO2", new XAttribute("unit", "g/m³-km"), + (result.CO2Total.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter / result.CargoVolume) + .ToXMLFormat(1)), + }; + } + + private XElement GetApplicationInfo() + { + var vectodll = AssemblyName.GetAssemblyName("VectoCore.dll"); + return new XElement(tns + "ApplicationInformation", + new XElement(tns + "SimulationToolVersion", vectodll.Version), + new XElement(tns + "Date", XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc))); + } + + public XDocument Report + { + get { + var xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); + var retVal = new XDocument(); + var results = new XElement(Results); + results.AddFirst(new XElement(tns + "Status", allSuccess ? "success" : "error")); + var vehicle = new XElement(VehiclePart); + vehicle.Add(InputDataIntegrity); + retVal.Add(new XElement(tns + "VectoOutput", + new XAttribute("schemaVersion", "0.4"), + new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName), + new XAttribute("xmlns", tns), + new XAttribute(XNamespace.Xmlns + "di", di), + new XAttribute(xsi + "schemaLocation", + string.Format("{0} {1}VectoOutput.xsd", tns, AbstractXMLWriter.SchemaLocationBaseUrl)), + new XElement(tns + "Data", + vehicle, + results, + GetApplicationInfo()) + ) + ); + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + writer.Write(retVal); + writer.Flush(); + stream.Seek(0, SeekOrigin.Begin); + var h = VectoHash.Load(stream); + return h.AddHash(); + //return retVal; + } + } + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv b/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv index e8dba5ade9..44b2ad00f7 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,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 ,- ,- ,- ,- ,- ,- , , 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 +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_Default,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) ,- ,- ,- ,- ,- ,- ,- ,7.1 , , +1 ,Tractor ,4x2 ,7.5 ,10 ,1 ,3.6 ,85 ,B1 , , ,Truck.vacc, , ,RigidSolo , ,45/55 , , , , , , ,- ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- ,7.1 , , +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) ,- ,- ,- ,- ,- ,- ,- ,7.2 , , +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) ,- ,- ,- ,- ,- ,- ,- ,7.2 , , +1 ,RigidTruck ,4x2 ,12 ,16 ,3 ,3.9 ,85 ,B3 , , ,Truck.vacc, , ,RigidSolo , ,40/60 , , , , , , ,- ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- ,7.4 , , +1 ,Tractor ,4x2 ,12 ,16 ,3 ,3.9 ,85 ,B3 , , ,Truck.vacc, , ,RigidSolo , ,40/60 , , , , , , ,- ,- ,pc10(R)/pc50(R) ,- ,pc10(R)/pc50(R) ,- ,- ,- ,- ,- ,- ,- ,7.4 , , +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 ,- ,- ,- ,- ,- ,- ,8.4 , , 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 ,- ,- ,- ,- ,- ,- ,- ,- ,8.7 , , +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 ,- ,- ,- ,- ,- ,- ,8.5 , , 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 ,- ,- ,- ,- ,- ,- ,- ,- ,8.8 , , +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 ,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 ,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 ,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/Resources/XMLNames.resx b/VectoCore/VectoCore/Resources/XMLNames.resx deleted file mode 100644 index 8c810ec83d..0000000000 --- a/VectoCore/VectoCore/Resources/XMLNames.resx +++ /dev/null @@ -1,771 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<root> - <!-- - Microsoft ResX Schema - - Version 2.0 - - The primary goals of this format is to allow a simple XML format - that is mostly human readable. The generation and parsing of the - various data types are done through the TypeConverter classes - associated with the data types. - - Example: - - ... ado.net/XML headers & schema ... - <resheader name="resmimetype">text/microsoft-resx</resheader> - <resheader name="version">2.0</resheader> - <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> - <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> - <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> - <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> - <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> - <value>[base64 mime encoded serialized .NET Framework object]</value> - </data> - <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> - <comment>This is a comment</comment> - </data> - - There are any number of "resheader" rows that contain simple - name/value pairs. - - Each data row contains a name, and value. The row also contains a - type or mimetype. Type corresponds to a .NET class that support - text/value conversion through the TypeConverter architecture. - Classes that don't support this are serialized and stored with the - mimetype set. - - The mimetype is used for serialized objects, and tells the - ResXResourceReader how to depersist the object. This is currently not - extensible. For a given mimetype the value must be set accordingly: - - Note - application/x-microsoft.net.object.binary.base64 is the format - that the ResXResourceWriter will generate, however the reader can - read any of the formats listed below. - - mimetype: application/x-microsoft.net.object.binary.base64 - value : The object must be serialized with - : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.soap.base64 - value : The object must be serialized with - : System.Runtime.Serialization.Formatters.Soap.SoapFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.bytearray.base64 - value : The object must be serialized into a byte array - : using a System.ComponentModel.TypeConverter - : and then encoded with base64 encoding. - --> - <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> - <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> - <xsd:element name="root" msdata:IsDataSet="true"> - <xsd:complexType> - <xsd:choice maxOccurs="unbounded"> - <xsd:element name="metadata"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" /> - </xsd:sequence> - <xsd:attribute name="name" use="required" type="xsd:string" /> - <xsd:attribute name="type" type="xsd:string" /> - <xsd:attribute name="mimetype" type="xsd:string" /> - <xsd:attribute ref="xml:space" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="assembly"> - <xsd:complexType> - <xsd:attribute name="alias" type="xsd:string" /> - <xsd:attribute name="name" type="xsd:string" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="data"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> - <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> - <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> - <xsd:attribute ref="xml:space" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="resheader"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required" /> - </xsd:complexType> - </xsd:element> - </xsd:choice> - </xsd:complexType> - </xsd:element> - </xsd:schema> - <resheader name="resmimetype"> - <value>text/microsoft-resx</value> - </resheader> - <resheader name="version"> - <value>2.0</value> - </resheader> - <resheader name="reader"> - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <data name="VectoInputEngineering" xml:space="preserve"> - <value>VectoInputEngineering</value> - </data> - <data name="Component_Vehicle" xml:space="preserve"> - <value>Vehicle</value> - </data> - <data name="Vehicle_VehicleCategory" xml:space="preserve"> - <value>VehicleCategory</value> - </data> - <data name="Vehicle_AxleConfiguration" xml:space="preserve"> - <value>AxleConfiguration</value> - </data> - <data name="Vehicle_CurbWeightChassis" xml:space="preserve"> - <value>CurbWeightChassis</value> - </data> - <data name="Vehicle_GrossVehicleMass" xml:space="preserve"> - <value>GrossVehicleMass</value> - </data> - <data name="Vehicle_AirDragArea" xml:space="preserve"> - <value>CdxA</value> - </data> - <data name="Vehicle_SteeredAxles" xml:space="preserve"> - <value>SteeredAxles</value> - </data> - <data name="Vehicle_RetarderType" xml:space="preserve"> - <value>RetarderType</value> - </data> - <data name="Vehicle_AngledriveType" xml:space="preserve"> - <value>AngledriveType</value> - </data> - <data name="Vehicle_PTOType" xml:space="preserve"> - <value>PTOType</value> - </data> - <data name="Vehicle_Components" xml:space="preserve"> - <value>Components</value> - </data> - <data name="Vehicle_RetarderRatio" xml:space="preserve"> - <value>RetarderRatio</value> - </data> - <data name="Vehicle_CurbWeightExtra" xml:space="preserve"> - <value>CurbWeightExtra</value> - </data> - <data name="Vehicle_Loading" xml:space="preserve"> - <value>Loading</value> - </data> - <data name="Vehicle_CrossWindCorrectionMode" xml:space="preserve"> - <value>CrossWindCorrectionMode</value> - </data> - <data name="Vehicle_AdvancedDriverAssist" xml:space="preserve"> - <value>AdvancedDriverAssist</value> - </data> - <data name="Vehicle_AdvancedDriverAssist_EngineStartStop" xml:space="preserve"> - <value>EngineStartStop</value> - </data> - <data name="Vehicle_AdvancedDriverAssist_EngineStartStop_Enabled" xml:space="preserve"> - <value>Enabled</value> - </data> - <data name="Component_Engine" xml:space="preserve"> - <value>Engine</value> - </data> - <data name="ComponentDataWrapper" xml:space="preserve"> - <value>Data</value> - </data> - <data name="Engine_Displacement" xml:space="preserve"> - <value>Displacement</value> - </data> - <data name="Engine_IdlingSpeed" xml:space="preserve"> - <value>IdlingSpeed</value> - </data> - <data name="Engine_WHTCUrban" xml:space="preserve"> - <value>WHTCUrban</value> - </data> - <data name="Engine_WHTCRural" xml:space="preserve"> - <value>WHTCRural</value> - </data> - <data name="Engine_WHTCMotorway" xml:space="preserve"> - <value>WHTCMotorway</value> - </data> - <data name="Engine_ColdHotBalancingFactor" xml:space="preserve"> - <value>BFColdHot</value> - </data> - <data name="Engine_FuelConsumptionMap" xml:space="preserve"> - <value>FuelConsumptionMap</value> - </data> - <data name="Engine_FullLoadAndDragCurve" xml:space="preserve"> - <value>FullLoadAndDragCurve</value> - </data> - <data name="Component_Gearbox" xml:space="preserve"> - <value>Gearbox</value> - </data> - <data name="Gearbox_TransmissionType" xml:space="preserve"> - <value>TransmissionType</value> - </data> - <data name="Gearbox_Gear_Ratio" xml:space="preserve"> - <value>Ratio</value> - </data> - <data name="Gearbox_Gear_TorqueLossMap" xml:space="preserve"> - <value>TorqueLossMap</value> - </data> - <data name="AngleDrive_TorqueLossMap" xml:space="preserve"> - <value>TorqueLossMap</value> - </data> - <data name="Axlegear_TorqueLossMap" xml:space="preserve"> - <value>TorqueLossMap</value> - </data> - <data name="Axlegear_Ratio" xml:space="preserve"> - <value>Ratio</value> - </data> - <data name="AngleDrive_Ratio" xml:space="preserve"> - <value>Ratio</value> - </data> - <data name="Component_Angledrive" xml:space="preserve"> - <value>Angledrive</value> - </data> - <data name="Component_Retarder" xml:space="preserve"> - <value>Retarder</value> - </data> - <data name="Component_Axlegear" xml:space="preserve"> - <value>Axlegear</value> - </data> - <data name="Retarder_RetarderLossMap" xml:space="preserve"> - <value>RetarderLossMap</value> - </data> - <data name="Component_AxleWheels" xml:space="preserve"> - <value>AxleWheels</value> - </data> - <data name="AxleWheels_Axles_Axle" xml:space="preserve"> - <value>Axle</value> - </data> - <data name="AxleWheels_Axles" xml:space="preserve"> - <value>Axles</value> - </data> - <data name="AxleWheels_Axles_Axle_Dimension" xml:space="preserve"> - <value>Dimension</value> - </data> - <data name="AxleWheels_Axles_Axle_RRCISO" xml:space="preserve"> - <value>RRCISO</value> - </data> - <data name="AxleWheels_Axles_Axle_FzISO" xml:space="preserve"> - <value>FzISO</value> - </data> - <data name="AxleWheels_Axles_Axle_WeightShare" xml:space="preserve"> - <value>WeightShare</value> - </data> - <data name="AxleWheels_Axles_Axle_Inertia" xml:space="preserve"> - <value>Inertia</value> - </data> - <data name="AxleWheels_Axles_Axle_DynamicTyreRadius" xml:space="preserve"> - <value>DynamicTyreRadius</value> - </data> - <data name="VectoJob_EngineOnlyMode" xml:space="preserve"> - <value>EngineOnlyMode</value> - </data> - <data name="VectoJob_MissionCycles" xml:space="preserve"> - <value>MissionCycles</value> - </data> - <data name="Missions_Cycle" xml:space="preserve"> - <value>Cycle</value> - </data> - <data name="AngleDrive_Efficiency" xml:space="preserve"> - <value>Efficiency</value> - </data> - <data name="Axlegear_Efficiency" xml:space="preserve"> - <value>Efficiency</value> - </data> - <data name="Gearbox_Gear_Efficiency" xml:space="preserve"> - <value>Efficiency</value> - </data> - <data name="Gearbox_Gears_Gear" xml:space="preserve"> - <value>Gear</value> - </data> - <data name="Gearbox_Gears" xml:space="preserve"> - <value>Gears</value> - </data> - <data name="Gearbox_Gears_MaxTorque" xml:space="preserve"> - <value>MaxTorque</value> - </data> - <data name="Gearbox_Inertia" xml:space="preserve"> - <value>Inertia</value> - </data> - <data name="Engine_Inertia" xml:space="preserve"> - <value>Inertia</value> - </data> - <data name="Engine_WHTCEngineering" xml:space="preserve"> - <value>WHTCEngineering</value> - </data> - <data name="ExternalResource" xml:space="preserve"> - <value>Resource</value> - </data> - <data name="Component_TorqueConverter" xml:space="preserve"> - <value>TorqueConverter</value> - </data> - <data name="TorqueConverter_ReferenceRPM" xml:space="preserve"> - <value>ReferenceRPM</value> - </data> - <data name="TorqueConverter_Characteristics" xml:space="preserve"> - <value>Characteristics</value> - </data> - <data name="TorqueConverter_Inertia" xml:space="preserve"> - <value>Inertia</value> - </data> - <data name="Gearbox_TractionInterruption" xml:space="preserve"> - <value>TractionInterruption</value> - </data> - <data name="Gearbox_Gears_Gear_ShiftPolygon" xml:space="preserve"> - <value>ShiftPolygon</value> - </data> - <data name="TorqueConverter_ShiftPolygon" xml:space="preserve"> - <value>ShiftPolygon</value> - </data> - <data name="Component_DriverModel" xml:space="preserve"> - <value>DriverModel</value> - </data> - <data name="DriverModel_LookAheadCoasting" xml:space="preserve"> - <value>LookAheadCoasting</value> - </data> - <data name="DriverModel_LookAheadCoasting_Enabled" xml:space="preserve"> - <value>Enabled</value> - </data> - <data name="DriverModel_LookAheadCoasting_MinSpeed" xml:space="preserve"> - <value>MinSpeed</value> - </data> - <data name="DriverModel_LookAheadCoasting_PreviewDistanceFactor" xml:space="preserve"> - <value>PreviewDistanceFactor</value> - </data> - <data name="DriverModel_LookAheadCoasting_DecisionFactorOffset" xml:space="preserve"> - <value>DecisionFactorOffset</value> - </data> - <data name="DriverModel_LookAheadCoasting_DecisionFactorScaling" xml:space="preserve"> - <value>DecisionFactorScaling</value> - </data> - <data name="DriverModel_LookAheadCoasting_SpeedDependentDecisionFactor" xml:space="preserve"> - <value>SpeedDependentDecisionFactor</value> - </data> - <data name="DriverModel_LookAheadCoasting_VelocityDropDecisionFactor" xml:space="preserve"> - <value>VelocityDropDecisionFactor</value> - </data> - <data name="DriverModel_Overspeed" xml:space="preserve"> - <value>Overspeed</value> - </data> - <data name="DriverModel_Overspeed_Mode" xml:space="preserve"> - <value>Mode</value> - </data> - <data name="DriverModel_Overspeed_MinSpeed" xml:space="preserve"> - <value>MinSpeed</value> - </data> - <data name="DriverModel_Overspeed_AllowedOverspeed" xml:space="preserve"> - <value>AllowedOverspeed</value> - </data> - <data name="DriverModel_Overspeed_AllowedUnderspeed" xml:space="preserve"> - <value>AllowedUnderspeed</value> - </data> - <data name="DriverModel_DriverAccelerationCurve" xml:space="preserve"> - <value>DriverAccelerationCurve</value> - </data> - <data name="DriverModel_ShiftStrategyParameters" xml:space="preserve"> - <value>ShiftStrategyParameters</value> - </data> - <data name="DriverModel_ShiftStrategyParameters_UpshiftMinAcceleration" xml:space="preserve"> - <value>UpshiftMinAcceleration</value> - </data> - <data name="DriverModel_ShiftStrategyParameters_DownshiftAfterUpshiftDelay" xml:space="preserve"> - <value>DownshiftAfterUpshiftDelay</value> - </data> - <data name="DriverModel_ShiftStrategyParameters_UpshiftAfterDownshiftDelay" xml:space="preserve"> - <value>UpshiftAfterDownshiftDelay</value> - </data> - <data name="DriverModel_ShiftStrategyParameters_TorqueReserve" xml:space="preserve"> - <value>TorqueReserve</value> - </data> - <data name="DriverModel_ShiftStrategyParameters_TimeBetweenGearshift" xml:space="preserve"> - <value>TimeBetweenGearshift</value> - </data> - <data name="DriverModel_ShiftStrategyParameters_StartSpeed" xml:space="preserve"> - <value>StartSpeed</value> - </data> - <data name="DriverModel_ShiftStrategyParameters_StartAcceleration" xml:space="preserve"> - <value>StartAcceleration</value> - </data> - <data name="DriverModel_ShiftStrategyParameters_StartTorqueReserve" xml:space="preserve"> - <value>StartTorqueReserve</value> - </data> - <data name="VectoInputDeclaration" xml:space="preserve"> - <value>VectoInputDeclaration</value> - </data> - <data name="Auxiliaries_Auxiliary_ConstantAuxLoad" xml:space="preserve"> - <value>ConstantAuxLoad</value> - </data> - <data name="Auxiliaries_Auxiliary_TransmissionRatioToEngine" xml:space="preserve"> - <value>TransmissionRatioToEngine</value> - </data> - <data name="Auxiliaries_Auxiliary_EfficiencyToEngine" xml:space="preserve"> - <value>EfficiencyToEngine</value> - </data> - <data name="Auxiliaries_Auxiliary_EfficiencyAuxSupply" xml:space="preserve"> - <value>EfficiencyAuxSupply</value> - </data> - <data name="Auxiliaries_Auxiliary_AuxMap" xml:space="preserve"> - <value>AuxMap</value> - </data> - <data name="Auxiliaries_Auxiliary" xml:space="preserve"> - <value>Auxiliary</value> - </data> - <data name="Component_Auxiliaries" xml:space="preserve"> - <value>Auxiliaries</value> - </data> - <data name="Auxiliaries_Auxiliary_Technology" xml:space="preserve"> - <value>Technology</value> - </data> - <data name="VectoComponentEngineering" xml:space="preserve"> - <value>VectoComponentEngineering</value> - </data> - <data name="AxleWheels_Axles_Axle_AxleNumber_Attr" xml:space="preserve"> - <value>axleNumber</value> - </data> - <data name="AxleWheels_Axles_Axle_TwinTyres_Attr" xml:space="preserve"> - <value>TwinTyres</value> - </data> - <data name="AxleWheels_Axles_Axle_AxleType_Attr" xml:space="preserve"> - <value>AxleType</value> - </data> - <data name="Gearbox_Gear_GearNumber_Attr" xml:space="preserve"> - <value>number</value> - </data> - <data name="ExtResource_Type_Attr" xml:space="preserve"> - <value>type</value> - </data> - <data name="ExtResource_File_Attr" xml:space="preserve"> - <value>file</value> - </data> - <data name="ExtResource_Type_Value_CSV" xml:space="preserve"> - <value>csv</value> - </data> - <data name="ExtResource_Type_Value_XML" xml:space="preserve"> - <value>xml</value> - </data> - <data name="ExtResource_Component_Attr" xml:space="preserve"> - <value>component</value> - </data> - <data name="Auxiliaries_Auxiliary_ID_Attr" xml:space="preserve"> - <value>id</value> - </data> - <data name="Component_ID_Attr" xml:space="preserve"> - <value>id</value> - </data> - <data name="Vehicle_CrosswindCorrectionMap_VehicleSpeed_Attr" xml:space="preserve"> - <value>vehicleSpeed</value> - </data> - <data name="Vehicle_AccelerationCurve_MaxAcceleration_Attr" xml:space="preserve"> - <value>maxAcceleration</value> - </data> - <data name="Vehicle_AccelerationCurve_MaxDeceleration_Attr" xml:space="preserve"> - <value>maxDeceleration</value> - </data> - <data name="Engine_FuelConsumptionMap_EngineSpeed_Attr" xml:space="preserve"> - <value>engineSpeed</value> - </data> - <data name="Engine_EngineFullLoadCurve_EngineSpeed_Attr" xml:space="preserve"> - <value>engineSpeed</value> - </data> - <data name="Engine_FuelConsumptionMap_Torque_Attr" xml:space="preserve"> - <value>torque</value> - </data> - <data name="Engine_FuelConsumptionMap_FuelConsumption_Attr" xml:space="preserve"> - <value>fuelConsumption</value> - </data> - <data name="Engine_FullLoadCurve_MaxTorque_Attr" xml:space="preserve"> - <value>maxTorque</value> - </data> - <data name="Engine_FullLoadCurve_DragTorque_Attr" xml:space="preserve"> - <value>dragTorque</value> - </data> - <data name="Gear_ShiftPolygon_EngineTorque_Attr" xml:space="preserve"> - <value>engineTorque</value> - </data> - <data name="Gear_ShiftPolygonMapping_DownshiftSpeed_Attr" xml:space="preserve"> - <value>downshiftSpeed</value> - </data> - <data name="Gear_ShiftPolygonMapping_UpshiftSpeed_Attr" xml:space="preserve"> - <value>upshiftSpeed</value> - </data> - <data name="Aux_AuxMap_AuxiliarySpeed_Attr" xml:space="preserve"> - <value>auxiliarySpeed</value> - </data> - <data name="Aux_AuxMap_MechanicalPower_Attr" xml:space="preserve"> - <value>mechanicalPower</value> - </data> - <data name="Auxr_AuxMapMapping_SupplyPower_Attr" xml:space="preserve"> - <value>supplyPower</value> - </data> - <data name="Retarder_RetarderLossmap_RetarderSpeed_Attr" xml:space="preserve"> - <value>retarderSpeed</value> - </data> - <data name="Retarder_RetarderLossmap_TorqueLoss_Attr" xml:space="preserve"> - <value>torqueLoss</value> - </data> - <data name="TransmissionLossmap_TorqueLoss_Attr" xml:space="preserve"> - <value>torqueLoss</value> - </data> - <data name="TransmissionLossmap_InputSpeed_Attr" xml:space="preserve"> - <value>inputSpeed</value> - </data> - <data name="TransmissionLossmap_InputTorque_Attr" xml:space="preserve"> - <value>inputTorque</value> - </data> - <data name="TorqueConverterData_SpeedRatio_Attr" xml:space="preserve"> - <value>speedRatio</value> - </data> - <data name="TorqueConverterData_TorqueRatio_Attr" xml:space="preserve"> - <value>torqueRatio</value> - </data> - <data name="TorqueConverterDataMapping_InputTorqueRef_Attr" xml:space="preserve"> - <value>inputTorqueRef</value> - </data> - <data name="Driver_CoastingDFTargetSpeedLookupMapping_TargetVelocity_Attr" xml:space="preserve"> - <value>targetVelocity</value> - </data> - <data name="Driver_CoastingDFVelocityDropLookupMapping_VelocityDrop_Attr" xml:space="preserve"> - <value>velocityDrop</value> - </data> - <data name="Driver_CoastingDFTargetSpeedLookupMapping_DecisionFactor_Attr" xml:space="preserve"> - <value>decisionFactorVel</value> - </data> - <data name="Driver_CoastingDFVelocityDropLookupMapping_DecisionFactorDrop_Attr" xml:space="preserve"> - <value>decisionFactorDrop</value> - </data> - <data name="Component_Manufacturer" xml:space="preserve"> - <value>Manufacturer</value> - </data> - <data name="Component_Creator" xml:space="preserve"> - <value>Creator</value> - </data> - <data name="Component_Date" xml:space="preserve"> - <value>Date</value> - </data> - <data name="Component_Model" xml:space="preserve"> - <value>Model</value> - </data> - <data name="Component_CertificationNumber_Attr" xml:space="preserve"> - <value>certificationNumber</value> - </data> - <data name="Angledrive_LossMap_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="Axlegear_TorqueLossMap_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="Engine_FuelConsumptionMap_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="Engine_FullLoadCurve_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="Gearbox_Gear_TorqueLossMap_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="Retarder_RetarderLossMap_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="TorqueConverter_Characteristics_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="Vehicle_AdvancedDriverAssist_EngineStartStop_ActivationDelay" xml:space="preserve"> - <value>ActivationDelay</value> - </data> - <data name="Vehicle_AdvancedDriverAssist_EngineStartStop_MinOnTime" xml:space="preserve"> - <value>MinOnTime</value> - </data> - <data name="Vehicle_AdvancedDriverAssist_EngineStartStop_MaxSpeed" xml:space="preserve"> - <value>MaxSpeed</value> - </data> - <data name="DriverModel_DriverAccelerationCurve_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="LookAheadCoasting_SpeedDependentDecisionFactor_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="LookAheadCoasting_VelocityDropDecisionFactor_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="Gearbox_Gears_Gear_ShiftPolygon_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="TorqueConverter_ShiftPolygon_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="Vehicle_AccelerationCurve_VehicleSpeed_Attr" xml:space="preserve"> - <value>vehicleSpeed</value> - </data> - <data name="Vehicle_CrosswindCorrectionData" xml:space="preserve"> - <value>CrossWindCorrectionData</value> - </data> - <data name="Vehicle_CrosswindCorrectionData_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="Vehicle_CrosswindCorrectionMap_CdScalingFactor" xml:space="preserve"> - <value>CdScalingFactor</value> - </data> - <data name="Vehicle_CrosswindCorrectionMap_Beta" xml:space="preserve"> - <value>beta</value> - </data> - <data name="Vehicle_CrosswindCorrectionMap_DeltaCdxA" xml:space="preserve"> - <value>deltaCdxA</value> - </data> - <data name="Auxiliaries_Auxiliary_AuxMap_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="Vehicle_PTOIdleLossMap" xml:space="preserve"> - <value>PTOIdleLossMap</value> - </data> - <data name="Vehicle_PTOIdleLossMap_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="Vehicle_PTOIdleLossMap_EngineSpeed_Attr" xml:space="preserve"> - <value>engineSpeed</value> - </data> - <data name="Vehicle_PTOIdleLossMap_TorqueLoss_Attr" xml:space="preserve"> - <value>ptoTorqueLoss</value> - </data> - <data name="Vehicle_PTOCycle" xml:space="preserve"> - <value>PTOCycle</value> - </data> - <data name="Vehicle_PTOCycle_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="Vehicle_PTOCycle_Time_Attr" xml:space="preserve"> - <value>time</value> - </data> - <data name="Vehicle_PTOCycle_EngineSpeed_Attr" xml:space="preserve"> - <value>engineSpeed</value> - </data> - <data name="Vehicle_PTOCycle_Torque_Attr" xml:space="preserve"> - <value>torque</value> - </data> - <data name="Vehicle_CurbMassChassis" xml:space="preserve"> - <value>CurbMassChassis</value> - </data> - <data name="Vehicle_VIN" xml:space="preserve"> - <value>VIN</value> - </data> - <data name="AxleWheels_Axles_Axle_AxleType" xml:space="preserve"> - <value>AxleType</value> - </data> - <data name="AxleWheels_Axles_Axle_TwinTyres" xml:space="preserve"> - <value>TwinTyres</value> - </data> - <data name="AxleWheels_Axles_Axle_Steered" xml:space="preserve"> - <value>Steered</value> - </data> - <data name="AxleWheels_Axles_Axle_Tyre" xml:space="preserve"> - <value>Tyre</value> - </data> - <data name="Component_AirDrag" xml:space="preserve"> - <value>AirDrag</value> - </data> - <data name="AirDrag_DeclaredCdxA" xml:space="preserve"> - <value>DeclaredCdxA</value> - </data> - <data name="Vehicle_CurbMassExtra" xml:space="preserve"> - <value>CurbMassExtra</value> - </data> - <data name="Component_TechnicalReportId" xml:space="preserve"> - <value>TechnicalReportId</value> - </data> - <data name="AxleWheels_Axles_Axle_RRCDeclared" xml:space="preserve"> - <value>RRCDeclared</value> - </data> - <data name="Component_AppVersion" xml:space="preserve"> - <value>AppVersion</value> - </data> - <data name="Component_CertificationMethod" xml:space="preserve"> - <value>CertificationMethod</value> - </data> - <data name="Component_Gearbox_CertificationMethod" xml:space="preserve"> - <value>MainCertificationMethod</value> - </data> - <data name="Engine_RatedSpeed" xml:space="preserve"> - <value>RatedSpeed</value> - </data> - <data name="Engine_RatedPower" xml:space="preserve"> - <value>RatedPower</value> - </data> - <data name="Engine_MaxTorque" xml:space="preserve"> - <value>MaxEngineTorque</value> - </data> - <data name="Engine_FuelType" xml:space="preserve"> - <value>FuelType</value> - </data> - <data name="Engine_CorrecionFactor_NCV" xml:space="preserve"> - <value>CFNCV</value> - </data> - <data name="Engine_CorrectionFactor_RegPer" xml:space="preserve"> - <value>CFRegPer</value> - </data> - <data name="Vehicle_PTO" xml:space="preserve"> - <value>PTO</value> - </data> - <data name="Vehicle_PTO_ShaftsGearWheels" xml:space="preserve"> - <value>PTOShaftsGearWheels</value> - </data> - <data name="Vehicle_PTO_OtherElements" xml:space="preserve"> - <value>PTOOtherElements</value> - </data> - <data name="Vehicle_IdlingSpeed" xml:space="preserve"> - <value>IdlingSpeed</value> - </data> - <data name="Vehicle_LegislativeClass" xml:space="preserve"> - <value>LegislativeClass</value> - </data> - <data name="DI_Signature" xml:space="preserve"> - <value>Signature</value> - </data> - <data name="DI_Signature_Reference" xml:space="preserve"> - <value>Reference</value> - </data> - <data name="DI_Signature_Reference_URI_Attr" xml:space="preserve"> - <value>URI</value> - </data> - <data name="DI_Signature_Reference_Transforms" xml:space="preserve"> - <value>Transforms</value> - </data> - <data name="DI_Signature_Reference_Transforms_Transform" xml:space="preserve"> - <value>Transform</value> - </data> - <data name="DI_Signature_Algorithm_Attr" xml:space="preserve"> - <value>Algorithm</value> - </data> - <data name="DI_Signature_Reference_DigestMethod" xml:space="preserve"> - <value>DigestMethod</value> - </data> - <data name="DI_Signature_Reference_DigestValue" xml:space="preserve"> - <value>DigestValue</value> - </data> - <data name="Component_ManufacturerAddress" xml:space="preserve"> - <value>ManufacturerAddress</value> - </data> - <data name="Vehicle_TorqueLimits" xml:space="preserve"> - <value>TorqueLimits</value> - </data> - <data name="Vehicle_TorqueLimits_Entry_Gear_Attr" xml:space="preserve"> - <value>gear</value> - </data> - <data name="Vehicle_TorqueLimits_Entry_MaxTorque_Attr" xml:space="preserve"> - <value>maxTorque</value> - </data> - <data name="Vehicle_TorqueLimits_Entry" xml:space="preserve"> - <value>Entry</value> - </data> - <data name="Gearbox_Gear_MaxSpeed" xml:space="preserve"> - <value>MaxSpeed</value> - </data> -</root> \ No newline at end of file diff --git a/VectoCore/VectoCore/Resources/XSD/VectoCOC.xsd b/VectoCore/VectoCore/Resources/XSD/VectoCOC.xsd index 7dc7b26960..a3294f7311 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoCOC.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoCOC.xsd @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSpy v2016 rel. 2 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) --> <!--W3C XML Schema generated by XMLSpy vXMLSpy Professional Edition v2016 rel. 2 (x64) (http://www.altova.com)--> -<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.2" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1"> +<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:COCOutput:v0.4" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" targetNamespace="urn:tugraz:ivt:VectoAPI:COCOutput:v0.4" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.4"> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" schemaLocation="VectoDeclarationDefinitions.0.8.xsd"/> <xs:element name="VectoCustomerInformation"> <xs:annotation> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutput.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutput.xsd index 445585b87c..ff024ed8cb 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoOutput.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoOutput.xsd @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSpy v2016 rel. 2 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) --> <!--W3C XML Schema generated by XMLSpy vXMLSpy Professional Edition v2016 rel. 2 (x64) (http://www.altova.com)--> -<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.2" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1"> +<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.4"> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" schemaLocation="VectoDeclarationDefinitions.0.8.xsd"/> <xs:element name="VectoOutput"> <xs:annotation> @@ -62,100 +62,101 @@ </xs:complexContent> </xs:complexType> <xs:complexType name="GearboxType"> - <xs:complexContent> - <xs:extension base="ComponentDescriptionType"> - <xs:sequence> - <xs:element name="MainCertificationMethod" type="vdecdef:GearboxCertificationOptionType"> - <xs:annotation> - <xs:documentation>P154</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="TransmissionType" type="vdecdef:GearboxTransmissionTypeType"> - <xs:annotation> - <xs:documentation>P076</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="GearsCount"> - <xs:annotation> - <xs:documentation>P199</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:int"> - <xs:minInclusive value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="TransmissionRatioFinalGear" type="vdecdef:GearboxGearRatioType"> - <xs:annotation> - <xs:documentation>P078</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> + <xs:sequence> + <xs:element name="Model" type="vdecdef:ModelType"/> + <xs:element name="CertificationMethod" type="vdecdef:GearboxCertificationOptionType"> + <xs:annotation> + <xs:documentation>P154</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/> + <xs:element name="DigestValue" type="xs:token"/> + <xs:element name="TransmissionType" type="vdecdef:GearboxTransmissionTypeType"> + <xs:annotation> + <xs:documentation>P076</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="GearsCount"> + <xs:annotation> + <xs:documentation>P199</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="TransmissionRatioFinalGear" type="vdecdef:GearboxGearRatioType"> + <xs:annotation> + <xs:documentation>P078</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> </xs:complexType> <xs:complexType name="RetarderType"> - <xs:complexContent> - <xs:extension base="ComponentDescriptionType"> - <xs:sequence> - <xs:element name="CertificationMethod" type="vdecdef:RetarderCertificationOptionType"> - <xs:annotation> - <xs:documentation>P255</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> + <xs:sequence> + <xs:element name="RetarderType" type="vdecdef:RetarderTypeType"> + <xs:annotation> + <xs:documentation>P052</xs:documentation> + </xs:annotation> + </xs:element> + <xs:sequence minOccurs="0"> + <xs:element name="Model" type="vdecdef:ModelType"/> + <xs:element name="CertificationMethod" type="vdecdef:RetarderCertificationOptionType"> + <xs:annotation> + <xs:documentation>P255</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/> + <xs:element name="DigestValue" type="xs:token"/> + </xs:sequence> + </xs:sequence> </xs:complexType> <xs:complexType name="AngledriveType"> - <xs:complexContent> - <xs:extension base="ComponentDescriptionType"> - <xs:sequence> - <xs:element name="CertificationMethod" type="vdecdef:AngledriveCertificationOptionType"> - <xs:annotation> - <xs:documentation>P258</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Ratio" type="vdecdef:AngledriveRatioType"> - <xs:annotation> - <xs:documentation>P176</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> + <xs:sequence> + <xs:element name="Model" type="vdecdef:ModelType"/> + <xs:element name="CertificationMethod" type="vdecdef:AngledriveCertificationOptionType"> + <xs:annotation> + <xs:documentation>P258</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/> + <xs:element name="DigestValue" type="xs:token"/> + <xs:element name="Ratio" type="vdecdef:AngledriveRatioType"> + <xs:annotation> + <xs:documentation>P176</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> </xs:complexType> <xs:complexType name="AxlegearType"> - <xs:complexContent> - <xs:extension base="ComponentDescriptionType"> - <xs:sequence> - <xs:element name="CertificationMethod" type="vdecdef:AxlegearCertificationOptionType"> - <xs:annotation> - <xs:documentation>P256</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="LineType" type="vdecdef:AxlegearLineTypeType"> - <xs:annotation> - <xs:documentation>P253</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Ratio" type="vdecdef:AxlegearRatioType"> - <xs:annotation> - <xs:documentation>P150</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> + <xs:sequence> + <xs:element name="Model" type="vdecdef:ModelType"/> + <xs:element name="CertificationMethod" type="vdecdef:AxlegearCertificationOptionType"> + <xs:annotation> + <xs:documentation>P256</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/> + <xs:element name="DigestValue" type="xs:token"/> + <xs:element name="LineType" type="vdecdef:AxlegearLineTypeType"> + <xs:annotation> + <xs:documentation>P253</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Ratio" type="vdecdef:AxlegearRatioType"> + <xs:annotation> + <xs:documentation>P150</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> </xs:complexType> <xs:complexType name="AirdragType"> <xs:sequence> - <xs:sequence minOccurs="0"> - <xs:element name="Model"/> - <xs:element name="CertificationNumber"/> - <xs:element name="DigestValue"/> - </xs:sequence> + <xs:element name="Model" minOccurs="0"/> <xs:element name="CertificationMethod" type="AirdragCertificationOptionType"/> + <xs:element name="CertificationNumber" minOccurs="0"/> + <xs:element name="DigestValue" minOccurs="0"/> <xs:element name="CdxA" type="vdecdef:AirdragCdxAType"> <xs:annotation> <xs:documentation>P245</xs:documentation> @@ -180,7 +181,7 @@ <xs:documentation>P046</xs:documentation> </xs:annotation> </xs:element> - <xs:element name="TwinTyre" type="vdecdef:AxleTwinTyresType"> + <xs:element name="TwinTyres" type="vdecdef:AxleTwinTyresType"> <xs:annotation> <xs:documentation>P045</xs:documentation> </xs:annotation> @@ -206,16 +207,7 @@ </xs:annotation> <xs:complexType> <xs:simpleContent> - <xs:extension base="vdecdef:AuxSPTechnologyType"> - <xs:attribute name="axleNumber" use="required"> - <xs:simpleType> - <xs:restriction base="xs:int"> - <xs:minInclusive value="1"/> - <xs:maxInclusive value="4"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:extension> + <xs:extension base="vdecdef:AuxSPTechnologyType"/> </xs:simpleContent> </xs:complexType> </xs:element> @@ -285,32 +277,28 @@ <xs:documentation>P038</xs:documentation> </xs:annotation> </xs:element> - <xs:element name="RetarderType" type="vdecdef:RetarderTypeType"> - <xs:annotation> - <xs:documentation>P052</xs:documentation> - </xs:annotation> - </xs:element> <xs:element name="PTO" type="xs:boolean"> <xs:annotation> <xs:documentation>P247</xs:documentation> </xs:annotation> </xs:element> - <xs:element name="TorqueLimits" type="TorqueLimitsType"/> + <xs:element name="TorqueLimits" type="TorqueLimitsType" minOccurs="0"/> <xs:element name="Components"> <xs:complexType> <xs:sequence> <xs:element name="Engine" type="EngineType"/> <xs:element name="Gearbox" type="GearboxType"/> <xs:element name="Torqueconverter" type="TorqueconverterType" minOccurs="0"/> - <xs:element name="Retarder" type="RetarderType" minOccurs="0"/> + <xs:element name="Retarder" type="RetarderType"/> <xs:element name="Angledrive" type="AngledriveType" minOccurs="0"/> <xs:element name="Axlegear" type="AxlegearType"/> - <xs:element name="Airdrag" type="AirdragType"/> + <xs:element name="AirDrag" type="AirdragType"/> <xs:element name="AxleWheels" type="AxleWheelsType"/> <xs:element name="Auxiliaries" type="AuxiliariesType"/> </xs:sequence> </xs:complexType> </xs:element> + <xs:element name="InputDataSignature" type="vdecdef:SignatureType"/> </xs:sequence> </xs:complexType> <xs:complexType name="SimulationParametersType"> @@ -391,13 +379,12 @@ </xs:restriction> </xs:simpleType> </xs:element> - <xs:element name="GearShiftCount" type="xs:int"/> + <xs:element name="GearshiftCount" type="xs:int"/> </xs:sequence> </xs:complexType> <xs:complexType name="VectoOutputDataType"> <xs:sequence> <xs:element name="Vehicle" type="VehicleType"/> - <xs:element name="InputDataSignature" type="vdecdef:SignatureType"/> <xs:element name="Results"> <xs:complexType> <xs:sequence> @@ -535,16 +522,15 @@ </xs:attribute> </xs:complexType> <xs:complexType name="TorqueconverterType"> - <xs:complexContent> - <xs:extension base="ComponentDescriptionType"> - <xs:sequence> - <xs:element name="CertificationMethod" type="vdecdef:TorqueConverterCertificationOptionType"> - <xs:annotation> - <xs:documentation>P257</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> + <xs:sequence> + <xs:element name="Model" type="vdecdef:ModelType"/> + <xs:element name="CertificationMethod" type="vdecdef:TorqueConverterCertificationOptionType"> + <xs:annotation> + <xs:documentation>P257</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/> + <xs:element name="DigestValue" type="xs:token"/> + </xs:sequence> </xs:complexType> </xs:schema> diff --git a/VectoCore/VectoCore/Utils/XPathHelper.cs b/VectoCore/VectoCore/Utils/XPathHelper.cs index 040e43e499..42c1485904 100644 --- a/VectoCore/VectoCore/Utils/XPathHelper.cs +++ b/VectoCore/VectoCore/Utils/XPathHelper.cs @@ -22,7 +22,7 @@ namespace TUGraz.VectoCore.Utils { return string.Join("/", xpathSections.Select( - x => string.IsNullOrWhiteSpace(x) || x.Equals("..") || x.Contains(":") || x.StartsWith("@") ? x : NSPrefix(x))) + x => string.IsNullOrWhiteSpace(x) || x.StartsWith("..") || x.Contains(":") || x.StartsWith("@") ? x : NSPrefix(x))) ; } diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index d6779dd357..8588ecb4ff 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -193,11 +193,7 @@ <Compile Include="OutputData\XML\XMLDeclarationReport.cs" /> <Compile Include="OutputData\XML\XMLDeclarationWriter.cs" /> <Compile Include="OutputData\XML\XMLEngineeringWriter.cs" /> - <Compile Include="Resources\XMLNames.Designer.cs"> - <AutoGen>True</AutoGen> - <DesignTime>True</DesignTime> - <DependentUpon>XMLNames.resx</DependentUpon> - </Compile> + <Compile Include="OutputData\XML\XMLFullReport.cs" /> <Compile Include="Utils\ProviderExtensions.cs" /> <Compile Include="Models\Declaration\AirDrag.cs" /> <Compile Include="Models\Declaration\Fan.cs" /> @@ -340,11 +336,6 @@ <Compile Include="Utils\XPathHelper.cs" /> </ItemGroup> <ItemGroup> - <EmbeddedResource Include="Resources\XMLNames.resx"> - <SubType>Designer</SubType> - <Generator>PublicResXFileCodeGenerator</Generator> - <LastGenOutput>XMLNames.Designer.cs</LastGenOutput> - </EmbeddedResource> <None Include="app.config" /> <None Include="packages.config" /> <EmbeddedResource Include="JsonKeys.resx"> @@ -455,6 +446,10 @@ <Project>{79a066ad-69a9-4223-90f6-6ed5d2d084f4}</Project> <Name>VectoCommon</Name> </ProjectReference> + <ProjectReference Include="..\..\VectoCommon\VectoHashing\VectoHashing.csproj"> + <Project>{B673E12F-D323-4C4C-8805-9915B2C72D3D}</Project> + <Name>VectoHashing</Name> + </ProjectReference> </ItemGroup> <ItemGroup /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> diff --git a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs index 3797a8a9bd..c7299426ed 100644 --- a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs +++ b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs @@ -91,11 +91,13 @@ namespace TUGraz.VectoCore.Tests.Integration } var vehicleData = CreateVehicleData(3300.SI<Kilogram>()); + var airdragData = CreateAirdragData(); var driverData = CreateDriverData(AccelerationFile, overspeed); var runData = new VectoRunData() { AxleGearData = axleGearData, VehicleData = vehicleData, + AirdragData = airdragData, GearboxData = gearboxData, EngineData = engineData, JobName = modFileName, @@ -109,7 +111,7 @@ namespace TUGraz.VectoCore.Tests.Integration var cycle = new DistanceBasedDrivingCycle(container, cycleData); var engine = new CombustionEngine(container, engineData); var tmp = cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy())) - .AddComponent(new Vehicle(container, vehicleData)) + .AddComponent(new Vehicle(container, vehicleData, airdragData)) .AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia)) .AddComponent(new Brakes(container)) .AddComponent(new AxleGear(container, axleGearData)) @@ -202,12 +204,6 @@ namespace TUGraz.VectoCore.Tests.Integration }; return new VehicleData { AxleConfiguration = AxleConfiguration.AxleConfig_4x2, - //AerodynamicDragAera = 3.2634.SI<SquareMeter>(), - //CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection, - CrossWindCorrectionCurve = - new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), - CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()), - CrossWindCorrectionMode.NoCorrection), CurbWeight = 11500.SI<Kilogram>(), Loading = loading, DynamicTyreRadius = 0.465.SI<Meter>(), @@ -216,6 +212,17 @@ namespace TUGraz.VectoCore.Tests.Integration }; } + private static AirdragData CreateAirdragData() + { + return new AirdragData() { + CrossWindCorrectionCurve = + new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), + CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()), + CrossWindCorrectionMode.NoCorrection), + }; + } + + private static DriverData CreateDriverData(string accelerationFile, bool overspeed = false) { return new DriverData { diff --git a/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs b/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs index 3bfa4573d4..c33dbba6e9 100644 --- a/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs +++ b/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs @@ -75,7 +75,10 @@ namespace TUGraz.VectoCore.Tests.Integration bool highEnginePower = true) { var fileWriter = new FileOutputWriter(modFileName); - var modData = new ModalDataContainer(modFileName, FuelType.DieselCI, fileWriter) { WriteAdvancedAux = true, WriteModalResults = true }; + var modData = new ModalDataContainer(modFileName, FuelType.DieselCI, fileWriter) { + WriteAdvancedAux = true, + WriteModalResults = true + }; var container = new VehicleContainer(ExecutionMode.Engineering, modData) { RunData = new VectoRunData { JobName = modFileName, Cycle = cycleData } }; @@ -85,6 +88,7 @@ namespace TUGraz.VectoCore.Tests.Integration gearboxData.Gears.Count); var axleGearData = CreateAxleGearData(); var vehicleData = CreateVehicleData(3300.SI<Kilogram>()); + var airdragData = CreateAirdragData(); var driverData = CreateDriverData(AccelerationFile, overspeed); var cycle = new DistanceBasedDrivingCycle(container, cycleData); @@ -93,12 +97,13 @@ namespace TUGraz.VectoCore.Tests.Integration var runData = new VectoRunData() { AxleGearData = axleGearData, VehicleData = vehicleData, + AirdragData = airdragData, GearboxData = gearboxData, EngineData = engineData }; cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy())) - .AddComponent(new Vehicle(container, vehicleData)) + .AddComponent(new Vehicle(container, vehicleData, airdragData)) .AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia)) .AddComponent(new Brakes(container)) .AddComponent(new AxleGear(container, axleGearData)) @@ -182,12 +187,6 @@ namespace TUGraz.VectoCore.Tests.Integration }; return new VehicleData { AxleConfiguration = AxleConfiguration.AxleConfig_6x2, - //AerodynamicDragAera = 3.2634.SI<SquareMeter>(), - //CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection, - CrossWindCorrectionCurve = - new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), - CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()), - CrossWindCorrectionMode.NoCorrection), CurbWeight = 15700.SI<Kilogram>(), Loading = loading, DynamicTyreRadius = 0.52.SI<Meter>(), @@ -196,6 +195,16 @@ namespace TUGraz.VectoCore.Tests.Integration }; } + private static AirdragData CreateAirdragData() + { + return new AirdragData() { + CrossWindCorrectionCurve = + new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), + CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()), + CrossWindCorrectionMode.NoCorrection), + }; + } + private static DriverData CreateDriverData(string accelerationFile, bool overspeed = false) { return new DriverData { diff --git a/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs index dce0151e0f..abb2aae21b 100644 --- a/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs +++ b/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs @@ -93,16 +93,18 @@ namespace TUGraz.VectoCore.Tests.Integration var cycle = new DistanceBasedDrivingCycle(container, cycleData); var engine = new CombustionEngine(container, engineData); var clutch = new Clutch(container, engineData); + var airDragData = CreateAirdragData(); var runData = new VectoRunData() { VehicleData = vehicleData, AxleGearData = axleGearData, GearboxData = gearboxData, - EngineData = engineData + EngineData = engineData, + AirdragData = airDragData }; var tmp = cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy())) - .AddComponent(new Vehicle(container, vehicleData)) + .AddComponent(new Vehicle(container, vehicleData, airDragData)) .AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia)) .AddComponent(new Brakes(container)) .AddComponent(new AxleGear(container, axleGearData)) @@ -189,9 +191,7 @@ namespace TUGraz.VectoCore.Tests.Integration AxleConfiguration = AxleConfiguration.AxleConfig_6x2, //AerodynamicDragAera = 3.2634.SI<SquareMeter>(), //CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection, - CrossWindCorrectionCurve = - new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()), - CrossWindCorrectionMode.NoCorrection), + CurbWeight = 15700.SI<Kilogram>(), Loading = loading, DynamicTyreRadius = 0.52.SI<Meter>(), @@ -200,6 +200,15 @@ namespace TUGraz.VectoCore.Tests.Integration }; } + private static AirdragData CreateAirdragData() + { + return new AirdragData() { + CrossWindCorrectionCurve = + new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()), + CrossWindCorrectionMode.NoCorrection), + }; + } + private static DriverData CreateDriverData(string accelerationFile, bool overspeed = false) { return new DriverData { diff --git a/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs b/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs index 0fe65c037d..02a975cb56 100644 --- a/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs +++ b/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs @@ -80,6 +80,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns var axleGearData = CreateAxleGearData(); var vehicleData = CreateVehicleData(3300.SI<Kilogram>()); var driverData = CreateDriverData(AccelerationFile); + var airDragData = CreateAirdragData(); var cycle = new DistanceBasedDrivingCycle(container, cycleData); var cyclePort = cycle.OutPort(); @@ -88,11 +89,12 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns EngineData = engineData, AxleGearData = axleGearData, GearboxData = gearboxData, - VehicleData = vehicleData + VehicleData = vehicleData, + AirdragData = airDragData }; cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy())) - .AddComponent(new Vehicle(container, vehicleData)) + .AddComponent(new Vehicle(container, vehicleData,airDragData)) .AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia)) .AddComponent(new Brakes(container)) .AddComponent(new AxleGear(container, axleGearData)) @@ -143,6 +145,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns var axleGearData = CreateAxleGearData(); var vehicleData = CreateVehicleData(3300.SI<Kilogram>()); var driverData = CreateDriverData(AccelerationFile); + var airDragData = CreateAirdragData(); var cycle = new DistanceBasedDrivingCycle(container, cycleData); @@ -150,12 +153,13 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns EngineData = engineData, VehicleData = vehicleData, AxleGearData = axleGearData, - GearboxData = gearboxData + GearboxData = gearboxData, + AirdragData = airDragData }; var cyclePort = cycle.OutPort(); cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy())) - .AddComponent(new Vehicle(container, vehicleData)) + .AddComponent(new Vehicle(container, vehicleData,airDragData)) .AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia)) .AddComponent(new Brakes(container)) .AddComponent(new AxleGear(container, axleGearData)) @@ -220,19 +224,21 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns var cycleData = DrivingCycleDataReader.ReadFromFile(CycleFile, CycleType.DistanceBased, false); var axleGearData = CreateAxleGearData(); var vehicleData = CreateVehicleData(3300.SI<Kilogram>()); + var airDragData = CreateAirdragData(); var driverData = CreateDriverData(AccelerationFile); var runData = new VectoRunData() { EngineData = engineData, VehicleData = vehicleData, AxleGearData = axleGearData, - GearboxData = gearboxData + GearboxData = gearboxData, + AirdragData = airDragData }; var cycle = new DistanceBasedDrivingCycle(container, cycleData); var cyclePort = cycle.OutPort(); cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy())) - .AddComponent(new Vehicle(container, vehicleData)) + .AddComponent(new Vehicle(container, vehicleData, airDragData)) .AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia)) .AddComponent(new Brakes(container)) .AddComponent(new AxleGear(container, axleGearData)) @@ -399,10 +405,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns }; return new VehicleData { AxleConfiguration = AxleConfiguration.AxleConfig_6x2, - CrossWindCorrectionCurve = - new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), - CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()), - CrossWindCorrectionMode.NoCorrection), + CurbWeight = 15700.SI<Kilogram>(), Loading = loading, DynamicTyreRadius = 0.52.SI<Meter>(), @@ -411,6 +414,15 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns }; } + private static AirdragData CreateAirdragData() + { + return new AirdragData(){ + CrossWindCorrectionCurve = + new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), + CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()), + CrossWindCorrectionMode.NoCorrection),}; + } + private static DriverData CreateDriverData(string accelerationFile) { return new DriverData { diff --git a/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs b/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs index 84d54158c3..03ce3ed327 100644 --- a/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs +++ b/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs @@ -80,7 +80,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns var driver = new Driver(container, driverData, new DefaultDriverStrategy()); var engine = new CombustionEngine(container, engineData); - driver.AddComponent(new Vehicle(container, vehicleData)) + driver.AddComponent(new Vehicle(container, vehicleData, CreateAirdragData())) .AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia)) .AddComponent(new AxleGear(container, axleGearData)) .AddComponent(new Clutch(container, engineData)) @@ -127,7 +127,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns var cycle = new DistanceBasedDrivingCycle(container, cycleData); cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy())) - .AddComponent(new Vehicle(container, vehicleData)) + .AddComponent(new Vehicle(container, vehicleData, CreateAirdragData())) .AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia)) .AddComponent(new Brakes(container)) .AddComponent(new AxleGear(container, axleGearData)) @@ -198,7 +198,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns var cycle = new DistanceBasedDrivingCycle(container, cycleData); cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy())) - .AddComponent(new Vehicle(container, vehicleData)) + .AddComponent(new Vehicle(container, vehicleData, CreateAirdragData())) .AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia)) .AddComponent(new Brakes(container)) .AddComponent(new AxleGear(container, axleGearData)) @@ -275,10 +275,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns }; return new VehicleData { AxleConfiguration = AxleConfiguration.AxleConfig_6x2, - CrossWindCorrectionCurve = - new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), - CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()), - CrossWindCorrectionMode.NoCorrection), + CurbWeight = 15700.SI<Kilogram>(), Loading = loading, DynamicTyreRadius = 0.52.SI<Meter>(), @@ -287,6 +284,16 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns }; } + private static AirdragData CreateAirdragData() + { + return new AirdragData() { + CrossWindCorrectionCurve = + new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), + CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()), + CrossWindCorrectionMode.NoCorrection), + }; + } + private static DriverData CreateDriverData(string accelerationFile) { return new DriverData { diff --git a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs index 00b8cab64b..e1b97d5278 100644 --- a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs +++ b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs @@ -85,7 +85,9 @@ namespace TUGraz.VectoCore.Tests.Integration Kilogram massExtra, Kilogram loading, bool overspeed = false, GearboxType gbxType = GearboxType.AMT) { var fileWriter = new FileOutputWriter(modFileName); - var modData = new ModalDataContainer(Path.GetFileName(modFileName), FuelType.DieselCI, fileWriter) { WriteModalResults = true }; + var modData = new ModalDataContainer(Path.GetFileName(modFileName), FuelType.DieselCI, fileWriter) { + WriteModalResults = true + }; var container = new VehicleContainer(ExecutionMode.Engineering, modData) { RunData = new VectoRunData { JobName = modFileName, Cycle = cycleData } }; @@ -94,6 +96,7 @@ namespace TUGraz.VectoCore.Tests.Integration var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile, gearboxData.Gears.Count); var axleGearData = CreateAxleGearData(); var vehicleData = CreateVehicleData(massExtra, loading); + var airdragData = CreateAirdragData(); var driverData = CreateDriverData(AccelerationFile, overspeed); var cycle = new DistanceBasedDrivingCycle(container, cycleData); @@ -103,6 +106,7 @@ namespace TUGraz.VectoCore.Tests.Integration var runData = new VectoRunData() { EngineData = engineData, VehicleData = vehicleData, + AirdragData = airdragData, AxleGearData = axleGearData, GearboxData = gearboxData }; @@ -120,7 +124,7 @@ namespace TUGraz.VectoCore.Tests.Integration } dynamic tmp = cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy())) - .AddComponent(new Vehicle(container, vehicleData)) + .AddComponent(new Vehicle(container, vehicleData, airdragData)) .AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia)) .AddComponent(new Brakes(container)) .AddComponent(new AxleGear(container, axleGearData)) @@ -218,12 +222,6 @@ namespace TUGraz.VectoCore.Tests.Integration }; return new VehicleData { AxleConfiguration = AxleConfiguration.AxleConfig_4x2, - //AerodynamicDragAera = 6.2985.SI<SquareMeter>(), - //CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection, - CrossWindCorrectionCurve = - new CrosswindCorrectionCdxALookup(6.2985.SI<SquareMeter>(), - CrossWindCorrectionCurveReader.GetNoCorrectionCurve(6.2985.SI<SquareMeter>()), - CrossWindCorrectionMode.NoCorrection), CurbWeight = 7100.SI<Kilogram>() + massExtra, Loading = loading, DynamicTyreRadius = 0.4882675.SI<Meter>(), @@ -232,6 +230,16 @@ namespace TUGraz.VectoCore.Tests.Integration }; } + private static AirdragData CreateAirdragData() + { + return new AirdragData() { + CrossWindCorrectionCurve = + new CrosswindCorrectionCdxALookup(6.2985.SI<SquareMeter>(), + CrossWindCorrectionCurveReader.GetNoCorrectionCurve(6.2985.SI<SquareMeter>()), + CrossWindCorrectionMode.NoCorrection), + }; + } + private static DriverData CreateDriverData(string accelerationFile, bool overspeed = false) { return new DriverData { diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterTestHelper.cs b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterTestHelper.cs index 066547b81e..8f16812954 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterTestHelper.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterTestHelper.cs @@ -21,7 +21,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter return runData; } - public static void AssertVehicleData(VehicleData vehicleData, VehicleCategory vehicleCategory, + public static void AssertVehicleData(VehicleData vehicleData, AirdragData airdragData, VehicleCategory vehicleCategory, VehicleClass vehicleClass, AxleConfiguration axleConfiguration, double wheelsInertia, double totalVehicleWeight, double totalRollResistance, double aerodynamicDragArea) { @@ -32,7 +32,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter Assert.AreEqual(wheelsInertia, vehicleData.WheelsInertia.Value(), 1e-6, "WheelsInertia"); Assert.AreEqual(totalRollResistance, vehicleData.TotalRollResistanceCoefficient, 1e-6, "TotalRollResistance"); - Assert.AreEqual(aerodynamicDragArea, vehicleData.CrossWindCorrectionCurve.AirDragArea.Value(), 1e-6, "Cd x A"); + Assert.AreEqual(aerodynamicDragArea, airdragData.CrossWindCorrectionCurve.AirDragArea.Value(), 1e-6, "Cd x A"); } } } \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class2.cs b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class2.cs index b200620805..626557be45 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class2.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class2.cs @@ -27,7 +27,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter Assert.AreEqual(6, runData.Length); // long haul, min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class2, axleConfiguration: AxleConfiguration.AxleConfig_4x2, @@ -43,7 +43,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // long haul, ref load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class2, axleConfiguration: AxleConfiguration.AxleConfig_4x2, @@ -60,7 +60,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // regional del., min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class2, axleConfiguration: AxleConfiguration.AxleConfig_4x2, @@ -76,7 +76,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // regional del., ref load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class2, axleConfiguration: AxleConfiguration.AxleConfig_4x2, @@ -92,7 +92,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter { var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // municipal, min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class2, axleConfiguration: AxleConfiguration.AxleConfig_4x2, @@ -108,7 +108,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // municipal, min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class2, axleConfiguration: AxleConfiguration.AxleConfig_4x2, diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class5.cs b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class5.cs index 38e1589b02..619f310597 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class5.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class5.cs @@ -28,7 +28,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter Assert.AreEqual(8, runData.Length); // long haul, min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.Tractor, vehicleClass: VehicleClass.Class5, axleConfiguration: AxleConfiguration.AxleConfig_4x2, @@ -44,7 +44,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // long haul, ref load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.Tractor, vehicleClass: VehicleClass.Class5, axleConfiguration: AxleConfiguration.AxleConfig_4x2, @@ -62,7 +62,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter Assert.AreEqual(8, runData.Length); // long haul, min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.Tractor, vehicleClass: VehicleClass.Class5, axleConfiguration: AxleConfiguration.AxleConfig_4x2, @@ -78,7 +78,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // long haul, ref load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.Tractor, vehicleClass: VehicleClass.Class5, axleConfiguration: AxleConfiguration.AxleConfig_4x2, @@ -94,7 +94,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // regional del., min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.Tractor, vehicleClass: VehicleClass.Class5, axleConfiguration: AxleConfiguration.AxleConfig_4x2, @@ -110,7 +110,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // regional del., ref load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.Tractor, vehicleClass: VehicleClass.Class5, axleConfiguration: AxleConfiguration.AxleConfig_4x2, @@ -126,7 +126,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // regional del., min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.Tractor, vehicleClass: VehicleClass.Class5, axleConfiguration: AxleConfiguration.AxleConfig_4x2, @@ -142,7 +142,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // regional del., ref load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.Tractor, vehicleClass: VehicleClass.Class5, axleConfiguration: AxleConfiguration.AxleConfig_4x2, diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class9.cs b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class9.cs index 37107d56ab..bc25ac128d 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class9.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class9.cs @@ -28,7 +28,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter Assert.AreEqual(10, runData.Length); // long haul, min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class9, axleConfiguration: AxleConfiguration.AxleConfig_6x2, @@ -45,7 +45,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // long haul, ref load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class9, axleConfiguration: AxleConfiguration.AxleConfig_6x2, @@ -61,7 +61,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // long haul, min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class9, axleConfiguration: AxleConfiguration.AxleConfig_6x2, @@ -77,7 +77,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // long haul, ref load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class9, axleConfiguration: AxleConfiguration.AxleConfig_6x2, @@ -93,7 +93,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // regional del., min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class9, axleConfiguration: AxleConfiguration.AxleConfig_6x2, @@ -109,7 +109,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // regional del., ref load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class9, axleConfiguration: AxleConfiguration.AxleConfig_6x2, @@ -125,7 +125,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // regional del., min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class9, axleConfiguration: AxleConfiguration.AxleConfig_6x2, @@ -141,7 +141,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // regional del., ref load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class9, axleConfiguration: AxleConfiguration.AxleConfig_6x2, @@ -157,7 +157,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // municipal, min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class9, axleConfiguration: AxleConfiguration.AxleConfig_6x2, @@ -173,7 +173,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); // municipal, min load - DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, + DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, vehicleCategory: VehicleCategory.RigidTruck, vehicleClass: VehicleClass.Class9, axleConfiguration: AxleConfiguration.AxleConfig_6x2, diff --git a/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs b/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs index b9185306ca..b896ba2afd 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs @@ -109,7 +109,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation t += dt; } - container.FinishSimulation(); + container.FinishSimulationRun(); sumWriter.Finish(); var testColumns = new[] { "P_aux_FAN", "P_aux_STP", "P_aux_AC", "P_aux_ES", "P_aux_PS", "P_aux" }; diff --git a/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs index aaac9863c9..3e6abd4692 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs @@ -230,10 +230,6 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation VehicleData = new VehicleData { VehicleCategory = VehicleCategory.RigidTruck, - CrossWindCorrectionCurve = - new CrosswindCorrectionCdxALookup(6.16498344.SI<SquareMeter>(), - CrossWindCorrectionCurveReader.GetNoCorrectionCurve(6.16498344.SI<SquareMeter>()), - CrossWindCorrectionMode.NoCorrection), GrossVehicleWeight = 12000.SI<Kilogram>(), CurbWeight = 3400.SI<Kilogram>(), DynamicTyreRadius = 0.5.SI<Meter>(), @@ -242,6 +238,12 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation new Axle { AxleWeightShare = 1.0, TyreTestLoad = 52532.SI<Newton>(), Inertia = 10.SI<KilogramSquareMeter>() } } }, + AirdragData = new AirdragData() { + CrossWindCorrectionCurve = + new CrosswindCorrectionCdxALookup(6.16498344.SI<SquareMeter>(), + CrossWindCorrectionCurveReader.GetNoCorrectionCurve(6.16498344.SI<SquareMeter>()), + CrossWindCorrectionMode.NoCorrection), + }, AxleGearData = new AxleGearData { AxleGear = new GearData { Ratio = 2.3 } }, EngineData = new CombustionEngineData { @@ -297,11 +299,13 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation VehicleCategory = VehicleCategory.RigidTruck, WheelsInertia = 2.SI<KilogramSquareMeter>(), DynamicTyreRadius = 0.85.SI<Meter>(), - CrossWindCorrectionCurve = - new CrosswindCorrectionCdxALookup(6.16498344.SI<SquareMeter>(), - CrossWindCorrectionCurveReader.GetNoCorrectionCurve(6.16498344.SI<SquareMeter>()), - CrossWindCorrectionMode.NoCorrection) }, + AirdragData = new AirdragData() { + CrossWindCorrectionCurve = + new CrosswindCorrectionCdxALookup(6.16498344.SI<SquareMeter>(), + CrossWindCorrectionCurveReader.GetNoCorrectionCurve(6.16498344.SI<SquareMeter>()), + CrossWindCorrectionMode.NoCorrection) + }, AxleGearData = new AxleGearData { AxleGear = new GearData { Ratio = 2.3 } }, EngineData = new CombustionEngineData { IdleSpeed = 560.RPMtoRad(), diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/DriverTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/DriverTest.cs index 84abb65280..60d9b5bc01 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/DriverTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/DriverTest.cs @@ -67,6 +67,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile, 1); var vehicleData = CreateVehicleData(33000.SI<Kilogram>()); + var airdragData = CreateAirdragData(); vehicleData.DynamicTyreRadius = 0.026372213.SI<Meter>(); // take into account axle ratio, gear ratio var driverData = CreateDriverData(); @@ -79,7 +80,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var driver = new Driver(vehicleContainer, driverData, new DefaultDriverStrategy()); var engine = new CombustionEngine(vehicleContainer, engineData); var clutch = new Clutch(vehicleContainer, engineData); - dynamic tmp = AddComponent(driver, new Vehicle(vehicleContainer, vehicleData)); + dynamic tmp = AddComponent(driver, new Vehicle(vehicleContainer, vehicleData, airdragData)); tmp = AddComponent(tmp, new Wheels(vehicleContainer, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia)); tmp = AddComponent(tmp, clutch); AddComponent(tmp, engine); @@ -125,6 +126,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var vehicleData = CreateVehicleData(33000.SI<Kilogram>()); vehicleData.DynamicTyreRadius = 0.026372213.SI<Meter>(); // take into account axle ratio, gear ratio + var airdragData = CreateAirdragData(); var driverData = CreateDriverData(); var fileWriter = new FileOutputWriter("Coach_MinimalPowertrain_Coasting"); @@ -136,7 +138,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var engine = new CombustionEngine(vehicleContainer, engineData); var clutch = new Clutch(vehicleContainer, engineData); - dynamic tmp = AddComponent(driver, new Vehicle(vehicleContainer, vehicleData)); + dynamic tmp = AddComponent(driver, new Vehicle(vehicleContainer, vehicleData, airdragData)); tmp = AddComponent(tmp, new Wheels(vehicleContainer, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia)); tmp = AddComponent(tmp, clutch); AddComponent(tmp, engine); @@ -183,6 +185,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFileHigh, 1); var vehicleData = CreateVehicleData(33000.SI<Kilogram>()); + var airdragData = CreateAirdragData(); // take into account the axle ratio and 1st-gear ratio vehicleData.DynamicTyreRadius /= (3.24 * 6.38); @@ -197,7 +200,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var driver = new Driver(vehicleContainer, driverData, new DefaultDriverStrategy()); - dynamic tmp = AddComponent(driver, new Vehicle(vehicleContainer, vehicleData)); + dynamic tmp = AddComponent(driver, new Vehicle(vehicleContainer, vehicleData, airdragData)); tmp = AddComponent(tmp, new Wheels(vehicleContainer, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia)); var engine = new CombustionEngine(vehicleContainer, engineData); var clutch = new Clutch(vehicleContainer, engineData); @@ -395,10 +398,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent }; return new VehicleData { AxleConfiguration = AxleConfiguration.AxleConfig_4x2, - CrossWindCorrectionCurve = - new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), - CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()), - CrossWindCorrectionMode.NoCorrection), + CurbWeight = 15700.SI<Kilogram>(), Loading = loading, DynamicTyreRadius = 0.52.SI<Meter>(), @@ -407,6 +407,16 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent }; } + private static AirdragData CreateAirdragData() + { + return new AirdragData() { + CrossWindCorrectionCurve = + new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), + CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()), + CrossWindCorrectionMode.NoCorrection), + }; + } + private static DriverData CreateDriverData() { return new DriverData { diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs index 0fb88564c2..8b54bfe1e2 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs @@ -59,9 +59,10 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent //var reader = new EngineeringModeSimulationDataReader(); var vehicleData = MockSimulationDataFactory.CreateVehicleDataFromFile(VehicleDataFileCoach); + var airdragData = MockSimulationDataFactory.CreateAirdragDataFromFile(VehicleDataFileCoach); //VehicleData.ReadFromFile(VehicleDataFile); //vehicleData.CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection; - var vehicle = new Vehicle(container, vehicleData); + var vehicle = new Vehicle(container, vehicleData, airdragData); var driver = new MockDriver(container) { DriverBehavior = DrivingBehavior.Driving }; var mockPort = new MockFvOutPort(); vehicle.InPort().Connect(mockPort); @@ -97,10 +98,11 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var container = new VehicleContainer(ExecutionMode.Declaration); var vehicleData = MockSimulationDataFactory.CreateVehicleDataFromFile(VehicleDataFileTruck); - vehicleData.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(6.46.SI<SquareMeter>(), + var airdragData = MockSimulationDataFactory.CreateAirdragDataFromFile(VehicleDataFileTruck); + airdragData.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(6.46.SI<SquareMeter>(), DeclarationDataAdapter.GetDeclarationAirResistanceCurve("TractorSemitrailer", 6.46.SI<SquareMeter>(), height.SI<Meter>()), CrossWindCorrectionMode.DeclarationModeCorrection); - var vehicle = new Vehicle(container, vehicleData); + var vehicle = new Vehicle(container, vehicleData,airdragData); var mockPort = new MockFvOutPort(); vehicle.InPort().Connect(mockPort); @@ -120,11 +122,12 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var container = new VehicleContainer(ExecutionMode.Declaration); var vehicleData = MockSimulationDataFactory.CreateVehicleDataFromFile(VehicleDataFileTruck); - vehicleData.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(6.2985.SI<SquareMeter>(), + var airdragData = MockSimulationDataFactory.CreateAirdragDataFromFile(VehicleDataFileTruck); + airdragData.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(6.2985.SI<SquareMeter>(), DeclarationDataAdapter.GetDeclarationAirResistanceCurve("TractorSemitrailer", 6.2985.SI<SquareMeter>(), 3.SI<Meter>()), CrossWindCorrectionMode.DeclarationModeCorrection); - var vehicle = new Vehicle(container, vehicleData); + var vehicle = new Vehicle(container, vehicleData,airdragData); var driver = new MockDriver(container) { DriverBehavior = DrivingBehavior.Driving }; var mockPort = new MockFvOutPort(); vehicle.InPort().Connect(mockPort); diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs index 9fe61c7f04..7dffbd7671 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs @@ -183,11 +183,6 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData { var vehicleData = new VehicleData { AxleConfiguration = AxleConfiguration.AxleConfig_4x2, - CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection, - CrossWindCorrectionCurve = - new CrosswindCorrectionCdxALookup(5.SI<SquareMeter>(), - CrossWindCorrectionCurveReader.GetNoCorrectionCurve(5.SI<SquareMeter>()), - CrossWindCorrectionMode.NoCorrection), CurbWeight = 7500.SI<Kilogram>(), DynamicTyreRadius = 0.5.SI<Meter>(), //CurbWeigthExtra = 0.SI<Kilogram>(), @@ -249,11 +244,6 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData }; var vehicleData = new VehicleData { AxleConfiguration = AxleConfiguration.AxleConfig_4x2, - CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection, - CrossWindCorrectionCurve = - new CrosswindCorrectionCdxALookup(5.SI<SquareMeter>(), - CrossWindCorrectionCurveReader.GetNoCorrectionCurve(5.SI<SquareMeter>()), - CrossWindCorrectionMode.NoCorrection), CurbWeight = 7500.SI<Kilogram>(), DynamicTyreRadius = 0.5.SI<Meter>(), //CurbWeigthExtra = 0.SI<Kilogram>(), @@ -280,6 +270,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData container.RunData = new VectoRunData { VehicleData = vehicleData, + AirdragData = new AirdragData() { + CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection, + CrossWindCorrectionCurve = + new CrosswindCorrectionCdxALookup(5.SI<SquareMeter>(), + CrossWindCorrectionCurveReader.GetNoCorrectionCurve(5.SI<SquareMeter>()), + CrossWindCorrectionMode.NoCorrection) + }, GearboxData = gearboxData, EngineData = engineData, AxleGearData = axleGearData @@ -625,9 +622,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData public string Creator { get; set; } public string Date { get; set; } public string TechnicalReportId { get; set; } + public CertificationMethod CertificationMethod { get{return CertificationMethod.NotCertified;}} public string CertificationNumber { get; set; } public string DigestValue { get; set; } - public IntegrityStatus IntegrityStatus { get; set; } public GearboxType Type { get; set; } public IList<ITransmissionInputData> Gears { get; set; } public KilogramSquareMeter Inertia { get; set; } diff --git a/VectoCore/VectoCoreTest/Utils/MockEngineDataProvider.cs b/VectoCore/VectoCoreTest/Utils/MockEngineDataProvider.cs index c764eccacb..e158346b7a 100644 --- a/VectoCore/VectoCoreTest/Utils/MockEngineDataProvider.cs +++ b/VectoCore/VectoCoreTest/Utils/MockEngineDataProvider.cs @@ -46,9 +46,9 @@ namespace TUGraz.VectoCore.Tests.Utils public string Creator { get; set; } public string Date { get; set; } public string TechnicalReportId { get; set; } + public CertificationMethod CertificationMethod { get{return CertificationMethod.NotCertified;} } public string CertificationNumber { get; set; } public string DigestValue { get; set; } - public IntegrityStatus IntegrityStatus { get; set; } public CubicMeter Displacement { get; set; } public PerSecond IdleSpeed { get; set; } public double WHTCMotorway { get; set; } diff --git a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs index ba581dd6ec..727ca9fb00 100644 --- a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs +++ b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs @@ -82,6 +82,9 @@ namespace TUGraz.VectoCore.Tests.Utils get { return VectoRun.Status.Success; } } + public string Error { get { return null; } } + public string StackTrace { get { return null; } } + public void Finish(VectoRun.Status runStatus) {} public bool WriteModalResults { get; set; } @@ -96,6 +99,11 @@ namespace TUGraz.VectoCore.Tests.Utils return Data.Rows.Cast<DataRow>().Select(x => x.Field<T>(col)); } + public IEnumerable<T> GetValues<T>(Func<DataRow, T> selectorFunc) + { + throw new NotImplementedException(); + } + public T TimeIntegral<T>(ModalResultField field, Func<SI, bool> filter = null) where T : SIBase<T> { throw new NotImplementedException(); @@ -122,7 +130,7 @@ namespace TUGraz.VectoCore.Tests.Utils throw new NotImplementedException(); } - public void FinishSimulation() + public void FinishSimulation(Exception exception) { Data.Rows.Clear(); } diff --git a/VectoCore/VectoCoreTest/Utils/MockRunData.cs b/VectoCore/VectoCoreTest/Utils/MockRunData.cs index dcb7af96af..2da0eabb14 100644 --- a/VectoCore/VectoCoreTest/Utils/MockRunData.cs +++ b/VectoCore/VectoCoreTest/Utils/MockRunData.cs @@ -53,6 +53,9 @@ namespace TUGraz.VectoCore.Tests.Utils Loading = 0.SI<Kilogram>(), TotalRollResistanceCoefficient = 0, DynamicTyreRadius = 1.SI<Meter>(), + + }; + AirdragData = new AirdragData() { CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(1.SI<SquareMeter>(), CrossWindCorrectionCurveReader.GetNoCorrectionCurve(1.SI<SquareMeter>()), CrossWindCorrectionMode.NoCorrection) diff --git a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs index d37a2d5f52..be3aacb4bb 100644 --- a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs +++ b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs @@ -88,7 +88,15 @@ namespace TUGraz.VectoCore.Tests.Utils var dao = new EngineeringDataAdapter(); var vehicleInput = JSONInputDataFactory.ReadJsonVehicle(vehicleDataFile); var airdragData = vehicleInput as IAirdragEngineeringInputData; - return dao.CreateVehicleData(vehicleInput, airdragData); + return dao.CreateVehicleData(vehicleInput); + } + + public static AirdragData CreateAirdragDataFromFile(string vehicleDataFile) + { + var dao = new EngineeringDataAdapter(); + var vehicleInput = JSONInputDataFactory.ReadJsonVehicle(vehicleDataFile); + var airdragData = vehicleInput as IAirdragEngineeringInputData; + return dao.CreateAirdragData(airdragData, vehicleInput); } public static DriverData CreateDriverDataFromFile(string driverDataFile) diff --git a/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs b/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs index 344ae6fafc..43f636130d 100644 --- a/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs +++ b/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs @@ -29,7 +29,9 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System; using System.Collections.Generic; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Models.Connector.Ports; @@ -212,6 +214,8 @@ namespace TUGraz.VectoCore.Tests.Utils public void FinishSimulation() {} + public void FinishSimulationRun(Exception e) {} + public Watt SetAxlegearLoss { set { _axlegearLoss = value; } diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs index 028f1d49ec..6e98703bbd 100644 --- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs @@ -7,6 +7,7 @@ using System.Xml.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; @@ -16,7 +17,6 @@ using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; -using TUGraz.VectoCore.Resources; using TUGraz.VectoCore.Tests.Utils; using TUGraz.VectoCore.Utils; diff --git a/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs b/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs index 2ad733f98f..f26108d0b0 100644 --- a/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs @@ -6,6 +6,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.FileIO.XML.Engineering; @@ -15,7 +16,6 @@ using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; -using TUGraz.VectoCore.Resources; using TUGraz.VectoCore.Tests.Utils; using TUGraz.VectoCore.Utils; -- GitLab