diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb index df47550b812103c69c7c18c4e37e49694d7e0b61..dac5eaf3da4917cee093240da2b483528afb7920 100644 --- a/VECTO/Input Files/Vehicle.vb +++ b/VECTO/Input Files/Vehicle.vb @@ -104,7 +104,7 @@ Public Class Vehicle If mode = ExecutionMode.Declaration Then Dim doa As DeclarationDataAdapter = New DeclarationDataAdapter() Dim segment As Segment = DeclarationData.Segments.Lookup(vehicle.VehicleCategory, vehicle.AxleConfiguration, - vehicle.GrossVehicleMassRating, vehicle.CurbMassChassis) + vehicle.GrossVehicleMassRating, vehicle.CurbMassChassis, false) vehicleData = doa.CreateVehicleData(vehicle, segment.Missions.First(), segment.Missions.First().Loadings.First().Value, segment.MunicipalBodyWeight) airdragData = doa.CreateAirdragData(vehicle, segment.Missions.First(), segment) @@ -320,13 +320,13 @@ Public Class Vehicle End Get End Property - Public ReadOnly Property ExemptedVehicle As Boolean Implements IVehicleDeclarationInputData.ExemptedVehicle - get - Return false - End Get - End Property + Public ReadOnly Property ExemptedVehicle As Boolean Implements IVehicleDeclarationInputData.ExemptedVehicle + get + Return false + End Get + End Property - Public ReadOnly Property VIN As String Implements IVehicleDeclarationInputData.VIN + Public ReadOnly Property VIN As String Implements IVehicleDeclarationInputData.VIN Get Return "N.A." End Get @@ -347,7 +347,7 @@ Public Class Vehicle Public ReadOnly Property GrossVehicleMassRating As Kilogram _ Implements IVehicleDeclarationInputData.GrossVehicleMassRating Get - Return MassMax.SI(Unit.SI.Ton).Cast(Of Kilogram)() + Return MassMax.SI(Unit.SI.Ton).Cast(Of Kilogram)() End Get End Property @@ -420,7 +420,7 @@ Public Class Vehicle Public ReadOnly Property IVehicleEngineeringInputData_DynamicTyreRadius As Meter _ Implements IVehicleEngineeringInputData.DynamicTyreRadius Get - Return DynamicTyreRadius.SI(Unit.SI.Milli.Meter).Cast(Of Meter)() + Return DynamicTyreRadius.SI(Unit.SI.Milli.Meter).Cast(Of Meter)() End Get End Property @@ -652,81 +652,81 @@ Public Class Vehicle End Get End Property - Public ReadOnly Property VocationalVehicle As Boolean Implements IVehicleDeclarationInputData.VocationalVehicle - get - Return DeclarationData.Vehicle.VocationalVehicleDefault - End Get - End Property - - Public ReadOnly Property SleeperCab As Boolean Implements IVehicleDeclarationInputData.SleeperCab - get - Return DeclarationData.Vehicle.SleeperCabDefault - End Get - End Property - - Public ReadOnly Property TankSystem As NgTankSystem Implements IVehicleDeclarationInputData.TankSystem - get - Return DeclarationData.Vehicle.NgTankSystemDefault - End Get - End Property - - Public ReadOnly Property ADAS As IAdvancedDriverAssistantSystemDeclarationInputData Implements IVehicleDeclarationInputData.ADAS - get - return Me - End Get - End Property - - Public ReadOnly Property ZeroEmissionVehicle As Boolean Implements IVehicleDeclarationInputData.ZeroEmissionVehicle - get - Return DeclarationData.Vehicle.ZeroEmissionVehicleDefault - End Get - End Property - - Public ReadOnly Property HybridElectricHDV As Boolean Implements IVehicleDeclarationInputData.HybridElectricHDV - get - return DeclarationData.Vehicle.HybridElectricHDVDefault - End Get - End Property - - Public ReadOnly Property DualFuelVehicle As Boolean Implements IVehicleDeclarationInputData.DualFuelVehicle - get - return DeclarationData.Vehicle.DualFuelVehicleDefault - End Get - End Property - - Public ReadOnly Property MaxNetPower1 As Watt Implements IVehicleDeclarationInputData.MaxNetPower1 - get - Return Nothing - End Get - End Property - - Public ReadOnly Property MaxNetPower2 As Watt Implements IVehicleDeclarationInputData.MaxNetPower2 - get - Return Nothing - End Get - End Property - - Public ReadOnly Property EngineStopStart As Boolean Implements IAdvancedDriverAssistantSystemDeclarationInputData.EngineStopStart - get - return DeclarationData.Vehicle.ADAS.EngineStopStartDefault - End Get - End Property - - Public ReadOnly Property EcoRollWitoutEngineStop As Boolean Implements IAdvancedDriverAssistantSystemDeclarationInputData.EcoRollWitoutEngineStop - get - return DeclarationData.Vehicle.ADAS.EcoRollWitoutEngineStop - End Get - End Property - - Public ReadOnly Property EcoRollWithEngineStop As Boolean Implements IAdvancedDriverAssistantSystemDeclarationInputData.EcoRollWithEngineStop - get - Return DeclarationData.Vehicle.ADAS.EcoRollWithEngineStop - End Get - End Property - - Public ReadOnly Property PredictiveCruiseControl As PredictiveCruiseControlType Implements IAdvancedDriverAssistantSystemDeclarationInputData.PredictiveCruiseControl - get - Return DeclarationData.Vehicle.ADAS.PredictiveCruiseControlDefault - End Get - End Property + Public ReadOnly Property VocationalVehicle As Boolean Implements IVehicleDeclarationInputData.VocationalVehicle + get + Return DeclarationData.Vehicle.VocationalVehicleDefault + End Get + End Property + + Public ReadOnly Property SleeperCab As Boolean Implements IVehicleDeclarationInputData.SleeperCab + get + Return DeclarationData.Vehicle.SleeperCabDefault + End Get + End Property + + Public ReadOnly Property TankSystem As NgTankSystem Implements IVehicleDeclarationInputData.TankSystem + get + Return DeclarationData.Vehicle.NgTankSystemDefault + End Get + End Property + + Public ReadOnly Property ADAS As IAdvancedDriverAssistantSystemDeclarationInputData Implements IVehicleDeclarationInputData.ADAS + get + return Me + End Get + End Property + + Public ReadOnly Property ZeroEmissionVehicle As Boolean Implements IVehicleDeclarationInputData.ZeroEmissionVehicle + get + Return DeclarationData.Vehicle.ZeroEmissionVehicleDefault + End Get + End Property + + Public ReadOnly Property HybridElectricHDV As Boolean Implements IVehicleDeclarationInputData.HybridElectricHDV + get + return DeclarationData.Vehicle.HybridElectricHDVDefault + End Get + End Property + + Public ReadOnly Property DualFuelVehicle As Boolean Implements IVehicleDeclarationInputData.DualFuelVehicle + get + return DeclarationData.Vehicle.DualFuelVehicleDefault + End Get + End Property + + Public ReadOnly Property MaxNetPower1 As Watt Implements IVehicleDeclarationInputData.MaxNetPower1 + get + Return Nothing + End Get + End Property + + Public ReadOnly Property MaxNetPower2 As Watt Implements IVehicleDeclarationInputData.MaxNetPower2 + get + Return Nothing + End Get + End Property + + Public ReadOnly Property EngineStopStart As Boolean Implements IAdvancedDriverAssistantSystemDeclarationInputData.EngineStopStart + get + return DeclarationData.Vehicle.ADAS.EngineStopStartDefault + End Get + End Property + + Public ReadOnly Property EcoRollWitoutEngineStop As Boolean Implements IAdvancedDriverAssistantSystemDeclarationInputData.EcoRollWitoutEngineStop + get + return DeclarationData.Vehicle.ADAS.EcoRollWitoutEngineStop + End Get + End Property + + Public ReadOnly Property EcoRollWithEngineStop As Boolean Implements IAdvancedDriverAssistantSystemDeclarationInputData.EcoRollWithEngineStop + get + Return DeclarationData.Vehicle.ADAS.EcoRollWithEngineStop + End Get + End Property + + Public ReadOnly Property PredictiveCruiseControl As PredictiveCruiseControlType Implements IAdvancedDriverAssistantSystemDeclarationInputData.PredictiveCruiseControl + get + Return DeclarationData.Vehicle.ADAS.PredictiveCruiseControlDefault + End Get + End Property End Class diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs index 9383a10b703c266e080e95c95ce7a02c62eb6ec9..df48694c60c5602fe66b342c03e2e480291dbdee 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs @@ -96,9 +96,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter break; case CrossWindCorrectionMode.DeclarationModeCorrection: var airDragArea = airdragData.AirDragArea ?? - DeclarationData.Segments.LookupCdA(data.VehicleCategory, data.AxleConfiguration, data.GrossVehicleMassRating); + DeclarationData.Segments.LookupCdA(data.VehicleCategory, data.AxleConfiguration, data.GrossVehicleMassRating, false); var height = data.Height ?? DeclarationData.Segments.LookupHeight(data.VehicleCategory, data.AxleConfiguration, - data.GrossVehicleMassRating); + data.GrossVehicleMassRating, false); retVal.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(airDragArea, DeclarationDataAdapter.GetDeclarationAirResistanceCurve( GetAirdragParameterSet(data.VehicleCategory, data.AxleConfiguration, data.Axles.Count), airDragArea, height), diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs index a50d9c242175ab7a8a44d31d158e68cc57f5ff45..fed55d58756d8c917cc8e574dfaa63accbf9aaa5 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs @@ -88,33 +88,35 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl private void Initialize() { _dao = new DeclarationDataAdapter(); - _segment = GetVehicleClassification(InputDataProvider.JobInputData.Vehicle.VehicleCategory, - InputDataProvider.JobInputData.Vehicle.AxleConfiguration, - InputDataProvider.JobInputData.Vehicle.GrossVehicleMassRating, - InputDataProvider.JobInputData.Vehicle.CurbMassChassis); + var vehicle = InputDataProvider.JobInputData.Vehicle; + _segment = GetVehicleClassification(vehicle.VehicleCategory, + vehicle.AxleConfiguration, + vehicle.GrossVehicleMassRating, + vehicle.CurbMassChassis, + vehicle.VocationalVehicle); if (!_segment.Found) { throw new VectoException( "no segment found for vehicle configruation: vehicle category: {0}, axle configuration: {1}, GVMR: {2}", - InputDataProvider.JobInputData.Vehicle.VehicleCategory, InputDataProvider.JobInputData.Vehicle.AxleConfiguration, - InputDataProvider.JobInputData.Vehicle.GrossVehicleMassRating); + vehicle.VehicleCategory, vehicle.AxleConfiguration, + vehicle.GrossVehicleMassRating); } _driverdata = _dao.CreateDriverData(); _driverdata.AccelerationCurve = AccelerationCurveReader.ReadFromStream(_segment.AccelerationFile); - var tempVehicle = _dao.CreateVehicleData(InputDataProvider.JobInputData.Vehicle, _segment.Missions.First(), + var tempVehicle = _dao.CreateVehicleData(vehicle, _segment.Missions.First(), _segment.Missions.First().Loadings.First().Value, _segment.MunicipalBodyWeight); - _airdragData = _dao.CreateAirdragData(InputDataProvider.JobInputData.Vehicle.AirdragInputData, + _airdragData = _dao.CreateAirdragData(vehicle.AirdragInputData, _segment.Missions.First(), _segment); - _engineData = _dao.CreateEngineData(InputDataProvider.JobInputData.Vehicle.EngineInputData, - InputDataProvider.JobInputData.Vehicle.EngineIdleSpeed, - InputDataProvider.JobInputData.Vehicle.GearboxInputData, InputDataProvider.JobInputData.Vehicle.TorqueLimits); - _axlegearData = _dao.CreateAxleGearData(InputDataProvider.JobInputData.Vehicle.AxleGearInputData, false); - _angledriveData = _dao.CreateAngledriveData(InputDataProvider.JobInputData.Vehicle.AngledriveInputData, false); - _gearboxData = _dao.CreateGearboxData(InputDataProvider.JobInputData.Vehicle.GearboxInputData, _engineData, + _engineData = _dao.CreateEngineData(vehicle.EngineInputData, + vehicle.EngineIdleSpeed, + vehicle.GearboxInputData, vehicle.TorqueLimits); + _axlegearData = _dao.CreateAxleGearData(vehicle.AxleGearInputData, false); + _angledriveData = _dao.CreateAngledriveData(vehicle.AngledriveInputData, false); + _gearboxData = _dao.CreateGearboxData(vehicle.GearboxInputData, _engineData, _axlegearData.AxleGear.Ratio, tempVehicle.DynamicTyreRadius, tempVehicle.VehicleCategory, false); - _retarderData = _dao.CreateRetarderData(InputDataProvider.JobInputData.Vehicle.RetarderInputData); + _retarderData = _dao.CreateRetarderData(vehicle.RetarderInputData); - _ptoTransmissionData = _dao.CreatePTOTransmissionData(InputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData); + _ptoTransmissionData = _dao.CreatePTOTransmissionData(vehicle.PTOTransmissionInputData); _municipalPtoTransmissionData = CreateDefaultPTOData(); } @@ -210,9 +212,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl } internal Segment GetVehicleClassification(VehicleCategory category, AxleConfiguration axles, Kilogram grossMassRating, - Kilogram curbWeight) + Kilogram curbWeight, bool vocational) { - return DeclarationData.Segments.Lookup(category, axles, grossMassRating, curbWeight); + return DeclarationData.Segments.Lookup(category, axles, grossMassRating, curbWeight, vocational); } } } diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs index c76a1a3c04efdbe585f829a6758ab74a6b06c8a9..60ef0fe048703b10157c42da9050031ef3f6cff3 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs @@ -115,7 +115,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl vehicle.VehicleCategory, vehicle.AxleConfiguration, vehicle.GrossVehicleMassRating, - vehicle.CurbMassChassis); + vehicle.CurbMassChassis, + vehicle.VocationalVehicle); _driverdata = _dao.CreateDriverData(); _driverdata.AccelerationCurve = AccelerationCurveReader.ReadFromStream(_segment.AccelerationFile); var tempVehicle = _dao.CreateVehicleData( diff --git a/VectoCore/VectoCore/Models/Declaration/LookupData.cs b/VectoCore/VectoCore/Models/Declaration/LookupData.cs index 18a24da2aaa0ae03aebded43a37ba0a35e3c5847..7c5b2ad730de0dea91f2805110b9dd2ab042e379 100644 --- a/VectoCore/VectoCore/Models/Declaration/LookupData.cs +++ b/VectoCore/VectoCore/Models/Declaration/LookupData.cs @@ -116,4 +116,10 @@ namespace TUGraz.VectoCore.Models.Declaration { public abstract TValue Lookup(TKey1 key1, TKey2 key2, TKey3 key3, TKey4 key4); } + + public abstract class LookupData<TKey1, TKey2, TKey3, TKey4, TKey5, TValue> : LookupData where TValue : struct + { + public abstract TValue Lookup(TKey1 key1, TKey2 key2, TKey3 key3, TKey4 key4, TKey5 key5); + } + } \ No newline at end of file diff --git a/VectoCore/VectoCore/Models/Declaration/Mission.cs b/VectoCore/VectoCore/Models/Declaration/Mission.cs index e0b15c2687297f5b417dfe312170a5adc512a945..dece38c903c03f5f344f208e977a44447f260b9a 100644 --- a/VectoCore/VectoCore/Models/Declaration/Mission.cs +++ b/VectoCore/VectoCore/Models/Declaration/Mission.cs @@ -91,7 +91,9 @@ namespace TUGraz.VectoCore.Models.Declaration T1, T2, ST1, - Dolly + Dolly, + STT1, + STT2 } public static class TrailterTypeHelper diff --git a/VectoCore/VectoCore/Models/Declaration/Segments.cs b/VectoCore/VectoCore/Models/Declaration/Segments.cs index 53a29d8f79261bba7677cefd6e8b42f3fd91c33e..e261435519c09c8cf1df67875aaf72628d80758a 100644 --- a/VectoCore/VectoCore/Models/Declaration/Segments.cs +++ b/VectoCore/VectoCore/Models/Declaration/Segments.cs @@ -42,7 +42,7 @@ using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.Models.Declaration { - public sealed class Segments : LookupData<VehicleCategory, AxleConfiguration, Kilogram, Kilogram, Segment> + public sealed class Segments : LookupData<VehicleCategory, AxleConfiguration, Kilogram, Kilogram, bool, Segment> { private DataTable _segmentTable; @@ -65,9 +65,9 @@ namespace TUGraz.VectoCore.Models.Declaration } public override Segment Lookup(VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration, - Kilogram grossVehicleMassRating, Kilogram curbWeight) + Kilogram grossVehicleMassRating, Kilogram curbWeight, bool vocational) { - return Lookup(vehicleCategory, axleConfiguration, grossVehicleMassRating, curbWeight, false); + return Lookup(vehicleCategory, axleConfiguration, grossVehicleMassRating, curbWeight, vocational, false); } public VehicleCategory[] GetVehicleCategories(bool declarationOnly = true) @@ -82,10 +82,10 @@ namespace TUGraz.VectoCore.Models.Declaration } public Segment Lookup(VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration, - Kilogram grossVehicleMassRating, Kilogram curbWeight, bool considerInvalid) + Kilogram grossVehicleMassRating, Kilogram curbWeight, bool vocational, bool considerInvalid) { - var row = GetSegmentDataRow(vehicleCategory, axleConfiguration, grossVehicleMassRating, considerInvalid); + var row = GetSegmentDataRow(vehicleCategory, axleConfiguration, grossVehicleMassRating, vocational, considerInvalid); if (row == null) { return new Segment() { Found = false }; } @@ -101,7 +101,7 @@ namespace TUGraz.VectoCore.Models.Declaration RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".VACC." + row.Field<string>(".vaccfile")), Missions = CreateMissions(ref grossVehicleMassRating, curbWeight, row), - VehicleHeight = LookupHeight(vehicleCategory, axleConfiguration, grossVehicleMassRating), + VehicleHeight = LookupHeight(vehicleCategory, axleConfiguration, grossVehicleMassRating, vocational), DesignSpeed = row.ParseDouble("designspeed").KMPHtoMeterPerSecond(), GrossVehicleMassRating = grossVehicleMassRating, CdADefault = string.IsNullOrEmpty(row["cdxa_default"].ToString()) ? null : row.ParseDouble("cdxa_default").SI<SquareMeter>(), @@ -117,17 +117,19 @@ namespace TUGraz.VectoCore.Models.Declaration } private DataRow GetSegmentDataRow(VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration, - Kilogram grossVehicleMassRating, bool considerInvalid) + Kilogram grossVehicleMassRating, bool vocational, bool considerInvalid) { DataRow row; try { row = _segmentTable.AsEnumerable().First(r => { var isValid = r.Field<string>("valid"); + var isVocational = r.Field<string>("vocational").ToBoolean(); var category = r.Field<string>("vehiclecategory"); var axleConf = r.Field<string>("axleconf."); var massMin = r.ParseDouble("gvw_min").SI(Unit.SI.Ton); var massMax = r.ParseDouble("gvw_max").SI(Unit.SI.Ton); return (considerInvalid || isValid == "1") + && vocational == isVocational && category == vehicleCategory.ToString() && axleConf == axleConfiguration.GetName() && grossVehicleMassRating > massMin && grossVehicleMassRating <= massMax; @@ -143,9 +145,9 @@ namespace TUGraz.VectoCore.Models.Declaration } public Meter LookupHeight(VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration, - Kilogram grossVehicleMassRating) + Kilogram grossVehicleMassRating, bool vocational) { - var row = GetSegmentDataRow(vehicleCategory, axleConfiguration, grossVehicleMassRating, true); + var row = GetSegmentDataRow(vehicleCategory, axleConfiguration, grossVehicleMassRating, vocational, true); var vehicleHeight = row.ParseDouble("height").SI<Meter>(); var vehicleClass = VehicleClassHelper.Parse(row.Field<string>("hdvclass")); @@ -170,9 +172,9 @@ namespace TUGraz.VectoCore.Models.Declaration /// Looks up the default CdxA value for the cross wind correction. /// </summary> public SquareMeter LookupCdA(VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration, - Kilogram grossVehicleMassRating) + Kilogram grossVehicleMassRating, bool vocational) { - var row = GetSegmentDataRow(vehicleCategory, axleConfiguration, grossVehicleMassRating, true); + var row = GetSegmentDataRow(vehicleCategory, axleConfiguration, grossVehicleMassRating, vocational, true); return row.SI<SquareMeter>("cdxa_default"); } @@ -181,7 +183,8 @@ namespace TUGraz.VectoCore.Models.Declaration var missionTypes = Enum.GetValues(typeof(MissionType)).Cast<MissionType>(); var missions = new List<Mission>(); foreach (var missionType in missionTypes.Where(m => m.IsDeclarationMission() && row.Field<string>(m.ToString()) != "-")) { - var body = DeclarationData.StandardBodies.Lookup(row.Field<string>("body")); + var bodyColumn = missionType == MissionType.Construction ? "bodyconstruction" : "body"; + var body = DeclarationData.StandardBodies.Lookup(row.Field<string>(bodyColumn)); var maxGVW = Constants.SimulationSettings.MaximumGrossVehicleWeight; var trailers = new List<MissionTrailer>(); @@ -197,7 +200,8 @@ namespace TUGraz.VectoCore.Models.Declaration trailerWeightShares.Select((t, i) => CreateTrailer(trailerList[i], t.ToDouble() / 100.0, i == 0))); } else { if (ShouldTrailerBeUsed(row, missionType)) { - var trailerValue = row.Field<string>("trailer"); + var trailerColumn = missionType == MissionType.Construction ? "trailerconstruction" : "trailer"; + var trailerValue = row.Field<string>(trailerColumn); if (string.IsNullOrWhiteSpace(trailerValue)) { throw new VectoException("Error in segmentation table: trailer weight share is defined but not trailer type!"); } diff --git a/VectoCore/VectoCore/Resources/Declaration/Body_Trailers_Weights.csv b/VectoCore/VectoCore/Resources/Declaration/Body_Trailers_Weights.csv index 23434dc26f2184e6e6c09b571d4358a8961683f1..00781b5f1624aae18598124b90969ceddf1f0640 100644 --- a/VectoCore/VectoCore/Resources/Declaration/Body_Trailers_Weights.csv +++ b/VectoCore/VectoCore/Resources/Declaration/Body_Trailers_Weights.csv @@ -5,8 +5,13 @@ B2 , 1900 , - , - B3 , 2000 , - , - , 0 , , 47.7 , --- B4 , 2100 , - , - , 0 , , 49.4 , --- B5 , 2200 , - , - , 0 , , 51.9 , """B6"" changed to ""B5"" as ""old B5"" not applicable anymore" +BT1 , 1900 , - , - , 0 , , 0.0 , tipper body for construction cycle +BT2 , 3100 , - , - , 0 , , 0.0 , tipper body for construction cycle +BT3 , 4200 , - , - , 0 , , 0.0 , tipper body for construction cycle T1 , 3400 , 10500 , 1.3 , 2 , 235/75 R17.5 , 39.8 , T2 , 5400 , 18000 , 1.5/1.5 , 2 , 385/65 R22.5 , 49.5 , ST1 , 7500 , 24000 , 0/2.1 , 3 , 385/65 R22.5 , 91.0 , relevant for fully loaded is GVM of tractor semitrailer combination = 40000kg ST1-v2 , 7500 , - , 0/2.1 , 3 , 385/65 R22.5 , 91.0 , Dolly , 2500 , 12000 , 0/0 , 2 , 315/70 R22.5 , 0.0 , only relevant for EMS +STT1 , 6100 , 24000 , 0/0 , 3 , 385/65 R22.5 , 0.0 , tipper semitrailer for construction cycle +STT2 , 5600 , 18000 , 0/0 , 2 , 385/65 R22.5 , 0.0 , tipper semitrailer for construction cycle \ No newline at end of file diff --git a/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv b/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv index 341ab33a60c200c7e1ae4550930aed94b6ea3b4b..0f0bed88eff1bc2ce8ec26ffcd203f7b58c4a5e1 100644 --- a/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv +++ b/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv @@ -1,29 +1,33 @@ -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 ,- ,- ,- ,- ,- ,9.0 ,9.0 , -0 ,RigidTruck ,8x6 ,0 ,99 ,17 ,3.6 ,85 , , , ,Truck.vacc, , ,RigidSolo , , , , , , , , ,- ,- ,- ,- ,- ,- ,??? ,- ,- ,- ,- ,- , , , -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 +HDV class , Vocational , Valid , Vehicle Category , Axle Conf. , GVW_Min , GVW_Max , Height , DesignSpeed , Body , Body Construction , Trailer , Trailer Construction , 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 , 0 , 0 , RigidTruck , 4x2 , 0 , 7.5 , 4 , 85 , , , , , , Truck.vacc , , , RigidSolo , , , , , , , , , - , , pc10(R)/pc50(R) , , pc10(R)/pc50(R) , - , - , - , - , - , - , - , , , +1 , 0 , 1 , RigidTruck , 4x2 , 7.5 , 10 , 3.6 , 85 , B1 , , , , , Truck.vacc , , , RigidSolo , , 45/55 , , , , , , , - , - , pc10(R)/pc50(R) , - , pc10(R)/pc50(R) , - , - , - , - , - , - , - , 7.1 , , +1 , 0 , 1 , Tractor , 4x2 , 7.5 , 10 , 3.6 , 85 , B1 , , , , , Truck.vacc , , , RigidSolo , , 45/55 , , , , , , , - , - , pc10(R)/pc50(R) , - , pc10(R)/pc50(R) , - , - , - , - , - , - , - , 7.1 , , +2 , 0 , 1 , RigidTruck , 4x2 , 10 , 12 , 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 , , +2 , 0 , 1 , Tractor , 4x2 , 10 , 12 , 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 , , +3 , 0 , 1 , RigidTruck , 4x2 , 12 , 16 , 3.9 , 85 , B3 , , , , , Truck.vacc , , , RigidSolo , , 40/60 , , , , , , , - , - , pc10(R)/pc50(R) , - , pc10(R)/pc50(R) , - , - , - , - , - , - , - , 7.4 , , +3 , 0 , 1 , Tractor , 4x2 , 12 , 16 , 3.9 , 85 , B3 , , , , , Truck.vacc , , , RigidSolo , , 40/60 , , , , , , , - , - , pc10(R)/pc50(R) , - , pc10(R)/pc50(R) , - , - , - , - , - , - , - , 7.4 , , +4 , 0 , 1 , RigidTruck , 4x2 , 16 , 99 , 4 , 85 , B4 , BT1 , T2 , , , Truck.vacc , RigidTrailer , , RigidSolo , 20/30 , 45/55 , 50 , , , , , , 1900/14000 , - , 900/4400 , - , 900/4400 , 600/3000 , - , - , - , - , - , - , 8.4 , 6.6 , 6000 +4 , 1 , 1 , RigidTruck , 4x2 , 16 , 99 , 4 , 85 , B4 , BT1 , T2 , , , Truck.vacc , RigidTrailer , , RigidSolo , 20/30 , 45/55 , 50 , , , , , , - , - , - , - , - , 600/3000 , 900/4400 , - , - , - , - , - , 8.4 , 6.6 , 6000 +5 , 0 , 1 , Tractor , 4x2 , 16 , 99 , 4 , 85 , , , ST1 , STT1 , 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 , 2600/12900 , - , - , - , - , - , - , - , 8.7 , 7.2 , +5 , 1 , 1 , Tractor , 4x2 , 16 , 99 , 4 , 85 , , , ST1 , STT1 , ST1+T2 , Truck.vacc , TractorSemitrailer , RigidTrailer , TractorSemitrailer , 20/25 , 25/25 , 55 , 50 , 15/20 , 17.5/25 , 40/25 , 35/22.5 , - , - , - , - , - , - , 2600/12900 , - , - , - , - , - , 8.7 , 7.2 , +6 , 0 , 0 , RigidTruck , 4x4 , 7.5 , 16 , 3.75 , 85 , , , , , , Truck.vacc , , , RigidSolo , , , , , , , , , - , - , - , - , - , - , - , - , - , - , - , - , , , +7 , 0 , 0 , RigidTruck , 4x4 , 16 , 99 , 4 , 85 , , , , , , Truck.vacc , , , RigidSolo , , , , , , , , , - , - , - , - , - , - , - , - , - , - , - , - , , , +8 , 0 , 0 , Tractor , 4x4 , 16 , 99 , 4 , 85 , , , , , , Truck.vacc , , , TractorSemitrailer , , , , , , , , , - , - , - , - , - , - , - , - , - , - , - , - , , , +9 , 0 , 1 , RigidTruck , 6x2 , 0 , 99 , 4 , 85 , B5 , BT2 , 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 , 6.7 , 6750 +9 , 1 , 1 , RigidTruck , 6x2 , 0 , 99 , 4 , 85 , B5 , BT2 , 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 , - , - , - , - , - , 1200/6000 , 1400/7100 , - , - , - , - , - , 8.5 , 6.7 , 6750 +10 , 0 , 1 , Tractor , 6x2 , 0 , 99 , 4 , 85 , , , ST1 , STT2 , 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 , 7.3 , +10 , 1 , 1 , Tractor , 6x2 , 0 , 99 , 4 , 85 , , , ST1 , STT2 , 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/12900 , - , - , - , - , - , 8.8 , 7.3 , +11 , 0 , 1 , RigidTruck , 6x4 , 0 , 99 , 4 , 85 , B5 , BT2 , 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 , 6.7 , 6750 +12 , 0 , 1 , Tractor , 6x4 , 0 , 99 , 4 , 85 , , , ST1 , STT2 , 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 , 7.3 , +13 , 0 , 0 , RigidTruck , 6x6 , 0 , 99 , 3.6 , 85 , , , , , , Truck.vacc , , , RigidSolo , , , , , , , , , - , - , - , - , - , - , - , - , - , - , - , - , , , +14 , 0 , 0 , Tractor , 6x6 , 0 , 99 , 3.6 , 85 , , , , , , Truck.vacc , , , TractorSemitrailer , , , , , , , , , - , - , - , - , - , - , - , - , - , - , - , - , , , +15 , 0 , 0 , RigidTruck , 8x2 , 0 , 99 , 3.6 , 85 , , , , , , Truck.vacc , , , RigidSolo , , , , , , , , , - , - , ??? , - , - , - , - , - , - , - , - , - , , , +16 , 0 , 1 , RigidTruck , 8x4 , 0 , 99 , 3.6 , 85 , , BT3 , , , , Truck.vacc , , , RigidSolo , , 25/25/25/25 , , , , , , , - , - , - , - , - , - , 2600/12900 , - , - , - , - , - , 9 , 7 , +17 , 0 , 0 , RigidTruck , 8x6 , 0 , 99 , 3.6 , 85 , , , , , , Truck.vacc , , , RigidSolo , , , , , , , , , - , - , - , - , - , - , - , - , - , - , - , - , , , +17 , 0 , 0 , RigidTruck , 8x8 , 0 , 99 , 4 , 85 , , , , , , Truck.vacc , , , RigidSolo , , , , , , , , , - , - , - , - , - , - , - , - , - , - , - , - , , , +B1 , 0 , 0 , CityBus , 4x2 , 0 , 18 , 4 , 85 , , , , , , , , , CoachBus , , , , , , , , , - , - , - , - , - , - , - , ??? , ??? , ??? , - , - , , , +B2 , 0 , 0 , InterurbanBus , 4x2 , 0 , 18 , 4 , 85 , , , , , , , , , CoachBus , , , , , , , , , - , - , - , - , - , - , - , - , - , - , ??? , - , , , +B3 , 0 , 0 , Coach , 4x2 , 0 , 18 , 4 , 85 , , , , , , , , , CoachBus , , , , , , , , , - , - , - , - , - , - , - , - , - , - , - , ??? , , , +B4 , 0 , 0 , CityBus , 6x2 , 18 , 99 , 4 , 85 , , , , , , , , , CoachBus , , , , , , , , , - , - , - , - , - , - , - , ??? , ??? , ??? , - , - , , , +B5 , 0 , 0 , InterurbanBus , 6x2 , 18 , 99 , 4 , 85 , , , , , , , , , CoachBus , , , , , , , , , - , - , - , - , - , - , - , - , - , - , ??? , - , , , +B6 , 0 , 0 , Coach , 6x2 , 18 , 99 , 4 , 85 , , , , , , , , , CoachBus , , , , , , , , , - , - , - , - , - , - , - , - , - , - , - , ??? , , , \ No newline at end of file diff --git a/VectoCore/VectoCore/Resources/Declaration/VAUX/HVAC-Table.csv b/VectoCore/VectoCore/Resources/Declaration/VAUX/HVAC-Table.csv index 091638a7c0ee2202ce32b4962e9f9840d8cf7a39..083376b1da77bccb6dd3acbd766c65394efae385 100644 --- a/VectoCore/VectoCore/Resources/Declaration/VAUX/HVAC-Table.csv +++ b/VectoCore/VectoCore/Resources/Declaration/VAUX/HVAC-Table.csv @@ -13,10 +13,10 @@ None , 16 , 0 , 0 , 0 , 0 Default , 1 , , 150 , 150 , , Default , 2 , 200 , 200 , 150 , , Default , 3 , , 200 , 150 , , -Default , 4 , 350 , 200 , 200 , 300 , -Default , 5 , 350 , 200 , 200 , , -Default , 9 , 350 , 200 , 200 , 300 , -Default , 10 , 350 , 200 , 200 , , +Default , 4 , 350 , 200 , 150 , 300 , 200 +Default , 5 , 350 , 200 , 150 , , 200 +Default , 9 , 350 , 200 , 150 , 300 , 200 +Default , 10 , 350 , 200 , , , 200 Default , 11 , 350 , 200 , , 300 , 200 Default , 12 , 350 , 200 , , , 200 Default , 16 , , , , , 200 diff --git a/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Table.csv b/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Table.csv index ca1eda4f9140fa8b143b580832333d6322de0644..870c6627161f4e732e41c3400342a87d01e93827 100644 --- a/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Table.csv +++ b/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Table.csv @@ -2,13 +2,13 @@ HDV Class , Long haul , Regional delivery , Urban delivery , Municipal utility , 1 , , 240/20/20 , 220/20/30 , , 2 , 340/30/0 , 290/30/20 , 260/20/30 , , 3 , , 310/30/30 , 280/30/40 , , -4 , 510/100/0 , 490/40/40 , 480/80/60 , 430/30/50 , -5 , 600/120/0 , 540/90/40 , 480/80/60 , , +4 , 510/100/0 , 490/40/40 , 430/40/50 , 430/30/50 , 580/30/70 +5 , 600/120/0 , 540/90/40 , 480/80/60 , , 640/50/80 6 , , , , , 7 , , , , , 8 , , , , , -9 , 600/120/0 , 490/60/40 , 480/80/60 , 430/30/50 , -10 , 450/120/0 , 440/90/40 , 480/80/60 , , +9 , 600/120/0 , 490/60/40 , 440/50/50 , 430/30/50 , 640/50/80 +10 , 450/120/0 , 440/90/40 , , , 640/50/80 11 , 600/120/0 , 490/60/40 , , 430/30/50 , 640/50/80 12 , 450/120/0 , 440/90/40 , , , 640/50/80 16 , , , , , 640/50/80 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Integration/VocationalVehicleTest.cs b/VectoCore/VectoCoreTest/Integration/VocationalVehicleTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..fb0992010373b1cba6aed2b67983bc7d6c4deffe --- /dev/null +++ b/VectoCore/VectoCoreTest/Integration/VocationalVehicleTest.cs @@ -0,0 +1,53 @@ +using System; +using System.IO; +using System.Linq; +using NUnit.Framework; +using NUnit.Framework.Internal; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCore.InputData.FileIO.JSON; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; +using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.OutputData.FileIO; +using TUGraz.VectoCore.Tests.Models.Simulation; + +namespace TUGraz.VectoCore.Tests.Integration +{ + [TestFixture] + public class VocationalVehicleTest + { + const string Class4Vocational = @"Testdata\Integration\DeclarationMode\Class4_Vocational\Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml"; + const string Class5Vocational = @"Testdata\Integration\DeclarationMode\Class5_Vocational\Tractor_4x2_vehicle-class-5_EURO6_2018.xml"; + + [OneTimeSetUp] + public void RunBeforeAnyTests() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + } + + + [TestCase(Class4Vocational, 4), + TestCase(Class5Vocational, 2)] + public void VocationalTest(string filename, int numRuns) + { + var writer = new FileOutputWriter(filename); + var inputData = new XMLDeclarationInputDataProvider(filename, true); //.ReadJsonJob(relativeJobPath); + var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { + WriteModalResults = true, + ActualModalData = true + }; + var jobContainer = new JobContainer(new MockSumWriter()); + + var runs = factory.SimulationRuns().ToList(); + Assert.AreEqual(numRuns, runs.Count); + foreach (var run in runs) { + jobContainer.AddRun(run); + } + //jobContainer.AddRuns(factory); + + jobContainer.Execute(); + jobContainer.WaitFinished(); + var progress = jobContainer.GetProgress(); + Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat<Exception>(progress.Select(r => r.Value.Error))); + } + } +} diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class5.cs b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class5.cs index 51c23b7160d75cfe99aef3ef549e6bc41bf27a8c..20d8a281d97e81a2700bac431208ed16f3ea17fa 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class5.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class5.cs @@ -29,6 +29,7 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System.IO; using NUnit.Framework; using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.Models.Declaration; @@ -45,12 +46,19 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter public const double CdxA = 5.3; + [OneTimeSetUp] + public void RunBeforeAnyTests() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + } + + [TestCase(Class5TractorPTOJob, 0)] public void TestClass5_Vehicle_LongHaul_LowLoad(string file, int runIdx) { var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); - Assert.AreEqual(8, runData.Length); + Assert.AreEqual(10, runData.Length); // long haul, min load DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, @@ -84,7 +92,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter { var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file); - Assert.AreEqual(8, runData.Length); + Assert.AreEqual(10, runData.Length); // long haul, min load DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData, diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs index 15e331f5e13d36770c296bb2f14fe5131c1c899d..501ec06ab89d81d6f41487d7323be7d2d63a5b71 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs @@ -370,10 +370,10 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration [TestCase(VehicleClass.Class1, new[] { 0, 150, 150, 0, 0 }), TestCase(VehicleClass.Class2, new[] { 200, 200, 150, 0, 0 }), TestCase(VehicleClass.Class3, new[] { 0, 200, 150, 0, 0 }), - TestCase(VehicleClass.Class4, new[] { 350, 200, 200, 300, 0 }), - TestCase(VehicleClass.Class5, new[] { 350, 200, 200, 0, 0 }), - TestCase(VehicleClass.Class9, new[] { 350, 200, 200, 300, 0 }), - TestCase(VehicleClass.Class10, new[] { 350, 200, 200, 0, 0 }), + TestCase(VehicleClass.Class4, new[] { 350, 200, 150, 300, 200 }), + TestCase(VehicleClass.Class5, new[] { 350, 200, 150, 0, 200 }), + TestCase(VehicleClass.Class9, new[] { 350, 200, 150, 300, 200 }), + TestCase(VehicleClass.Class10, new[] { 350, 200, 0, 0, 200 }), TestCase(VehicleClass.Class11, new[] { 350, 200, 0, 300, 200 }), TestCase(VehicleClass.Class12, new[] { 350, 200, 0, 0, 200 }), TestCase(VehicleClass.Class16, new[] { 0, 0, 0, 0, 200 })] @@ -562,7 +562,8 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, weight.SI<Kilogram>(), - 0.SI<Kilogram>()), + 0.SI<Kilogram>(), + false), string.Format("ERROR: Could not find the declaration segment for vehicle. Category: {0}, AxleConfiguration: {1}, GrossVehicleWeight: {2}", VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2.GetName(), weight.SI<Kilogram>())); } @@ -579,108 +580,121 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x4, weight.SI<Kilogram>(), - 0.SI<Kilogram>()), + 0.SI<Kilogram>(), + false), string.Format("ERROR: Could not find the declaration segment for vehicle. Category: {0}, AxleConfiguration: {1}, GrossVehicleWeight: {2}", VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x4.GetName(), weight.SI<Kilogram>())); } [Test, - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 7500.01, 0, VehicleClass.Class1), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 7500.01, 0, VehicleClass.Class1), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10000, 0, VehicleClass.Class1), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10000, 0, VehicleClass.Class1), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10001, 0, VehicleClass.Class2), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10001, 0, VehicleClass.Class2), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12001, 0, VehicleClass.Class3), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12001, 0, VehicleClass.Class3), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16001, 0, VehicleClass.Class4), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 99000, 0, VehicleClass.Class4), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16001, 0, VehicleClass.Class5), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 99000, 0, VehicleClass.Class5), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 7500.01, 0, false, VehicleClass.Class1), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 7500.01, 0, false, VehicleClass.Class1), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10000, 0, false, VehicleClass.Class1), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10000, 0, false, VehicleClass.Class1), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10001, 0, false, VehicleClass.Class2), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10001, 0, false, VehicleClass.Class2), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12000, 0, false, VehicleClass.Class2), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12000, 0, false, VehicleClass.Class2), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12001, 0, false, VehicleClass.Class3), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12001, 0, false, VehicleClass.Class3), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16000, 0, false, VehicleClass.Class3), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16000, 0, false, VehicleClass.Class3), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16001, 0, false, VehicleClass.Class4), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 99000, 0, false, VehicleClass.Class4), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16001, 0, true, VehicleClass.Class4), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 99000, 0, true, VehicleClass.Class4), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16001, 0, false, VehicleClass.Class5), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 99000, 0, false, VehicleClass.Class5), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16001, 0, true, VehicleClass.Class5), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 99000, 0, true, VehicleClass.Class5), //TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x4, 7500, 0, VehicleClass.Class6), //TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x4, 16000, 0, VehicleClass.Class6), //TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x4, 16001, 0, VehicleClass.Class7), //TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x4, 99000, 0, VehicleClass.Class7), //TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x4, 16000, 0, VehicleClass.Class8), //TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x4, 99000, 0, VehicleClass.Class8), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 7500, 0, VehicleClass.Class9), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 16000, 0, VehicleClass.Class9), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 40000, 0, VehicleClass.Class9), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 99000, 0, VehicleClass.Class9), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 7500, 0, VehicleClass.Class10), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 16000, 0, VehicleClass.Class10), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 40000, 0, VehicleClass.Class10), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 99000, 0, VehicleClass.Class10), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 7500, 0, VehicleClass.Class11), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 40000, 0, VehicleClass.Class11), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 7500, 0, VehicleClass.Class12), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 99000, 0, VehicleClass.Class12), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 7500, 0, VehicleClass.Class16), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 99000, 0, VehicleClass.Class16) + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 7500, 0, false, VehicleClass.Class9), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 16000, 0, false, VehicleClass.Class9), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 40000, 0, false, VehicleClass.Class9), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 99000, 0, false, VehicleClass.Class9), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 7500, 0, true, VehicleClass.Class9), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 99000, 0, true, VehicleClass.Class9), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 7500, 0, false, VehicleClass.Class10), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 16000, 0, false, VehicleClass.Class10), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 40000, 0, false, VehicleClass.Class10), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 99000, 0, false, VehicleClass.Class10), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 7500, 0, true, VehicleClass.Class10), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 99000, 0, true, VehicleClass.Class10), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 7500, 0, false, VehicleClass.Class11), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 40000, 0, false, VehicleClass.Class11), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 7500, 0, false, VehicleClass.Class12), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 99000, 0, false, VehicleClass.Class12), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 7500, 0, false, VehicleClass.Class16), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 99000, 0, false, VehicleClass.Class16) ] public void SegmentLookupTest(VehicleCategory category, AxleConfiguration axleConfiguration, double grossWeight, - double curbWeight, VehicleClass expectedClass) + double curbWeight, bool vocational, VehicleClass expectedClass) { var segment = DeclarationData.Segments.Lookup(category, axleConfiguration, grossWeight.SI<Kilogram>(), - curbWeight.SI<Kilogram>()); + curbWeight.SI<Kilogram>(), vocational); Assert.AreEqual(expectedClass, segment.VehicleClass); } - [TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 7501, 0, VehicleClass.Class1, 85), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10001, 0, VehicleClass.Class2, 85), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12001, 0, VehicleClass.Class3, 85), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16001, 0, VehicleClass.Class4, 85), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16001, 0, VehicleClass.Class5, 85), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 7501, 0, VehicleClass.Class9, 85), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 7500, 0, VehicleClass.Class10, 85), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 7500, 0, VehicleClass.Class11, 85), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 7500, 0, VehicleClass.Class12, 85), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 7500, 0, VehicleClass.Class16, 85), + [TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 7501, 0, false, VehicleClass.Class1, 85), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10001, 0, false, VehicleClass.Class2, 85), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12001, 0, false, VehicleClass.Class3, 85), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16001, 0, false, VehicleClass.Class4, 85), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16001, 0, true, VehicleClass.Class4, 85), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16001, 0, false, VehicleClass.Class5, 85), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16001, 0, true, VehicleClass.Class5, 85), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 7501, 0, false, VehicleClass.Class9, 85), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 7501, 0, true, VehicleClass.Class9, 85), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 7500, 0, false, VehicleClass.Class10, 85), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 7500, 0, true, VehicleClass.Class10, 85), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 7500, 0, false, VehicleClass.Class11, 85), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 7500, 0, false, VehicleClass.Class12, 85), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 7500, 0, false, VehicleClass.Class16, 85), ] public void SegmentDesignSpeedTest(VehicleCategory category, AxleConfiguration axleConfiguration, double grossWeight, - double curbWeight, VehicleClass expectedClass, double speed) + double curbWeight, bool vocational, VehicleClass expectedClass, double speed) { var segment = DeclarationData.Segments.Lookup(category, axleConfiguration, grossWeight.SI<Kilogram>(), - curbWeight.SI<Kilogram>()); + curbWeight.SI<Kilogram>(), vocational); Assert.AreEqual(speed.KMPHtoMeterPerSecond(), segment.DesignSpeed); } [Test, - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10000, 0, VehicleClass.Class1, 1600, null, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10000, 0, false, VehicleClass.Class1, 1600, null, TestName = "SegmentLookupBodyWeight Class1 Rigid"), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10000, 0, VehicleClass.Class1, 1600, null, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10000, 0, false, VehicleClass.Class1, 1600, null, TestName = "SegmentLookupBodyWeight Class1 Tractor"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2, 1900, 3400, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12000, 0, false, VehicleClass.Class2, 1900, 3400, TestName = "SegmentLookupBodyWeight Class2 Rigid"), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2, 1900, 3400, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12000, 0, false, VehicleClass.Class2, 1900, 3400, TestName = "SegmentLookupBodyWeight Class2 Tractor"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3, 2000, null, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16000, 0, false, VehicleClass.Class3, 2000, null, TestName = "SegmentLookupBodyWeight Class3 Rigid"), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3, 2000, null, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16000, 0, false, VehicleClass.Class3, 2000, null, TestName = "SegmentLookupBodyWeight Class3 Tractor"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 18000, 0, VehicleClass.Class4, 2100, 5400, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 18000, 0, false, VehicleClass.Class4, 2100, 5400, TestName = "SegmentLookupBodyWeight Class4"), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 18000, 0, VehicleClass.Class5, null, 7500, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 18000, 0, false, VehicleClass.Class5, null, 7500, TestName = "SegmentLookupBodyWeight Class5"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 40000, 0, VehicleClass.Class9, 2200, 5400, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 40000, 0, false, VehicleClass.Class9, 2200, 5400, TestName = "SegmentLookupBodyWeight Class9"), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 40000, 0, VehicleClass.Class10, null, 7500, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 40000, 0, false, VehicleClass.Class10, null, 7500, TestName = "SegmentLookupBodyWeight Class10"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 12000, 0, VehicleClass.Class11, 2200, 5400, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 12000, 0, false, VehicleClass.Class11, 2200, 5400, TestName = "SegmentLookupBodyWeight Class11"), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 12000, 0, VehicleClass.Class12, null, 7500, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 12000, 0, false, VehicleClass.Class12, null, 7500, TestName = "SegmentLookupBodyWeight Class12"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 12000, 0, VehicleClass.Class16, null, null, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 12000, 0, false, VehicleClass.Class16, null, null, TestName = "SegmentLookupBodyWeight Class16")] public void SegmentLookupBodyTest(VehicleCategory category, AxleConfiguration axleConfiguration, double grossWeight, - double curbWeight, VehicleClass expectedClass, int? expectedBodyWeight, int? expectedTrailerWeight) + double curbWeight, bool vocational, VehicleClass expectedClass, int? expectedBodyWeight, int? expectedTrailerWeight) { var segment = DeclarationData.Segments.Lookup(category, axleConfiguration, grossWeight.SI<Kilogram>(), - curbWeight.SI<Kilogram>()); + curbWeight.SI<Kilogram>(), vocational); Assert.AreEqual(expectedClass, segment.VehicleClass); if (expectedBodyWeight.HasValue) { @@ -695,83 +709,99 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration } [Test, - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10000, 0, VehicleClass.Class1, 3.6, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10000, 0, false, VehicleClass.Class1, 3.6, TestName = "SegmentLookupHeight Class1 Rigid"), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10000, 0, VehicleClass.Class1, 3.6, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10000, 0, false, VehicleClass.Class1, 3.6, TestName = "SegmentLookupHeight Class1 Tractor"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2, 3.75, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12000, 0, false, VehicleClass.Class2, 3.75, TestName = "SegmentLookupHeight Class2 Rigid"), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2, 3.75, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12000, 0, false, VehicleClass.Class2, 3.75, TestName = "SegmentLookupHeight Class2 Tractor"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3, 3.9, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16000, 0, false, VehicleClass.Class3, 3.9, TestName = "SegmentLookupHeight Class3 Rigid"), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3, 3.9, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16000, 0, false, VehicleClass.Class3, 3.9, TestName = "SegmentLookupHeight Class3 Tractor"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 18000, 0, VehicleClass.Class4, 4.0, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 18000, 0, false, VehicleClass.Class4, 4.0, TestName = "SegmentLookupHeight Class4"), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 18000, 0, VehicleClass.Class5, 4.0, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 18000, 0, true, VehicleClass.Class4, 4.0, + TestName = "SegmentLookupHeight Class4"), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 18000, 0, false, VehicleClass.Class5, 4.0, + TestName = "SegmentLookupHeight Class5"), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 18000, 0, true, VehicleClass.Class5, 4.0, TestName = "SegmentLookupHeight Class5"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 10000, 0, VehicleClass.Class9, 3.6, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 10000, 0, false, VehicleClass.Class9, 3.6, TestName = "SegmentLookupHeight Class9 - 1"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 12000, 0, VehicleClass.Class9, 3.75, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 12000, 0, false, VehicleClass.Class9, 3.75, TestName = "SegmentLookupHeight Class9 - 2"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 16000, 0, VehicleClass.Class9, 3.9, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 16000, 0, false, VehicleClass.Class9, 3.9, TestName = "SegmentLookupHeight Class9 - 3"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 18000, 0, VehicleClass.Class9, 4.0, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 18000, 0, false, VehicleClass.Class9, 4.0, TestName = "SegmentLookupHeight Class9 - 4"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 40000, 0, VehicleClass.Class9, 4.0, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 40000, 0, false, VehicleClass.Class9, 4.0, + TestName = "SegmentLookupHeight Class9 - other"), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 40000, 0, true, VehicleClass.Class9, 4.0, TestName = "SegmentLookupHeight Class9 - other"), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 40000, 0, VehicleClass.Class10, 4.0, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 40000, 0, false, VehicleClass.Class10, 4.0, TestName = "SegmentLookupHeight Class10"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 12000, 0, VehicleClass.Class11, 4.0, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 40000, 0, true, VehicleClass.Class10, 4.0, + TestName = "SegmentLookupHeight Class10"), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 12000, 0, false, VehicleClass.Class11, 4.0, TestName = "SegmentLookupHeight Class11"), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 12000, 0, VehicleClass.Class12, 4.0, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 12000, 0, false, VehicleClass.Class12, 4.0, TestName = "SegmentLookupHeight Class12"), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 12000, 0, VehicleClass.Class16, 3.6, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 12000, 0, false, VehicleClass.Class16, 3.6, TestName = "SegmentLookupHeight Class16")] public void SegmentLookupHeightTest(VehicleCategory category, AxleConfiguration axleConfiguration, double grossWeight, - double curbWeight, VehicleClass expectedClass, double expectedHeight) + double curbWeight, bool vocational, VehicleClass expectedClass, double expectedHeight) { var segment = DeclarationData.Segments.Lookup(category, axleConfiguration, grossWeight.SI<Kilogram>(), - curbWeight.SI<Kilogram>()); + curbWeight.SI<Kilogram>(), vocational); Assert.AreEqual(expectedClass, segment.VehicleClass); AssertHelper.AreRelativeEqual(expectedHeight, segment.VehicleHeight); } [Test, - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 7501, 0, VehicleClass.Class1, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 7501, 0, false, VehicleClass.Class1, new[] { 36.5, 36.5 }), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 7501, 0, VehicleClass.Class1, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 7501, 0, false, VehicleClass.Class1, new[] { 36.5, 36.5 }), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12000, 0, false, VehicleClass.Class2, new[] { 85.0, 45.2, 45.2 }), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12000, 0, false, VehicleClass.Class2, new[] { 85.0, 45.2, 45.2 }), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16000, 0, false, VehicleClass.Class3, new[] { 47.7, 47.7 }), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16000, 0, false, VehicleClass.Class3, new[] { 47.7, 47.7 }), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 18000, 0, VehicleClass.Class4, - new[] { 98.9, 49.4, 49.4 }), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 18000, 0, VehicleClass.Class5, - new[] { 91.0, 140.5, 91.0, 140.5 }), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 16000, 0, VehicleClass.Class9, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 18000, 0, false, VehicleClass.Class4, + new[] { 98.9, 49.4, 49.4, 49.4 }), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 18000, 0, true, VehicleClass.Class4, + new[] { 49.4, 0.0 }), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 18000, 0, false, VehicleClass.Class5, + new[] { 91.0, 140.5, 91.0, 140.5, 91.0 }), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 18000, 0, true, VehicleClass.Class5, + new[] { 0.0 }), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 16000, 0, false, VehicleClass.Class9, new[] { 101.4, 142.9, 51.9, 142.9, 51.9 }), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 16000, 0, VehicleClass.Class10, + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 16000, 0, true, VehicleClass.Class9, + new[] { 51.9, 0.0 }), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 16000, 0, false, VehicleClass.Class10, new[] { 91.0, 140.5, 91.0, 140.5 }), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 40000, 0, VehicleClass.Class11, - new[] { 101.4, 142.9, 51.9, 142.9, 51.9, 51.9 }), - TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 99000, 0, VehicleClass.Class12, - new[] { 91.0, 140.5, 91.0, 140.5, 91.0 }), - TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 99000, 0, VehicleClass.Class16, + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 16000, 0, true, VehicleClass.Class10, + new[] { 0.0 }), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 40000, 0, false, VehicleClass.Class11, + new[] { 101.4, 142.9, 51.9, 142.9, 51.9, 0.0 }), + TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 99000, 0, false, VehicleClass.Class12, + new[] { 91.0, 140.5, 91.0, 140.5, 0.0 }), + TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 99000, 0, false, VehicleClass.Class16, new[] { 0.0 }) ] public void SegmentLookupCargoVolumeTest(VehicleCategory category, AxleConfiguration axleConfiguration, double grossWeight, - double curbWeight, VehicleClass expectedClass, double[] expectedCargoVolume) + double curbWeight, bool vocational, VehicleClass expectedClass, double[] expectedCargoVolume) { var segment = DeclarationData.Segments.Lookup(category, axleConfiguration, grossWeight.SI<Kilogram>(), - curbWeight.SI<Kilogram>()); + curbWeight.SI<Kilogram>(), vocational); Assert.AreEqual(expectedClass, segment.VehicleClass); Assert.AreEqual(expectedCargoVolume.Length, segment.Missions.Length); for (var i = 0; i < expectedCargoVolume.Length; i++) { @@ -793,7 +823,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration }; var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, - vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight); + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, false); Assert.AreEqual(VehicleClass.Class2, segment.VehicleClass); @@ -866,7 +896,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration }; var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, - vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight); + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, false); Assert.AreEqual(VehicleClass.Class2, segment.VehicleClass); @@ -939,7 +969,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration }; var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, - vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight); + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, false); Assert.AreEqual(VehicleClass.Class3, segment.VehicleClass); @@ -992,14 +1022,14 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration }; var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, - vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight); + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, false); Assert.AreEqual(VehicleClass.Class4, segment.VehicleClass); var data = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile); TestAcceleration(data); - Assert.AreEqual(3, segment.Missions.Length); + Assert.AreEqual(4, segment.Missions.Length); AssertMission(segment.Missions[0], vehicleData: vehicleData, @@ -1034,6 +1064,62 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration maxLoad: 8400); AssertMission(segment.Missions[2], + vehicleData: vehicleData, + missionType: MissionType.UrbanDelivery, + cosswindCorrection: "RigidSolo", + axleWeightDistribution: new[] { 0.45, 0.55 }, + trailerAxleWeightDistribution: new double[] { }, + trailerAxleCount: new int[] { }, + bodyCurbWeight: 2100, + trailerCurbWeight: new double[] { }, + trailerType: new TrailerType[] { }, + lowLoad: 900, + refLoad: 4400, + trailerGrossVehicleWeight: new double[] { }, + deltaCdA: 0, + maxLoad: 8400); + + AssertMission(segment.Missions[3], + vehicleData: vehicleData, + missionType: MissionType.MunicipalUtility, + cosswindCorrection: "RigidSolo", + axleWeightDistribution: new[] { 0.45, 0.55 }, + trailerAxleWeightDistribution: new double[] { }, + trailerAxleCount: new int[] { }, + bodyCurbWeight: 2100, + trailerCurbWeight: new double[] { }, + trailerType: new TrailerType[] { }, + lowLoad: 600, + refLoad: 3000, + trailerGrossVehicleWeight: new double[] { }, + deltaCdA: 0, + maxLoad: 8400); + } + + /// <summary> + /// fixed reference weight, trailer only in longhaul + /// </summary> + [TestCase] + public void Segment4VocationalTest() + { + var vehicleData = new { + VehicleCategory = VehicleCategory.RigidTruck, + AxleConfiguration = AxleConfiguration.AxleConfig_4x2, + GrossVehicleMassRating = 18000.SI<Kilogram>(), + CurbWeight = 7500.SI<Kilogram>() + }; + + var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, true); + + Assert.AreEqual(VehicleClass.Class4, segment.VehicleClass); + + var data = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile); + TestAcceleration(data); + + Assert.AreEqual(2, segment.Missions.Length); + + AssertMission(segment.Missions[0], vehicleData: vehicleData, missionType: MissionType.MunicipalUtility, cosswindCorrection: "RigidSolo", @@ -1048,6 +1134,22 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration trailerGrossVehicleWeight: new double[] { }, deltaCdA: 0, maxLoad: 8400); + + AssertMission(segment.Missions[1], + vehicleData: vehicleData, + missionType: MissionType.Construction, + cosswindCorrection: "RigidSolo", + axleWeightDistribution: new[] { 0.45, 0.55 }, + trailerAxleWeightDistribution: new double[] { }, + trailerAxleCount: new int[] { }, + bodyCurbWeight: 1900, + trailerCurbWeight: new double[] { }, + trailerType: new TrailerType[] { }, + lowLoad: 900, + refLoad: 4400, + trailerGrossVehicleWeight: new double[] { }, + deltaCdA: 0, + maxLoad: 8600); } /// <summary> @@ -1064,14 +1166,14 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration }; var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, - vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight); + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, false); Assert.AreEqual(VehicleClass.Class5, segment.VehicleClass); var data = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile); TestAcceleration(data); - Assert.AreEqual(4, segment.Missions.Length); + Assert.AreEqual(5, segment.Missions.Length); AssertMission(segment.Missions[0], vehicleData: vehicleData, @@ -1138,6 +1240,46 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration ems: true); } + /// <summary> + /// Segment 5: fixed reference weight, trailer always used + /// </summary> + [TestCase] + public void Segment5VocationalTest() + { + var vehicleData = new { + VehicleCategory = VehicleCategory.Tractor, + AxleConfiguration = AxleConfiguration.AxleConfig_4x2, + GrossVehicleMassRating = 18000.SI<Kilogram>(), + CurbWeight = 7500.SI<Kilogram>() + }; + + var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, true); + + Assert.AreEqual(VehicleClass.Class5, segment.VehicleClass); + + var data = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile); + TestAcceleration(data); + + Assert.AreEqual(1, segment.Missions.Length); + + AssertMission(segment.Missions[0], + vehicleData: vehicleData, + missionType: MissionType.Construction, + cosswindCorrection: "TractorSemitrailer", + axleWeightDistribution: new[] { 0.25, 0.25 }, + trailerAxleWeightDistribution: new[] { 0.5 }, + trailerAxleCount: new[] { 3 }, bodyCurbWeight: 0, + trailerCurbWeight: new[] { 6100.0 }, + trailerType: new[] { TrailerType.STT1 }, + lowLoad: 2600, + refLoad: 12900, + trailerGrossVehicleWeight: new[] { 24000.0 }, + deltaCdA: 0, + maxLoad: 26400); + + } + /// <summary> /// Segment 9: fixed reference weight, trailer always used /// </summary> @@ -1152,7 +1294,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration }; var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, - vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight); + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, false); Assert.AreEqual(VehicleClass.Class9, segment.VehicleClass); @@ -1244,6 +1386,63 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration maxLoad: 14300); } + /// <summary> + /// Segment 9: fixed reference weight, trailer always used + /// </summary> + [TestCase] + public void Segment9VocationalTest() + { + var vehicleData = new { + VehicleCategory = VehicleCategory.RigidTruck, + AxleConfiguration = AxleConfiguration.AxleConfig_6x2, + GrossVehicleMassRating = 24000.SI<Kilogram>(), + CurbWeight = 7500.SI<Kilogram>() + }; + + var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, true); + + Assert.AreEqual(VehicleClass.Class9, segment.VehicleClass); + + var data = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile); + TestAcceleration(data); + + Assert.AreEqual(2, segment.Missions.Length); + + AssertMission(segment.Missions[0], + vehicleData: vehicleData, + missionType: MissionType.MunicipalUtility, + cosswindCorrection: "RigidSolo", + axleWeightDistribution: new[] { 0.35, 0.4, 0.25 }, + trailerAxleWeightDistribution: new double[] { }, + trailerAxleCount: new int[] { }, + bodyCurbWeight: 2200, + trailerCurbWeight: new double[] { }, + trailerType: new TrailerType[] { }, + lowLoad: 1200, + refLoad: 6000, + trailerGrossVehicleWeight: new double[] { }, + deltaCdA: 0, + maxLoad: 14300); + + AssertMission(segment.Missions[1], + vehicleData: vehicleData, + missionType: MissionType.Construction, + cosswindCorrection: "RigidSolo", + axleWeightDistribution: new[] { 0.35, 0.4, 0.25 }, + trailerAxleWeightDistribution: new double[] { }, + trailerAxleCount: new int[] { }, + bodyCurbWeight: 3100, + trailerCurbWeight: new double[] { }, + trailerType: new TrailerType[] { }, + lowLoad: 1400, + refLoad: 7100, + trailerGrossVehicleWeight: new double[] { }, + deltaCdA: 0, + maxLoad: 13400); + + } + /// <summary> /// Segment 10: fixed reference weight, trailer always used /// </summary> @@ -1258,7 +1457,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration }; var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, - vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight); + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, false); Assert.AreEqual(VehicleClass.Class10, segment.VehicleClass); @@ -1334,6 +1533,47 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration ems: true); } + /// <summary> + /// Segment 10: fixed reference weight, trailer always used + /// </summary> + [TestCase] + public void Segment10VocationalTest() + { + var vehicleData = new { + VehicleCategory = VehicleCategory.Tractor, + AxleConfiguration = AxleConfiguration.AxleConfig_6x2, + GrossVehicleMassRating = 24000.SI<Kilogram>(), + CurbWeight = 7500.SI<Kilogram>() + }; + + var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, true); + + Assert.AreEqual(VehicleClass.Class10, segment.VehicleClass); + + var data = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile); + TestAcceleration(data); + + Assert.AreEqual(1, segment.Missions.Length); + + AssertMission(segment.Missions[0], + vehicleData: vehicleData, + missionType: MissionType.Construction, + cosswindCorrection: "TractorSemitrailer", + axleWeightDistribution: new[] { 0.2, 0.1, 0.2 }, + trailerAxleWeightDistribution: new[] { 0.5 }, + trailerAxleCount: new[] { 2 }, + bodyCurbWeight: 0, + trailerCurbWeight: new[] { 5600.0 }, + trailerType: new[] { TrailerType.STT2 }, + lowLoad: 2600, + refLoad: 12900, + trailerGrossVehicleWeight: new[] { 18000.0 }, + deltaCdA: 0, + maxLoad: 26900); + + } + /// <summary> /// Segment 11: fixed reference weight, trailer always used /// </summary> @@ -1348,7 +1588,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration }; var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, - vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight); + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, false); Assert.AreEqual(VehicleClass.Class11, segment.VehicleClass); @@ -1445,14 +1685,14 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration axleWeightDistribution: new[] { 0.35, 0.35, 0.3 }, trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, - bodyCurbWeight: 2200, + bodyCurbWeight: 3100, trailerCurbWeight: new double[] { }, trailerType: new TrailerType[] { }, lowLoad: 1400, refLoad: 7100, trailerGrossVehicleWeight: new double[] { }, deltaCdA: 0, - maxLoad: 14300); + maxLoad: 13400); } /// <summary> @@ -1469,7 +1709,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration }; var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, - vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight); + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, false); Assert.AreEqual(VehicleClass.Class12, segment.VehicleClass); @@ -1550,15 +1790,15 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration cosswindCorrection: "TractorSemitrailer", axleWeightDistribution: new[] { 0.2, 0.15, 0.15 }, trailerAxleWeightDistribution: new[] { 0.5 }, - trailerAxleCount: new[] { 3 }, + trailerAxleCount: new[] { 2 }, bodyCurbWeight: 0, - trailerCurbWeight: new[] { 7500.0 }, - trailerType: new[] { TrailerType.ST1 }, + trailerCurbWeight: new[] { 5600.0 }, + trailerType: new[] { TrailerType.STT2 }, lowLoad: 2600, refLoad: 12900, - trailerGrossVehicleWeight: new[] { 24000.0 }, + trailerGrossVehicleWeight: new[] { 18000.0 }, deltaCdA: 0, - maxLoad: 25000, + maxLoad: 26900, ems: false); } @@ -1576,7 +1816,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration }; var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration, - vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight); + vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight, false); Assert.AreEqual(VehicleClass.Class16, segment.VehicleClass); @@ -1592,14 +1832,14 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration axleWeightDistribution: new[] { 0.25, 0.25, 0.25, 0.25 }, trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, - bodyCurbWeight: 0, + bodyCurbWeight: 4200, trailerCurbWeight: new double[] { }, trailerType: new TrailerType[] { }, lowLoad: 2600, refLoad: 12900, trailerGrossVehicleWeight: new double[] { }, deltaCdA: 0, - maxLoad: 28500); + maxLoad: 24300); } public static void AssertMission(Mission m, dynamic vehicleData, MissionType missionType, string cosswindCorrection, @@ -1699,7 +1939,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration var dataReader = new DeclarationModeVectoRunDataFactory(dataProvider, null); var runs = dataReader.NextRun().ToList(); - Assert.AreEqual(6, runs.Count); + Assert.AreEqual(8, runs.Count); var withT1 = new[] { 14.9, 14.9, 19.2, 19.2 }; CollectionAssert.AreEqual(withT1, runs[0].VehicleData.AxleData.Select(a => a.Inertia.Value())); CollectionAssert.AreEqual(withT1, runs[1].VehicleData.AxleData.Select(a => a.Inertia.Value())); @@ -1710,6 +1950,9 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration CollectionAssert.AreEqual(bodyOnly, runs[4].VehicleData.AxleData.Select(a => a.Inertia.Value())); CollectionAssert.AreEqual(bodyOnly, runs[5].VehicleData.AxleData.Select(a => a.Inertia.Value())); + + CollectionAssert.AreEqual(bodyOnly, runs[6].VehicleData.AxleData.Select(a => a.Inertia.Value())); + CollectionAssert.AreEqual(bodyOnly, runs[7].VehicleData.AxleData.Select(a => a.Inertia.Value())); } [TestCase] @@ -1722,10 +1965,11 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration var runs = dataReader.NextRun().ToList(); Assert.AreEqual(VehicleClass.Class5, runs[0].VehicleData.VehicleClass); - Assert.AreEqual(8, runs.Count); + Assert.AreEqual(10, runs.Count); //var bodyOnly = new[] { 14.9, 14.9 }; var withST1 = new[] { 14.9, 14.9, 19.2, 19.2, 19.2 }; + var withSTT1 = new[] { 14.9, 14.9, 19.2, 19.2, 19.2 }; var withST1andT2 = new[] { 14.9, 14.9, 19.2, 19.2, 19.2, 19.2, 19.2 }; CollectionAssert.AreEqual(withST1, runs[0].VehicleData.AxleData.Select(a => a.Inertia.Value())); @@ -1739,6 +1983,9 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration CollectionAssert.AreEqual(withST1andT2, runs[6].VehicleData.AxleData.Select(a => a.Inertia.Value())); CollectionAssert.AreEqual(withST1andT2, runs[7].VehicleData.AxleData.Select(a => a.Inertia.Value())); + + CollectionAssert.AreEqual(withSTT1, runs[8].VehicleData.AxleData.Select(a => a.Inertia.Value())); + CollectionAssert.AreEqual(withSTT1, runs[9].VehicleData.AxleData.Select(a => a.Inertia.Value())); } } } \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs index 0787985f677d53bddfa13dd9fccf6e2f81780717..cd4f1b2237ee3c0a7ddbc21d41667b36719bf37d 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs @@ -82,7 +82,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null) { Validate = false }; var runs = factory.SimulationRuns().ToArray(); - Assert.AreEqual(8, runs.Length); + Assert.AreEqual(10, runs.Length); } [TestCase()] diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class4_Vocational/Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class4_Vocational/Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml new file mode 100644 index 0000000000000000000000000000000000000000..7edc44e504c22c8b4dab0856f57c608c9cd44597 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class4_Vocational/Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml @@ -0,0 +1,576 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> + <Vehicle id="VEH-class4"> + <Manufacturer>Generic Vendor</Manufacturer> + <ManufacturerAddress>N.A.</ManufacturerAddress> + <Model>N.A.</Model> + <VIN>N/A</VIN> + <Date>2017-07-06T15:06:08.2533609Z</Date> + <LegislativeClass>N3</LegislativeClass> + <VehicleCategory>Rigid Truck</VehicleCategory> + <AxleConfiguration>4x2</AxleConfiguration> + <CurbMassChassis>8200</CurbMassChassis> + <GrossVehicleMass>18000</GrossVehicleMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <PTO> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>true</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <ADAS> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components> + <Engine> + <Data id="ENG-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>ENG-N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.2543609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Displacement>12742</Displacement> + <IdlingSpeed>600</IdlingSpeed> + <RatedSpeed>1736</RatedSpeed> + <RatedPower>325032</RatedPower> + <MaxEngineTorque>2134</MaxEngineTorque> + <WHTCUrban>1.0000</WHTCUrban> + <WHTCRural>1.0000</WHTCRural> + <WHTCMotorway>1.0000</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>Diesel CI</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="600.00" torque="-139.00" fuelConsumption="0.00" /> + <Entry engineSpeed="600.00" torque="0.00" fuelConsumption="1355.00" /> + <Entry engineSpeed="600.00" torque="186.00" fuelConsumption="3118.00" /> + <Entry engineSpeed="600.00" torque="371.00" fuelConsumption="5105.00" /> + <Entry engineSpeed="600.00" torque="557.00" fuelConsumption="7522.00" /> + <Entry engineSpeed="600.00" torque="743.00" fuelConsumption="9298.00" /> + <Entry engineSpeed="600.00" torque="928.00" fuelConsumption="11208.00" /> + <Entry engineSpeed="600.00" torque="1114.00" fuelConsumption="13370.00" /> + <Entry engineSpeed="600.00" torque="1190.00" fuelConsumption="14252.00" /> + <Entry engineSpeed="800.00" torque="-144.00" fuelConsumption="0.00" /> + <Entry engineSpeed="800.00" torque="0.00" fuelConsumption="1745.00" /> + <Entry engineSpeed="800.00" torque="186.00" fuelConsumption="3979.00" /> + <Entry engineSpeed="800.00" torque="371.00" fuelConsumption="6824.00" /> + <Entry engineSpeed="800.00" torque="557.00" fuelConsumption="9340.00" /> + <Entry engineSpeed="800.00" torque="743.00" fuelConsumption="12150.00" /> + <Entry engineSpeed="800.00" torque="928.00" fuelConsumption="14870.00" /> + <Entry engineSpeed="800.00" torque="1114.00" fuelConsumption="17863.00" /> + <Entry engineSpeed="800.00" torque="1300.00" fuelConsumption="20822.00" /> + <Entry engineSpeed="800.00" torque="1486.00" fuelConsumption="23769.00" /> + <Entry engineSpeed="800.00" torque="1663.00" fuelConsumption="26838.00" /> + <Entry engineSpeed="1000.00" torque="-153.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1000.00" torque="0.00" fuelConsumption="2660.00" /> + <Entry engineSpeed="1000.00" torque="186.00" fuelConsumption="5536.00" /> + <Entry engineSpeed="1000.00" torque="371.00" fuelConsumption="8540.00" /> + <Entry engineSpeed="1000.00" torque="557.00" fuelConsumption="11470.00" /> + <Entry engineSpeed="1000.00" torque="743.00" fuelConsumption="14823.00" /> + <Entry engineSpeed="1000.00" torque="928.00" fuelConsumption="18443.00" /> + <Entry engineSpeed="1000.00" torque="1114.00" fuelConsumption="21847.00" /> + <Entry engineSpeed="1000.00" torque="1300.00" fuelConsumption="25256.00" /> + <Entry engineSpeed="1000.00" torque="1486.00" fuelConsumption="28936.00" /> + <Entry engineSpeed="1000.00" torque="1671.00" fuelConsumption="32592.00" /> + <Entry engineSpeed="1000.00" torque="1857.00" fuelConsumption="36545.00" /> + <Entry engineSpeed="1000.00" torque="2043.00" fuelConsumption="40964.00" /> + <Entry engineSpeed="1000.00" torque="2135.00" fuelConsumption="43486.00" /> + <Entry engineSpeed="1200.00" torque="-166.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1200.00" torque="0.00" fuelConsumption="3070.00" /> + <Entry engineSpeed="1200.00" torque="186.00" fuelConsumption="6404.00" /> + <Entry engineSpeed="1200.00" torque="371.00" fuelConsumption="9889.00" /> + <Entry engineSpeed="1200.00" torque="557.00" fuelConsumption="13598.00" /> + <Entry engineSpeed="1200.00" torque="743.00" fuelConsumption="17748.00" /> + <Entry engineSpeed="1200.00" torque="928.00" fuelConsumption="21984.00" /> + <Entry engineSpeed="1200.00" torque="1114.00" fuelConsumption="26164.00" /> + <Entry engineSpeed="1200.00" torque="1300.00" fuelConsumption="30111.00" /> + <Entry engineSpeed="1200.00" torque="1486.00" fuelConsumption="34354.00" /> + <Entry engineSpeed="1200.00" torque="1671.00" fuelConsumption="38709.00" /> + <Entry engineSpeed="1200.00" torque="1857.00" fuelConsumption="43559.00" /> + <Entry engineSpeed="1200.00" torque="2043.00" fuelConsumption="48079.00" /> + <Entry engineSpeed="1200.00" torque="2135.00" fuelConsumption="51003.00" /> + <Entry engineSpeed="1400.00" torque="-188.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1400.00" torque="0.00" fuelConsumption="3998.00" /> + <Entry engineSpeed="1400.00" torque="186.00" fuelConsumption="7561.00" /> + <Entry engineSpeed="1400.00" torque="371.00" fuelConsumption="11813.00" /> + <Entry engineSpeed="1400.00" torque="557.00" fuelConsumption="16270.00" /> + <Entry engineSpeed="1400.00" torque="743.00" fuelConsumption="20694.00" /> + <Entry engineSpeed="1400.00" torque="928.00" fuelConsumption="25155.00" /> + <Entry engineSpeed="1400.00" torque="1114.00" fuelConsumption="30209.00" /> + <Entry engineSpeed="1400.00" torque="1300.00" fuelConsumption="35046.00" /> + <Entry engineSpeed="1400.00" torque="1486.00" fuelConsumption="40105.00" /> + <Entry engineSpeed="1400.00" torque="1671.00" fuelConsumption="45916.00" /> + <Entry engineSpeed="1400.00" torque="1857.00" fuelConsumption="51762.00" /> + <Entry engineSpeed="1400.00" torque="2043.00" fuelConsumption="56704.00" /> + <Entry engineSpeed="1400.00" torque="2135.00" fuelConsumption="59772.00" /> + <Entry engineSpeed="1600.00" torque="-218.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1600.00" torque="0.00" fuelConsumption="4836.00" /> + <Entry engineSpeed="1600.00" torque="186.00" fuelConsumption="8977.00" /> + <Entry engineSpeed="1600.00" torque="371.00" fuelConsumption="13777.00" /> + <Entry engineSpeed="1600.00" torque="557.00" fuelConsumption="18687.00" /> + <Entry engineSpeed="1600.00" torque="743.00" fuelConsumption="24042.00" /> + <Entry engineSpeed="1600.00" torque="928.00" fuelConsumption="29369.00" /> + <Entry engineSpeed="1600.00" torque="1114.00" fuelConsumption="34584.00" /> + <Entry engineSpeed="1600.00" torque="1300.00" fuelConsumption="40342.00" /> + <Entry engineSpeed="1600.00" torque="1486.00" fuelConsumption="46194.00" /> + <Entry engineSpeed="1600.00" torque="1671.00" fuelConsumption="52942.00" /> + <Entry engineSpeed="1600.00" torque="1857.00" fuelConsumption="59343.00" /> + <Entry engineSpeed="1600.00" torque="1930.00" fuelConsumption="61762.00" /> + <Entry engineSpeed="1800.00" torque="-245.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1800.00" torque="0.00" fuelConsumption="5951.00" /> + <Entry engineSpeed="1800.00" torque="186.00" fuelConsumption="10935.00" /> + <Entry engineSpeed="1800.00" torque="371.00" fuelConsumption="16081.00" /> + <Entry engineSpeed="1800.00" torque="557.00" fuelConsumption="21721.00" /> + <Entry engineSpeed="1800.00" torque="743.00" fuelConsumption="28319.00" /> + <Entry engineSpeed="1800.00" torque="928.00" fuelConsumption="33776.00" /> + <Entry engineSpeed="1800.00" torque="1114.00" fuelConsumption="39998.00" /> + <Entry engineSpeed="1800.00" torque="1300.00" fuelConsumption="46656.00" /> + <Entry engineSpeed="1800.00" torque="1486.00" fuelConsumption="53328.00" /> + <Entry engineSpeed="1800.00" torque="1671.00" fuelConsumption="60497.00" /> + <Entry engineSpeed="1800.00" torque="1724.00" fuelConsumption="62741.00" /> + <Entry engineSpeed="2000.00" torque="-279.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2000.00" torque="0.00" fuelConsumption="8474.00" /> + <Entry engineSpeed="2000.00" torque="186.00" fuelConsumption="13762.00" /> + <Entry engineSpeed="2000.00" torque="371.00" fuelConsumption="19178.00" /> + <Entry engineSpeed="2000.00" torque="557.00" fuelConsumption="25139.00" /> + <Entry engineSpeed="2000.00" torque="743.00" fuelConsumption="31743.00" /> + <Entry engineSpeed="2000.00" torque="928.00" fuelConsumption="39773.00" /> + <Entry engineSpeed="2000.00" torque="1114.00" fuelConsumption="47369.00" /> + <Entry engineSpeed="2000.00" torque="1255.00" fuelConsumption="52568.00" /> + <Entry engineSpeed="2100.00" torque="-297.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2100.00" torque="0.00" fuelConsumption="9721.00" /> + <Entry engineSpeed="2100.00" torque="186.00" fuelConsumption="15164.00" /> + <Entry engineSpeed="2100.00" torque="371.00" fuelConsumption="20794.00" /> + <Entry engineSpeed="2100.00" torque="557.00" fuelConsumption="26846.00" /> + <Entry engineSpeed="2100.00" torque="743.00" fuelConsumption="33162.00" /> + <Entry engineSpeed="2100.00" torque="928.00" fuelConsumption="42378.00" /> + <Entry engineSpeed="2100.00" torque="1021.00" fuelConsumption="47030.00" /> + <Entry engineSpeed="2200.00" torque="-315.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2200.00" torque="0.00" fuelConsumption="12483.00" /> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00" /> + <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00" /> + <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00" /> + <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00" /> + <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00" /> + <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00" /> + <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00" /> + <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00" /> + <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00" /> + <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00" /> + </FullLoadAndDragCurve> + </Data> + <Signature> + <Reference URI="#ENG-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Engine> + <Gearbox> + <Data id="GBX-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>GBX-N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.2603609Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears> + <Gear number="1"> + <Ratio>14.930</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="4"> + <Ratio>7.040</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="5"> + <Ratio>5.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="6"> + <Ratio>4.400</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="7"> + <Ratio>3.390</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="8"> + <Ratio>2.650</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="9"> + <Ratio>2.050</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="10"> + <Ratio>1.600</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="11"> + <Ratio>1.280</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="12"> + <Ratio>1.000</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="0.00" inputTorque="-250.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="5000.00" inputTorque="-845.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="845.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="200.00" /> + </TorqueLossMap> + </Gear> + </Gears> + </Data> + <Signature> + <Reference URI="#GBX-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Gearbox> + <Retarder> + <Data id="RET-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N/A</CertificationNumber> + <Date>2017-07-06T15:06:08.2603609Z</Date> + <AppVersion>VectoCore</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00" /> + <Entry retarderSpeed="100.00" torqueLoss="10.00" /> + <Entry retarderSpeed="200.00" torqueLoss="10.10" /> + <Entry retarderSpeed="300.00" torqueLoss="10.20" /> + <Entry retarderSpeed="400.00" torqueLoss="10.30" /> + <Entry retarderSpeed="500.00" torqueLoss="10.50" /> + <Entry retarderSpeed="600.00" torqueLoss="10.70" /> + <Entry retarderSpeed="700.00" torqueLoss="11.00" /> + <Entry retarderSpeed="800.00" torqueLoss="11.30" /> + <Entry retarderSpeed="900.00" torqueLoss="11.60" /> + <Entry retarderSpeed="1000.00" torqueLoss="12.00" /> + <Entry retarderSpeed="1100.00" torqueLoss="12.40" /> + <Entry retarderSpeed="1200.00" torqueLoss="12.90" /> + <Entry retarderSpeed="1300.00" torqueLoss="13.40" /> + <Entry retarderSpeed="1400.00" torqueLoss="13.90" /> + <Entry retarderSpeed="1500.00" torqueLoss="14.50" /> + <Entry retarderSpeed="1600.00" torqueLoss="15.10" /> + <Entry retarderSpeed="1700.00" torqueLoss="15.80" /> + <Entry retarderSpeed="1800.00" torqueLoss="16.50" /> + <Entry retarderSpeed="1900.00" torqueLoss="17.20" /> + <Entry retarderSpeed="2000.00" torqueLoss="18.00" /> + <Entry retarderSpeed="2100.00" torqueLoss="18.80" /> + <Entry retarderSpeed="2200.00" torqueLoss="19.70" /> + <Entry retarderSpeed="2300.00" torqueLoss="20.60" /> + <Entry retarderSpeed="2400.00" torqueLoss="21.50" /> + <Entry retarderSpeed="2500.00" torqueLoss="22.50" /> + <Entry retarderSpeed="2600.00" torqueLoss="23.50" /> + <Entry retarderSpeed="2700.00" torqueLoss="24.60" /> + <Entry retarderSpeed="2800.00" torqueLoss="25.70" /> + <Entry retarderSpeed="2900.00" torqueLoss="26.80" /> + <Entry retarderSpeed="3000.00" torqueLoss="28.00" /> + </RetarderLossMap> + </Data> + <Signature> + <Reference URI="#RET-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Retarder> + <Axlegear> + <Data id="AXLGEAR-2.640"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>AXLGEAR-2.640</CertificationNumber> + <Date>2017-07-06T15:06:08.2603609Z</Date> + <AppVersion>VectoCore</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.640</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-50.00" torqueLoss="2.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="0.00" /> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="2.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50.00" torqueLoss="2.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="0.00" /> + <Entry inputSpeed="5000.00" inputTorque="50.00" torqueLoss="2.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Data> + <Signature> + <Reference URI="#AXLGEAR-2.640" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Axlegear> + <AxleWheels> + <Data> + <Axles> + <Axle axleNumber="1"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2017-07-06T15:06:08.2613609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0051</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="2"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2017-07-06T15:06:08.2613609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0061</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data> + <Fan> + <Technology>Crankshaft mounted - Electronically controlled visco clutch</Technology> + </Fan> + <SteeringPump> + <Technology>Fixed displacement</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Small</Technology> + </PneumaticSystem> + <HVAC> + <Technology>None</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <Data id="Airdrag-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.2613609Z</Date> + <AppVersion>VectoCore</AppVersion> + <CdxA_0>5.95</CdxA_0> + <TransferredCdxA>5.95</TransferredCdxA> + <DeclaredCdxA>5.95</DeclaredCdxA> + </Data> + <Signature> + <Reference URI="#Airdrag-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </AirDrag> + </Components> + </Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_Vocational/Tractor_4x2_vehicle-class-5_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_Vocational/Tractor_4x2_vehicle-class-5_EURO6_2018.xml new file mode 100644 index 0000000000000000000000000000000000000000..455dede892a66afec55c0ca2a6c0a61bbd1dbca2 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_Vocational/Tractor_4x2_vehicle-class-5_EURO6_2018.xml @@ -0,0 +1,576 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> + <Vehicle id="VEH-Class5"> + <Manufacturer>Generic Vendor</Manufacturer> + <ManufacturerAddress>N.A.</ManufacturerAddress> + <Model>N.A.</Model> + <VIN>N/A</VIN> + <Date>2017-07-06T15:06:08.3093609Z</Date> + <LegislativeClass>N3</LegislativeClass> + <VehicleCategory>Tractor</VehicleCategory> + <AxleConfiguration>4x2</AxleConfiguration> + <CurbMassChassis>8229</CurbMassChassis> + <GrossVehicleMass>18000</GrossVehicleMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <PTO> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>true</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <ADAS> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components> + <Engine> + <Data id="ENG-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>ENG-N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.3103609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Displacement>12740</Displacement> + <IdlingSpeed>600</IdlingSpeed> + <RatedSpeed>1736</RatedSpeed> + <RatedPower>325032</RatedPower> + <MaxEngineTorque>2134</MaxEngineTorque> + <WHTCUrban>1.0000</WHTCUrban> + <WHTCRural>1.0000</WHTCRural> + <WHTCMotorway>1.0000</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>Diesel CI</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="600.00" torque="-139.00" fuelConsumption="0.00" /> + <Entry engineSpeed="600.00" torque="0.00" fuelConsumption="1355.00" /> + <Entry engineSpeed="600.00" torque="186.00" fuelConsumption="3118.00" /> + <Entry engineSpeed="600.00" torque="371.00" fuelConsumption="5105.00" /> + <Entry engineSpeed="600.00" torque="557.00" fuelConsumption="7522.00" /> + <Entry engineSpeed="600.00" torque="743.00" fuelConsumption="9298.00" /> + <Entry engineSpeed="600.00" torque="928.00" fuelConsumption="11208.00" /> + <Entry engineSpeed="600.00" torque="1114.00" fuelConsumption="13370.00" /> + <Entry engineSpeed="600.00" torque="1190.00" fuelConsumption="14252.00" /> + <Entry engineSpeed="800.00" torque="-144.00" fuelConsumption="0.00" /> + <Entry engineSpeed="800.00" torque="0.00" fuelConsumption="1745.00" /> + <Entry engineSpeed="800.00" torque="186.00" fuelConsumption="3979.00" /> + <Entry engineSpeed="800.00" torque="371.00" fuelConsumption="6824.00" /> + <Entry engineSpeed="800.00" torque="557.00" fuelConsumption="9340.00" /> + <Entry engineSpeed="800.00" torque="743.00" fuelConsumption="12150.00" /> + <Entry engineSpeed="800.00" torque="928.00" fuelConsumption="14870.00" /> + <Entry engineSpeed="800.00" torque="1114.00" fuelConsumption="17863.00" /> + <Entry engineSpeed="800.00" torque="1300.00" fuelConsumption="20822.00" /> + <Entry engineSpeed="800.00" torque="1486.00" fuelConsumption="23769.00" /> + <Entry engineSpeed="800.00" torque="1663.00" fuelConsumption="26838.00" /> + <Entry engineSpeed="1000.00" torque="-153.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1000.00" torque="0.00" fuelConsumption="2660.00" /> + <Entry engineSpeed="1000.00" torque="186.00" fuelConsumption="5536.00" /> + <Entry engineSpeed="1000.00" torque="371.00" fuelConsumption="8540.00" /> + <Entry engineSpeed="1000.00" torque="557.00" fuelConsumption="11470.00" /> + <Entry engineSpeed="1000.00" torque="743.00" fuelConsumption="14823.00" /> + <Entry engineSpeed="1000.00" torque="928.00" fuelConsumption="18443.00" /> + <Entry engineSpeed="1000.00" torque="1114.00" fuelConsumption="21847.00" /> + <Entry engineSpeed="1000.00" torque="1300.00" fuelConsumption="25256.00" /> + <Entry engineSpeed="1000.00" torque="1486.00" fuelConsumption="28936.00" /> + <Entry engineSpeed="1000.00" torque="1671.00" fuelConsumption="32592.00" /> + <Entry engineSpeed="1000.00" torque="1857.00" fuelConsumption="36545.00" /> + <Entry engineSpeed="1000.00" torque="2043.00" fuelConsumption="40964.00" /> + <Entry engineSpeed="1000.00" torque="2135.00" fuelConsumption="43486.00" /> + <Entry engineSpeed="1200.00" torque="-166.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1200.00" torque="0.00" fuelConsumption="3070.00" /> + <Entry engineSpeed="1200.00" torque="186.00" fuelConsumption="6404.00" /> + <Entry engineSpeed="1200.00" torque="371.00" fuelConsumption="9889.00" /> + <Entry engineSpeed="1200.00" torque="557.00" fuelConsumption="13598.00" /> + <Entry engineSpeed="1200.00" torque="743.00" fuelConsumption="17748.00" /> + <Entry engineSpeed="1200.00" torque="928.00" fuelConsumption="21984.00" /> + <Entry engineSpeed="1200.00" torque="1114.00" fuelConsumption="26164.00" /> + <Entry engineSpeed="1200.00" torque="1300.00" fuelConsumption="30111.00" /> + <Entry engineSpeed="1200.00" torque="1486.00" fuelConsumption="34354.00" /> + <Entry engineSpeed="1200.00" torque="1671.00" fuelConsumption="38709.00" /> + <Entry engineSpeed="1200.00" torque="1857.00" fuelConsumption="43559.00" /> + <Entry engineSpeed="1200.00" torque="2043.00" fuelConsumption="48079.00" /> + <Entry engineSpeed="1200.00" torque="2135.00" fuelConsumption="51003.00" /> + <Entry engineSpeed="1400.00" torque="-188.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1400.00" torque="0.00" fuelConsumption="3998.00" /> + <Entry engineSpeed="1400.00" torque="186.00" fuelConsumption="7561.00" /> + <Entry engineSpeed="1400.00" torque="371.00" fuelConsumption="11813.00" /> + <Entry engineSpeed="1400.00" torque="557.00" fuelConsumption="16270.00" /> + <Entry engineSpeed="1400.00" torque="743.00" fuelConsumption="20694.00" /> + <Entry engineSpeed="1400.00" torque="928.00" fuelConsumption="25155.00" /> + <Entry engineSpeed="1400.00" torque="1114.00" fuelConsumption="30209.00" /> + <Entry engineSpeed="1400.00" torque="1300.00" fuelConsumption="35046.00" /> + <Entry engineSpeed="1400.00" torque="1486.00" fuelConsumption="40105.00" /> + <Entry engineSpeed="1400.00" torque="1671.00" fuelConsumption="45916.00" /> + <Entry engineSpeed="1400.00" torque="1857.00" fuelConsumption="51762.00" /> + <Entry engineSpeed="1400.00" torque="2043.00" fuelConsumption="56704.00" /> + <Entry engineSpeed="1400.00" torque="2135.00" fuelConsumption="59772.00" /> + <Entry engineSpeed="1600.00" torque="-218.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1600.00" torque="0.00" fuelConsumption="4836.00" /> + <Entry engineSpeed="1600.00" torque="186.00" fuelConsumption="8977.00" /> + <Entry engineSpeed="1600.00" torque="371.00" fuelConsumption="13777.00" /> + <Entry engineSpeed="1600.00" torque="557.00" fuelConsumption="18687.00" /> + <Entry engineSpeed="1600.00" torque="743.00" fuelConsumption="24042.00" /> + <Entry engineSpeed="1600.00" torque="928.00" fuelConsumption="29369.00" /> + <Entry engineSpeed="1600.00" torque="1114.00" fuelConsumption="34584.00" /> + <Entry engineSpeed="1600.00" torque="1300.00" fuelConsumption="40342.00" /> + <Entry engineSpeed="1600.00" torque="1486.00" fuelConsumption="46194.00" /> + <Entry engineSpeed="1600.00" torque="1671.00" fuelConsumption="52942.00" /> + <Entry engineSpeed="1600.00" torque="1857.00" fuelConsumption="59343.00" /> + <Entry engineSpeed="1600.00" torque="1930.00" fuelConsumption="61762.00" /> + <Entry engineSpeed="1800.00" torque="-245.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1800.00" torque="0.00" fuelConsumption="5951.00" /> + <Entry engineSpeed="1800.00" torque="186.00" fuelConsumption="10935.00" /> + <Entry engineSpeed="1800.00" torque="371.00" fuelConsumption="16081.00" /> + <Entry engineSpeed="1800.00" torque="557.00" fuelConsumption="21721.00" /> + <Entry engineSpeed="1800.00" torque="743.00" fuelConsumption="28319.00" /> + <Entry engineSpeed="1800.00" torque="928.00" fuelConsumption="33776.00" /> + <Entry engineSpeed="1800.00" torque="1114.00" fuelConsumption="39998.00" /> + <Entry engineSpeed="1800.00" torque="1300.00" fuelConsumption="46656.00" /> + <Entry engineSpeed="1800.00" torque="1486.00" fuelConsumption="53328.00" /> + <Entry engineSpeed="1800.00" torque="1671.00" fuelConsumption="60497.00" /> + <Entry engineSpeed="1800.00" torque="1724.00" fuelConsumption="62741.00" /> + <Entry engineSpeed="2000.00" torque="-279.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2000.00" torque="0.00" fuelConsumption="8474.00" /> + <Entry engineSpeed="2000.00" torque="186.00" fuelConsumption="13762.00" /> + <Entry engineSpeed="2000.00" torque="371.00" fuelConsumption="19178.00" /> + <Entry engineSpeed="2000.00" torque="557.00" fuelConsumption="25139.00" /> + <Entry engineSpeed="2000.00" torque="743.00" fuelConsumption="31743.00" /> + <Entry engineSpeed="2000.00" torque="928.00" fuelConsumption="39773.00" /> + <Entry engineSpeed="2000.00" torque="1114.00" fuelConsumption="47369.00" /> + <Entry engineSpeed="2000.00" torque="1255.00" fuelConsumption="52568.00" /> + <Entry engineSpeed="2100.00" torque="-297.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2100.00" torque="0.00" fuelConsumption="9721.00" /> + <Entry engineSpeed="2100.00" torque="186.00" fuelConsumption="15164.00" /> + <Entry engineSpeed="2100.00" torque="371.00" fuelConsumption="20794.00" /> + <Entry engineSpeed="2100.00" torque="557.00" fuelConsumption="26846.00" /> + <Entry engineSpeed="2100.00" torque="743.00" fuelConsumption="33162.00" /> + <Entry engineSpeed="2100.00" torque="928.00" fuelConsumption="42378.00" /> + <Entry engineSpeed="2100.00" torque="1021.00" fuelConsumption="47030.00" /> + <Entry engineSpeed="2200.00" torque="-315.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2200.00" torque="0.00" fuelConsumption="12483.00" /> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00" /> + <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00" /> + <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00" /> + <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00" /> + <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00" /> + <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00" /> + <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00" /> + <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00" /> + <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00" /> + <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00" /> + </FullLoadAndDragCurve> + </Data> + <Signature> + <Reference URI="#ENG-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Engine> + <Gearbox> + <Data id="GBX-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>GBX-N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.3133609Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears> + <Gear number="1"> + <Ratio>14.930</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="4"> + <Ratio>7.040</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="5"> + <Ratio>5.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="6"> + <Ratio>4.400</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="7"> + <Ratio>3.390</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="8"> + <Ratio>2.650</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="9"> + <Ratio>2.050</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="10"> + <Ratio>1.600</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="11"> + <Ratio>1.280</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="12"> + <Ratio>1.000</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="0.00" inputTorque="-250.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="5000.00" inputTorque="-845.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="845.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="200.00" /> + </TorqueLossMap> + </Gear> + </Gears> + </Data> + <Signature> + <Reference URI="#GBX-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Gearbox> + <Retarder> + <Data id="RET-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N/A</CertificationNumber> + <Date>2017-07-06T15:06:08.3133609Z</Date> + <AppVersion>VectoCore</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00" /> + <Entry retarderSpeed="100.00" torqueLoss="10.00" /> + <Entry retarderSpeed="200.00" torqueLoss="10.10" /> + <Entry retarderSpeed="300.00" torqueLoss="10.20" /> + <Entry retarderSpeed="400.00" torqueLoss="10.30" /> + <Entry retarderSpeed="500.00" torqueLoss="10.50" /> + <Entry retarderSpeed="600.00" torqueLoss="10.70" /> + <Entry retarderSpeed="700.00" torqueLoss="11.00" /> + <Entry retarderSpeed="800.00" torqueLoss="11.30" /> + <Entry retarderSpeed="900.00" torqueLoss="11.60" /> + <Entry retarderSpeed="1000.00" torqueLoss="12.00" /> + <Entry retarderSpeed="1100.00" torqueLoss="12.40" /> + <Entry retarderSpeed="1200.00" torqueLoss="12.90" /> + <Entry retarderSpeed="1300.00" torqueLoss="13.40" /> + <Entry retarderSpeed="1400.00" torqueLoss="13.90" /> + <Entry retarderSpeed="1500.00" torqueLoss="14.50" /> + <Entry retarderSpeed="1600.00" torqueLoss="15.10" /> + <Entry retarderSpeed="1700.00" torqueLoss="15.80" /> + <Entry retarderSpeed="1800.00" torqueLoss="16.50" /> + <Entry retarderSpeed="1900.00" torqueLoss="17.20" /> + <Entry retarderSpeed="2000.00" torqueLoss="18.00" /> + <Entry retarderSpeed="2100.00" torqueLoss="18.80" /> + <Entry retarderSpeed="2200.00" torqueLoss="19.70" /> + <Entry retarderSpeed="2300.00" torqueLoss="20.60" /> + <Entry retarderSpeed="2400.00" torqueLoss="21.50" /> + <Entry retarderSpeed="2500.00" torqueLoss="22.50" /> + <Entry retarderSpeed="2600.00" torqueLoss="23.50" /> + <Entry retarderSpeed="2700.00" torqueLoss="24.60" /> + <Entry retarderSpeed="2800.00" torqueLoss="25.70" /> + <Entry retarderSpeed="2900.00" torqueLoss="26.80" /> + <Entry retarderSpeed="3000.00" torqueLoss="28.00" /> + </RetarderLossMap> + </Data> + <Signature> + <Reference URI="#RET-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Retarder> + <Axlegear> + <Data id="AXLGEAR-2.640"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>AXLGEAR-2.640</CertificationNumber> + <Date>2017-07-06T15:06:08.3153609Z</Date> + <AppVersion>VectoCore</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.640</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-50.00" torqueLoss="2.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="0.00" /> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="2.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50.00" torqueLoss="2.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="0.00" /> + <Entry inputSpeed="5000.00" inputTorque="50.00" torqueLoss="2.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Data> + <Signature> + <Reference URI="#AXLGEAR-2.640" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Axlegear> + <AxleWheels> + <Data> + <Axles> + <Axle axleNumber="1"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2017-07-06T15:06:08.3153609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0051</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="2"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2017-07-06T15:06:08.3153609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0061</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data> + <Fan> + <Technology>Crankshaft mounted - Electronically controlled visco clutch</Technology> + </Fan> + <SteeringPump> + <Technology>Fixed displacement</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Small</Technology> + </PneumaticSystem> + <HVAC> + <Technology>None</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <Data id="Airdrag-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.3163609Z</Date> + <AppVersion>VectoCore</AppVersion> + <CdxA_0>5.45</CdxA_0> + <TransferredCdxA>5.45</TransferredCdxA> + <DeclaredCdxA>5.45</DeclaredCdxA> + </Data> + <Signature> + <Reference URI="#Airdrag-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </AirDrag> + </Components> + </Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index 267659493657509de756f74761216ae3356506bc..63bbe9001d082aff119c9a7880d2a2e627587c35 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -85,6 +85,7 @@ <Compile Include="Integration\CoachPowerTrain.cs" /> <Compile Include="Integration\Declaration\EngineInputDataTests.cs" /> <Compile Include="Integration\DriverStrategy\SimpleCycles.cs" /> + <Compile Include="Integration\VocationalVehicleTest.cs" /> <Compile Include="Integration\VTP\VTPTest.cs" /> <Compile Include="Integration\FuelTypesTest.cs" /> <Compile Include="Integration\FullCycleDeclarationTest.cs"> @@ -2707,6 +2708,12 @@ <Folder Include="Integration\FullPowertrain\" /> </ItemGroup> <ItemGroup> + <Content Include="TestData\Integration\DeclarationMode\Class4_Vocational\Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\Integration\DeclarationMode\Class5_Vocational\Tractor_4x2_vehicle-class-5_EURO6_2018.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> <Content Include="TestData\Integration\DeclarationMode\EngineSpeedTooHigh\vecto_vehicle-sample_9gears.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs index aadd422acf9e16762baf460095f6a56b1be6513a..af41e4aeb55ab76232923c8787014bf8dac93b4c 100644 --- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs @@ -403,7 +403,7 @@ namespace TUGraz.VectoCore.Tests.XML jobContainer.AddRuns(runsFactory); - Assert.AreEqual(8, jobContainer.Runs.Count); + Assert.AreEqual(10, jobContainer.Runs.Count); } [TestCase]