diff --git a/VECTO/Input Files/VectoEPTPJob.vb b/VECTO/Input Files/VectoEPTPJob.vb index 86b6bc81a0f0a31b83da7ac7f6f4bb13d6dfcf06..1113d0008a46c5468e37c8ec3798a0dbc32b570f 100644 --- a/VECTO/Input Files/VectoEPTPJob.vb +++ b/VECTO/Input Files/VectoEPTPJob.vb @@ -224,8 +224,13 @@ Public Class VectoVTPJob End Get End Property + Public ReadOnly Property Results As IResultsInputData Implements IManufacturerReport.Results + Public ReadOnly Property ComponentDigests As IDictionary(Of VectoComponents,IList(Of String)) Implements IManufacturerReport.ComponentDigests Public ReadOnly Property JobDigest As DigestData Implements IManufacturerReport.JobDigest + Public ReadOnly Property VehicleLength As Meter Implements IManufacturerReport.VehicleLength + Public ReadOnly Property VehicleClass As VehicleClass Implements IManufacturerReport.VehicleClass + Public ReadOnly Property VehicleCode As VehicleCode Implements IManufacturerReport.VehicleCode Public ReadOnly Property DataSource As DataSource Implements IInputDataProvider.DataSource Get diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index 2736f510fb26b629d73964168824fa07c8a07c64..21a7d58d7bf2286f081619cc722dd9cf68d9b01f 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -784,7 +784,7 @@ namespace TUGraz.VectoCommon.InputData ISimulationParameter SimulationParameter { get; } Dictionary<FuelType, JoulePerMeter> EnergyConsumption { get; } - + Dictionary<string, double> CO2 { get; } } public interface ISimulationParameter diff --git a/VectoCommon/VectoCommon/InputData/VTPDeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/VTPDeclarationInputData.cs index 394a7fef5555c663a8eec8d9bee78df4e12e6d38..d3ab01cab8b701fd55f6abdb2b1e78b04de91d0f 100644 --- a/VectoCommon/VectoCommon/InputData/VTPDeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/VTPDeclarationInputData.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using TUGraz.VectoCommon.Hashing; +using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoHashing; @@ -67,8 +68,13 @@ namespace TUGraz.VectoCommon.InputData { string Source { get; } + IResultsInputData Results { get; } + IDictionary<VectoComponents,IList<string>> ComponentDigests { get; } DigestData JobDigest { get; } + Meter VehicleLength { get; } + VehicleClass VehicleClass { get; } + VehicleCode VehicleCode { get; } } } diff --git a/VectoCommon/VectoCommon/Models/VehicleClass.cs b/VectoCommon/VectoCommon/Models/VehicleClass.cs index 596ff23dc337a9802630260c054999a392480385..9a57c754a0026398586c87c7b77cfb59d081ef4b 100644 --- a/VectoCommon/VectoCommon/Models/VehicleClass.cs +++ b/VectoCommon/VectoCommon/Models/VehicleClass.cs @@ -179,6 +179,11 @@ namespace TUGraz.VectoCommon.Models } } + public static bool IsBus(this VehicleClass vehicleClass) + { + return vehicleClass.IsPrimaryBus() || vehicleClass.IsCompletedBus(); + } + public static bool IsPrimaryBus(this VehicleClass vehicleClass) { switch (vehicleClass) { diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs index e89bcaf6767b7c14fb445bc88afbfe0588607b8b..e286d83689f23f22af4b7d889996c7a921d43394 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs @@ -721,6 +721,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON private IDictionary<VectoComponents, IList<string>> _componentDigests = null; private DigestData _jobDigest = null; private IXMLInputDataReader _inputReader; + private IResultsInputData _manufacturerResults; + private Meter _vehicleLenght; + private VehicleClass _vehicleClass; + private VehicleCode _vehicleCode; public JSONVTPInputDataV4(JObject data, string filename, bool tolerateMissing = false) : base( data, filename, tolerateMissing) @@ -768,6 +772,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON get { return Body["ManufacturerRecord"].Value<string>(); } } + public IResultsInputData Results + { + get { + if (_manufacturerResults == null) { + ReadManufacturerReport(); + } + return _manufacturerResults; + } + } + public IList<ICycleData> Cycles { get { @@ -833,6 +847,36 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } + public Meter VehicleLength + { + get { + if (_vehicleLenght == null) { + ReadManufacturerReport(); + } + return _vehicleLenght; + } + } + + public VehicleClass VehicleClass + { + get { + if (_vehicleClass == VehicleClass.Unknown) { + ReadManufacturerReport(); + } + return _vehicleClass; + } + } + + public VehicleCode VehicleCode + { + get { + if (_vehicleCode == VehicleCode.NOT_APPLICABLE) { + ReadManufacturerReport(); + } + return _vehicleCode; + } + } + #endregion private void ReadManufacturerReport() @@ -864,7 +908,62 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } catch (Exception) { _jobDigest = new DigestData("", new string[] { }, "", ""); } + + _manufacturerResults = new ManufacturerResults(xmlDoc.SelectSingleNode("//*[local-name() = 'Results']")); + _vehicleLenght = xmlDoc.SelectSingleNode("//*[local-name() = 'VehicleLength']").InnerText.ToDouble().SI<Meter>(); + _vehicleClass = VehicleClassHelper.Parse(xmlDoc.SelectSingleNode("//*[local-name() = 'VehicleGroup']").InnerText); + _vehicleCode = xmlDoc.SelectSingleNode("//*[local-name() = 'VehicleCode']").InnerText.ParseEnum<VehicleCode>(); + } + } + + internal class ManufacturerResults : IResultsInputData + { + private XmlNode ResultNode; + + public ManufacturerResults(XmlNode resultsNode) + { + ResultNode = resultsNode; + Status = ResultNode.SelectSingleNode("./*[local-name() = 'Status']").InnerText; + Results = new List<IResult>(); + foreach (XmlNode node in ResultNode.SelectNodes("./*[local-name() = 'Result' and @status='success']")) { + var entry = new Result { + ResultStatus = node.Attributes.GetNamedItem("status").InnerText, + Mission = node.SelectSingleNode("./*[local-name()='Mission']").InnerText.ParseEnum<MissionType>(), + SimulationParameter = GetSimulationParameter(node.SelectSingleNode("//*[local-name()='SimulationParametersCompletedVehicle']")), + EnergyConsumption = node.SelectSingleNode("//*[local-name()='Fuel' and FuelConsumption/@unit='MJ/km']")? + .Cast<XmlNode>().Select( + x => new KeyValuePair<FuelType, JoulePerMeter>( + x.Attributes.GetNamedItem(XMLNames.Report_Results_Fuel_Type_Attr).InnerText.ParseEnum<FuelType>(), + x.SelectSingleNode( + string.Format("./*[local-name()='{0}' and @unit='MJ/km']", XMLNames.Report_Result_EnergyConsumption)) + ?.InnerText + .ToDouble().SI(Unit.SI.Mega.Joule.Per.Kilo.Meter).Cast<JoulePerMeter>())) + .ToDictionary(x => x.Key, x => x.Value), + CO2 = node.SelectNodes("./*[local-name()='CO2' and @unit]").Cast<XmlNode>().Select( + x => new KeyValuePair<string, double>(x.Attributes.GetNamedItem("unit").InnerText, x.InnerText.ToDouble())) + .ToDictionary(x => x.Key, x => x.Value) + + }; + Results.Add(entry); + } } + + private ISimulationParameter GetSimulationParameter(XmlNode node) + { + return new SimulationParameter { + TotalVehicleMass = node.SelectSingleNode($"./*[local-name()='{XMLNames.Report_ResultEntry_TotalVehicleMass}']").InnerText.ToDouble().SI<Kilogram>(), + Payload = node.SelectSingleNode($"./*[local-name()='{XMLNames.Report_Result_Payload}']").InnerText.ToDouble().SI<Kilogram>(), + PassengerCount = node.SelectSingleNode($"./*[local-name()='{XMLNames.Bus_PassengerCount}']").InnerText.ToDouble(), + FuelMode = "" //node.SelectSingleNode($"./*[local-name()='{XMLNames.Report_Result_FuelMode}']").InnerText + }; + } + + #region Implementation of IResultsInputData + + public string Status { get; } + public IList<IResult> Results { get; } + + #endregion } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs index 867b590ef4b98986b721acede83899e743211cfc..d67717deffac0c29acfe8620323559d65db1230b 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs @@ -78,7 +78,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider Mission = mission, VehicleGroup = VehicleClassHelper.Parse(vehicleGroup), SimulationParameter = simulationParams, - EnergyConsumption = energyConsumption + EnergyConsumption = energyConsumption, + CO2 = new Dictionary<string, double>() }; } diff --git a/VectoCore/VectoCore/InputData/Impl/InputData.cs b/VectoCore/VectoCore/InputData/Impl/InputData.cs index 9cbab67dcbf0346eb162b828a3119e8af60a3398..9a7aac3b37dbd15f3771029eebd87ba1b009ebfd 100644 --- a/VectoCore/VectoCore/InputData/Impl/InputData.cs +++ b/VectoCore/VectoCore/InputData/Impl/InputData.cs @@ -220,6 +220,7 @@ namespace TUGraz.VectoCore.InputData.Impl public MissionType Mission { get; internal set; } public ISimulationParameter SimulationParameter { get; internal set; } public Dictionary<FuelType, JoulePerMeter> EnergyConsumption { get; set; } + public Dictionary<string, double> CO2 { get; set; } } public class SimulationParameter : ISimulationParameter diff --git a/VectoCore/VectoCore/InputData/Reader/ComponentData/DrivingCycleDataReader.cs b/VectoCore/VectoCore/InputData/Reader/ComponentData/DrivingCycleDataReader.cs index 289964de821b325dced5ee6ece54891d3b5bd342..0bbc21bd59f757fab66cc12c7bd991126955867c 100644 --- a/VectoCore/VectoCore/InputData/Reader/ComponentData/DrivingCycleDataReader.cs +++ b/VectoCore/VectoCore/InputData/Reader/ComponentData/DrivingCycleDataReader.cs @@ -345,7 +345,7 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData public const string TorqueConverterActive = "tc_active"; public const string PTOActive = "PTO"; public const string Highway = "HW"; - public const string VTPPSCompressorActive = "ps_comp_active"; + public const string VTPPSCompressorActive = "PS_comp_active"; } #region DataParser diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs index 18c2053e7cedb7720f0c826879767d4da05d91f6..38c89f5b2f28c75f34c2d52dcd60bd40b1e270af 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs @@ -161,7 +161,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter IVehicleDeclarationInputData completedVehicle) { return new PneumaticUserInputsConfig { - CompressorMap = GetCompressorMap(primaryBusAuxiliaries.PneumaticSupply.CompressorSize, primaryBusAuxiliaries.PneumaticSupply.Clutch), + CompressorMap = DeclarationData.BusAuxiliaries.GetCompressorMap(primaryBusAuxiliaries.PneumaticSupply.CompressorSize, primaryBusAuxiliaries.PneumaticSupply.Clutch), CompressorGearEfficiency = Constants.BusAuxiliaries.PneumaticUserConfig.CompressorGearEfficiency, CompressorGearRatio = primaryBusAuxiliaries.PneumaticSupply.Ratio, SmartAirCompression = primaryBusAuxiliaries.PneumaticSupply.SmartAirCompression, diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs index 839986ef7fa87406253bf4e626cf82039af6561a..bba6f4bb14038e6a97ea9a6c567176b9364ffed2 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs @@ -254,7 +254,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter KneelingHeight = VectoMath.Max(0.SI<Meter>(), mission.BusParameter.EntranceHeight - Constants.BusParameters.EntranceHeight), CompressorGearEfficiency = Constants.BusAuxiliaries.PneumaticUserConfig.CompressorGearEfficiency, CompressorGearRatio = busAux.PneumaticSupply.Ratio, - CompressorMap = GetCompressorMap(busAux.PneumaticSupply.CompressorSize, busAux.PneumaticSupply.Clutch), + CompressorMap = DeclarationData.BusAuxiliaries.GetCompressorMap(busAux.PneumaticSupply.CompressorSize, busAux.PneumaticSupply.Clutch), SmartAirCompression = busAux.PneumaticSupply.SmartAirCompression, SmartRegeneration = busAux.PneumaticSupply.SmartRegeneration, AdBlueDosing = busAux.PneumaticConsumers.AdBlueDosing, @@ -263,39 +263,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter }; } - protected virtual ICompressorMap GetCompressorMap(string compressorSize, string clutchType) - { - var resource = ""; - switch (compressorSize) { - case "Small": - resource = "DEFAULT_1-Cylinder_1-Stage_393ccm.acmp"; - break; - case "Medium Supply 1-stage": - resource = "DEFAULT_1-Cylinder_1-Stage_393ccm.acmp"; - break; - case "Medium Supply 2-stage": - resource = "DEFAULT_2-Cylinder_1-Stage_650ccm.acmp"; - break; - case "Large Supply 1-stage": - resource = "DEFAULT_2-Cylinder_2-Stage_398ccm.acmp"; - break; - case "Large Supply 2-stage": - resource = "DEFAULT_3-Cylinder_2-Stage_598ccm.acmp"; - break; - default: throw new ArgumentException(string.Format("unkown compressor size {0}"), compressorSize); - } - - var dragCurveFactorClutch = 1.0; - switch (clutchType) { - case "visco": dragCurveFactorClutch = Constants.BusAuxiliaries.PneumaticUserConfig.ViscoClutchDragCurveFactor; - break; - case "mechanically": dragCurveFactorClutch = Constants.BusAuxiliaries.PneumaticUserConfig.MechanicClutchDragCurveFactor; - break; - } - - return CompressorMapReader.ReadStream( - RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".VAUXBus." + resource), dragCurveFactorClutch, $"{compressorSize} - {clutchType}"); - } + public SSMInputs GetDefaulSSMInputs(IFuelProperties heatingFuel) { diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryHeavyBusPrimary.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryHeavyBusPrimary.cs index 306e70d97cfd24709f9500fed1bc4ff72c35cdd1..e777aae12cdfb4fb69ac16f8c2daca7954a8cea2 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryHeavyBusPrimary.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryHeavyBusPrimary.cs @@ -1,13 +1,18 @@ using System; using System.Collections.Generic; using System.Linq; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Impl; using TUGraz.VectoCore.OutputData; namespace TUGraz.VectoCore.InputData.Reader.Impl { @@ -31,16 +36,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { } } - protected override IEnumerable<VectoRunData.AuxData> GetAuxiliaryData(MissionType missionType) - { - // TODO MQ: length? - return Dao.CreateAuxiliaryData( - JobInputData.Vehicle.Components.AuxiliaryInputData, - JobInputData.Vehicle.Components.BusAuxiliaries, - missionType, - Segment.VehicleClass, 10.SI<Meter>()); - - } + #endregion @@ -55,8 +51,12 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { var tempVehicle = Dao.CreateVehicleData( vehicle, Segment, Segment.Missions.First(), Segment.Missions.First().Loadings.First()); + tempVehicle.VehicleClass = JobInputData.ManufacturerReportInputData.VehicleClass; + tempVehicle.VehicleCode = JobInputData.ManufacturerReportInputData.VehicleCode; - var vtpMission = DeclarationData.VTPMode.SelectedMissionHeavyBus; + var vtpMission = tempVehicle.VehicleCode.GetFloorType() == FloorType.LowFloor + ? DeclarationData.VTPMode.SelectedMissionLowFloorBus + : DeclarationData.VTPMode.SelectedMissionHighFloorBus; AirdragData = Dao.CreateAirdragData( vehicle.Components.AirdragInputData, Segment.Missions.First(), Segment); @@ -82,22 +82,175 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { AuxVTP = CreateVTPAuxData(vehicle); } + protected override void InitializeReport() + { + var vehicle = JobInputData.Vehicle; + var tempVehicle = Dao.CreateVehicleData( + vehicle, Segment, Segment.Missions.First(), + Segment.Missions.First().Loadings.First()); + tempVehicle.VehicleClass = JobInputData.ManufacturerReportInputData.VehicleClass; + tempVehicle.VehicleCode = JobInputData.ManufacturerReportInputData.VehicleCode; + var powertrainConfig = new VectoRunData() { + VehicleData = tempVehicle, + AirdragData = AirdragData, + EngineData = EngineData, + GearboxData = GearboxData, + AxleGearData = AxlegearData, + Retarder = RetarderData, + Aux = GetAuxiliaryData(Segment.Missions.First().MissionType), + }; + //powertrainConfig.VehicleData.VehicleClass = Segment.VehicleClass; + Report.InputDataHash = JobInputData.VectoJobHash; + Report.ManufacturerRecord = JobInputData.ManufacturerReportInputData; + Report.ManufacturerRecordHash = JobInputData.VectoManufacturerReportHash; + var fuels = JobInputData.Vehicle.Components.EngineInputData.EngineModes.Select( + x => x.Fuels.Select(f => DeclarationData.FuelData.Lookup(f.FuelType, JobInputData.Vehicle.TankSystem)) + .ToList()) + .ToList(); + Report.InitializeReport(powertrainConfig, fuels); + } + protected virtual List<VectoRunData.AuxData> CreateVTPAuxData(IVehicleDeclarationInputData vehicle) { - return new List<VectoRunData.AuxData>(); + // used to fill VECTO RunData for VTP mission. + + var retVal = new List<VectoRunData.AuxData>(); + + var electricEfficiency = + Constants.BusAuxiliaries.ElectricSystem.AlternatorGearEfficiency * + DeclarationData.BusAuxiliaries.AlternatorTechnologies.Lookup("default"); + + // TODO: vehicle length from MRF + + var spPowerDemand = DeclarationData.SteeringPumpBus.LookupMechanicalPowerDemand( + MissionType.VerificationTest, JobInputData.Vehicle.Components.BusAuxiliaries.SteeringPumpTechnology, + JobInputData.ManufacturerReportInputData.VehicleLength) + + + DeclarationData.SteeringPumpBus.LookupElectricalPowerDemand( + MissionType.VerificationTest, JobInputData.Vehicle.Components.BusAuxiliaries.SteeringPumpTechnology, + JobInputData.ManufacturerReportInputData.VehicleLength) / electricEfficiency; + + retVal.Add( + new VectoRunData.AuxData() { + DemandType = AuxiliaryDemandType.Constant, + Technology = JobInputData.Vehicle.Components.BusAuxiliaries.SteeringPumpTechnology, + ID = Constants.Auxiliaries.IDs.SteeringPump, + PowerDemand = spPowerDemand + }); + + retVal.Add( + new VectoRunData.AuxData() { + DemandType = AuxiliaryDemandType.Constant, + Technology = new List<string>() { "default"}, + ID = Constants.Auxiliaries.IDs.ElectricSystem, + PowerDemand = Constants.BusAuxiliaries.ElectricSystem.PowernetVoltage * 32.4.SI<Ampere>() / electricEfficiency + }); + retVal.Add(new VectoRunData.AuxData() { + DemandType = AuxiliaryDemandType.Constant, + Technology = new List<string>() { "default"}, + ID = Constants.Auxiliaries.IDs.HeatingVentilationAirCondition, + PowerDemand = 350.SI<Watt>() + }); + + var busAux = vehicle.Components.BusAuxiliaries; + var psCompressor = DeclarationData.BusAuxiliaries.GetCompressorMap(busAux.PneumaticSupply.CompressorSize, busAux.PneumaticSupply.Clutch); + retVal.Add(new VectoRunData.AuxData() { + DemandType = AuxiliaryDemandType.Direct, + Technology = new List<string>() { busAux.PneumaticSupply.CompressorSize + " / " + busAux.PneumaticSupply.Clutch}, + ID = Constants.Auxiliaries.IDs.PneumaticSystem, + PowerDemandFunc = cycleEntry => { + var cmp = psCompressor.Interpolate(cycleEntry.EngineSpeed * busAux.PneumaticSupply.Ratio); + return cycleEntry.VTPPSCompressorActive ? cmp.PowerOn : cmp.PowerOff; + } + }); + + var fanData = GetFanData(); + var engineFan = new EngineFanAuxiliary(fanData.FanCoefficients, fanData.FanDiameter); + retVal.Add( new VectoRunData.AuxData() { + DemandType = AuxiliaryDemandType.Direct, + Technology = new List<string>() { "default"}, + ID = Constants.Auxiliaries.IDs.Fan, + PowerDemandFunc = cycleEntry => engineFan.PowerDemand(cycleEntry.FanSpeed) + }); + + return retVal; } - public override IEnumerable<VectoRunData> NextRun() + protected override IEnumerable<VectoRunData.AuxData> GetAuxiliaryData(MissionType missionType) { - throw new NotImplementedException(); + // used for initializing XML report, + return AuxVTP; } protected override AuxFanData GetFanData() { return new AuxFanData() { - FanCoefficients = JobInputData.FanPowerCoefficents.ToArray(), + FanCoefficients = DeclarationData.VTPMode.FanParameters, FanDiameter = JobInputData.FanDiameter, }; } + + public override IEnumerable<VectoRunData> NextRun() + { + if (InitException != null) { + throw InitException; + } + + // simulate the VTP reference cycle with RefLoad + var vtpMission = JobInputData.Vehicle.VehicleCode.GetFloorType() == FloorType.LowFloor + ? DeclarationData.VTPMode.SelectedMissionLowFloorBus + : DeclarationData.VTPMode.SelectedMissionHighFloorBus; + var mission = Segment.Missions.FirstOrDefault(m => m.MissionType == vtpMission); + if (mission == null) { + throw new VectoException("Mission {0} not found in segmentation matrix", DeclarationData.VTPMode.SelectedMissionHeavyLorry); + } + var loading = mission.Loadings.FirstOrDefault(l => l.Key == DeclarationData.VTPMode.SelectedLoading); + var runData = CreateVectoRunData(Segment, mission, loading.Value); + runData.ModFileSuffix = loading.Key.ToString(); + var cycle = DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false); + runData.Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()); + runData.DriverData = Driverdata; + runData.Aux = GetAuxiliaryData(mission.MissionType); + + runData.ExecutionMode = ExecutionMode.Declaration; + runData.SimulationType = SimulationType.DistanceCycle; + runData.Mission = mission; + runData.Loading = loading.Key; + runData.VehicleData.VehicleClass = Segment.VehicleClass; + runData.VehicleData.LegislativeClass = JobInputData.Vehicle.LegislativeClass; + //yield return runData; + + // simulate the Measured cycle + var vtpCycle = JobInputData.Cycles.FirstOrDefault(); + if (vtpCycle == null) { + throw new VectoException("no VTP-Cycle provided!"); + } + + var drivingCycle = DrivingCycleDataReader.ReadFromDataTable(vtpCycle.CycleData, vtpCycle.Name, false); + + // Loading is not relevant as we use P_wheel + var vtpRunData = CreateVectoRunData(Segment, Segment.Missions.First(), Tuple.Create<Kilogram, double?>(0.SI<Kilogram>(), null)); + vtpRunData.Cycle = new DrivingCycleProxy(drivingCycle, vtpCycle.Name); + vtpRunData.Aux = AuxVTP; + vtpRunData.FanDataVTP = GetFanData(); + vtpRunData.ExecutionMode = ExecutionMode.Declaration; + vtpRunData.SimulationType = SimulationType.VerificationTest; + vtpRunData.Mission = new Mission() { + MissionType = MissionType.VerificationTest + }; + vtpRunData.VehicleData.VehicleClass = JobInputData.ManufacturerReportInputData.VehicleClass; //Segment.VehicleClass; + vtpRunData.VehicleData.VehicleCode = JobInputData.ManufacturerReportInputData.VehicleCode; + vtpRunData.VehicleData.LegislativeClass = JobInputData.Vehicle.LegislativeClass; + + //var ncvStd = DeclarationData.FuelData.Lookup(JobInputData.Vehicle.Components.EngineInputData.FuelType).LowerHeatingValueVecto; + //var ncvCorrection = ncvStd / JobInputData.NetCalorificValueTestFuel; + var mileageCorrection = GetMileagecorrectionFactor(JobInputData.Mileage); + vtpRunData.VTPData = new VTPData() { + CorrectionFactor = mileageCorrection, + }; + yield return vtpRunData; + } + + } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryLorries.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryLorries.cs index 85e06a554a3cf717f04355c1250a613bdd77b4df..2377dacd8194b73cfba4ff3db7edfe568658f70d 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryLorries.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryLorries.cs @@ -192,7 +192,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl var vtpRunData = CreateVectoRunData(Segment, Segment.Missions.First(), Tuple.Create<Kilogram, double?>(0.SI<Kilogram>(), null)); vtpRunData.Cycle = new DrivingCycleProxy(drivingCycle, vtpCycle.Name); vtpRunData.Aux = AuxVTP; - vtpRunData.FanData = GetFanData(); + vtpRunData.FanDataVTP = GetFanData(); vtpRunData.ExecutionMode = ExecutionMode.Declaration; vtpRunData.SimulationType = SimulationType.VerificationTest; vtpRunData.Mission = new Mission() { diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringVTPModeVectoRunDataFactoryHeavyBusPrimary.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringVTPModeVectoRunDataFactoryHeavyBusPrimary.cs index cdc28d0501cd1147acfc4da0a9b4509e0f98d35e..5719f2df4b9482edd6ddef330061d10042427c44 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringVTPModeVectoRunDataFactoryHeavyBusPrimary.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringVTPModeVectoRunDataFactoryHeavyBusPrimary.cs @@ -25,11 +25,19 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { var runData = CreateVectoRunData(Segment, Segment.Missions.First(), new Tuple<Kilogram, double?>(0.SI<Kilogram>(), null)); runData.Cycle = new DrivingCycleProxy(drivingCycle, cycle.Name); runData.Aux = AuxVTP; - runData.FanData = GetFanData(); + runData.FanDataVTP = GetFanData(); runData.ExecutionMode = ExecutionMode.Engineering; runData.SimulationType = SimulationType.VerificationTest; return runData; }); } + + protected override AuxFanData GetFanData() + { + return new AuxFanData() { + FanCoefficients = JobInputData.FanPowerCoefficents.ToArray(), + FanDiameter = JobInputData.FanDiameter, + }; + } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringVTPModeVectoRunDataFactoryLorries.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringVTPModeVectoRunDataFactoryLorries.cs index 3591a7220722646836c631cd5c4ab6f99f64c5cc..4e91242e92e1b72da0237497907981daf719ebae 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringVTPModeVectoRunDataFactoryLorries.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringVTPModeVectoRunDataFactoryLorries.cs @@ -63,7 +63,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl var runData = CreateVectoRunData(Segment, Segment.Missions.First(), new Tuple<Kilogram, double?>(0.SI<Kilogram>(), null)); runData.Cycle = new DrivingCycleProxy(drivingCycle, cycle.Name); runData.Aux = AuxVTP; - runData.FanData = GetFanData(); + runData.FanDataVTP = GetFanData(); runData.ExecutionMode = ExecutionMode.Engineering; runData.SimulationType = SimulationType.VerificationTest; return runData; diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs index 31c98842d43d268ea9968c9f994aac0aed10b98c..cb6d617bea87e318ed424245094e6ad2ae13d30e 100644 --- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs @@ -163,6 +163,42 @@ namespace TUGraz.VectoCore.Models.Declaration // } //} + public static ICompressorMap GetCompressorMap(string compressorSize, string clutchType) + { + var resource = ""; + switch (compressorSize) { + case "Small": + resource = "DEFAULT_1-Cylinder_1-Stage_393ccm.acmp"; + break; + case "Medium Supply 1-stage": + resource = "DEFAULT_1-Cylinder_1-Stage_393ccm.acmp"; + break; + case "Medium Supply 2-stage": + resource = "DEFAULT_2-Cylinder_1-Stage_650ccm.acmp"; + break; + case "Large Supply 1-stage": + resource = "DEFAULT_2-Cylinder_2-Stage_398ccm.acmp"; + break; + case "Large Supply 2-stage": + resource = "DEFAULT_3-Cylinder_2-Stage_598ccm.acmp"; + break; + default: throw new ArgumentException(string.Format("unkown compressor size {0}"), compressorSize); + } + + var dragCurveFactorClutch = 1.0; + switch (clutchType) { + case "visco": + dragCurveFactorClutch = Constants.BusAuxiliaries.PneumaticUserConfig.ViscoClutchDragCurveFactor; + break; + case "mechanically": + dragCurveFactorClutch = Constants.BusAuxiliaries.PneumaticUserConfig.MechanicClutchDragCurveFactor; + break; + } + + return CompressorMapReader.ReadStream( + RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".VAUXBus." + resource), dragCurveFactorClutch, $"{compressorSize} - {clutchType}"); + } + public static BusAlternatorTechnologies AlternatorTechnologies = new BusAlternatorTechnologies(); private static HVACCoolingPower hvacMaxCoolingPower; @@ -989,7 +1025,8 @@ namespace TUGraz.VectoCore.Models.Declaration public const MissionType SelectedMissionHeavyLorry = MissionType.LongHaul; public const MissionType SelectedMissionMediumLorry = MissionType.RegionalDelivery; - public const MissionType SelectedMissionHeavyBus = MissionType.Coach; + public const MissionType SelectedMissionLowFloorBus = MissionType.Urban; + public const MissionType SelectedMissionHighFloorBus = MissionType.Coach; public const LoadingType SelectedLoading = LoadingType.ReferenceLoad; diff --git a/VectoCore/VectoCore/Models/Declaration/SteeringPumpBus.cs b/VectoCore/VectoCore/Models/Declaration/SteeringPumpBus.cs index 35d34077a4dd0d9f3c0076980996bb9b0d3133bc..abd714d99c18d8ceaa3719ac9c50920a51632df0 100644 --- a/VectoCore/VectoCore/Models/Declaration/SteeringPumpBus.cs +++ b/VectoCore/VectoCore/Models/Declaration/SteeringPumpBus.cs @@ -88,7 +88,7 @@ namespace TUGraz.VectoCore.Models.Declaration { protected override void ParseData(DataTable table) { var missionTypes = Enum.GetValues(typeof(MissionType)).Cast<MissionType>().Where( - m => m.IsDeclarationMission() && m != MissionType.ExemptedMission && + m => ((m.IsDeclarationMission() && m != MissionType.ExemptedMission) || m == MissionType.VerificationTest) && table.Columns.Contains("tubing-" + m.ToString())).ToList(); foreach (DataRow row in table.Rows) { diff --git a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs index 7e8e66d3532d69e7a475e72477232d5e5bc770e3..bfea35f35a50646a98a72cfc71da66d55a32485e 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs @@ -29,6 +29,7 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; @@ -116,7 +117,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data public int JobRunId { get; internal set; } - public AuxFanData FanData { get; internal set; } + public AuxFanData FanDataVTP { get; internal set; } public SimulationType SimulationType { get; set; } @@ -140,6 +141,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Data [SIRange(0, 100 * Constants.Kilo)] public Watt PowerDemand; + public Func<DrivingCycleData.DrivingCycleEntry, Watt> PowerDemandFunc; + [Required] public AuxiliaryDemandType DemandType; [ValidateObject] public AuxiliaryData Data; diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index 879220173e3d4fe9c7976c3a190b4076e4f05d2e..636240c37d84ff427cef54c4aa106bcc01df5703 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -161,12 +161,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl .AddComponent(new Clutch(container, data.EngineData)); var engine = new VTPCombustionEngine(container, data.EngineData, pt1Disabled: true); - var aux = CreateSpeedDependentAuxiliaries(data, container); - var engineFan = new EngineFanAuxiliary(data.FanData.FanCoefficients, data.FanData.FanDiameter); - aux.AddCycle(Constants.Auxiliaries.IDs.Fan, cycleEntry => engineFan.PowerDemand(cycleEntry.FanSpeed)); - container.ModalData.AddAuxiliary(Constants.Auxiliaries.IDs.Fan); - - engine.Connect(aux.Port()); + if (data.VehicleData.VehicleCategory.IsLorry()) { + AddVTPTruckAuxiliaries(data, container, engine); + } else if (data.VehicleData.VehicleCategory.IsBus()) { + AddVTPBusAuxiliaries(data, container, engine); + } var idleController = new CombustionEngine.CombustionEngineNoDubleclutchIdleController(engine, container); //if (data.PTO != null && data.PTO.PTOCycle != null) { @@ -180,6 +179,46 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl return container; } + private void AddVTPBusAuxiliaries(VectoRunData data, VehicleContainer container, VTPCombustionEngine engine) + { + var aux = new EngineAuxiliary(container); + foreach (var auxData in data.Aux) { + // id's in upper case + var id = auxData.ID.ToUpper(); + + switch (auxData.DemandType) { + case AuxiliaryDemandType.Constant: + aux.AddConstant(id, auxData.PowerDemand); + break; + case AuxiliaryDemandType.Direct: + if (auxData.PowerDemandFunc == null) { + aux.AddCycle(id); + } else { + aux.AddCycle(id, auxData.PowerDemandFunc); + } + break; + case AuxiliaryDemandType.Mapping: + aux.AddMapping(id, auxData.Data); + break; + default: + throw new ArgumentOutOfRangeException("AuxiliaryDemandType", auxData.DemandType.ToString()); + } + container.ModalData?.AddAuxiliary(id); + } + + + engine.Connect(aux.Port()); + } + + private void AddVTPTruckAuxiliaries(VectoRunData data, VehicleContainer container, VTPCombustionEngine engine) + { + var aux = CreateSpeedDependentAuxiliaries(data, container); + var engineFan = new EngineFanAuxiliary(data.FanDataVTP.FanCoefficients, data.FanDataVTP.FanDiameter); + aux.AddCycle(Constants.Auxiliaries.IDs.Fan, cycleEntry => engineFan.PowerDemand(cycleEntry.FanSpeed)); + container.ModalData.AddAuxiliary(Constants.Auxiliaries.IDs.Fan); + + engine.Connect(aux.Port()); + } private IVehicleContainer BuildMeasuredSpeed(VectoRunData data) diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index 5254537a579c5df07099c43ac638ea7320440ba4..df89f178b4995ecf2b7f0d53f188ba2ebaa87e85 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -226,8 +226,7 @@ namespace TUGraz.VectoCore.OutputData var probablyEmptyCols = new[] { Fields.E_WHEEL, Fields.SPECIFIC_FC }.Select(x => x.Contains("{") ? x.Substring(0, x.IndexOf("{")) : x).ToArray(); var removeCandidates = - view.Columns.Cast<DataColumn>().Where(column => column.ColumnName.StartsWith(Fields.INTERNAL_PREFIX) || - probablyEmptyCols.Any(x => column.ColumnName.StartsWith(x))).ToList(); + view.Columns.Cast<DataColumn>().Where(column => probablyEmptyCols.Any(x => column.ColumnName.StartsWith(x))).ToList(); var toRemove = new List<string>(); foreach (var column in removeCandidates) { //var column = view.Columns[colName]; @@ -236,6 +235,9 @@ namespace TUGraz.VectoCore.OutputData } } + toRemove = toRemove.Concat( + view.Columns.Cast<DataColumn>().Where(column => column.ColumnName.StartsWith(Fields.INTERNAL_PREFIX)).Select(x => x.ColumnName)).ToList(); + foreach (var dataColumn in toRemove) { view.Columns.Remove(dataColumn); } diff --git a/VectoCore/VectoCore/Resources/Declaration/VAUXBus/SP-Axles_Bus.csv b/VectoCore/VectoCore/Resources/Declaration/VAUXBus/SP-Axles_Bus.csv index 70533feb9a01cf6b2c290211b434d081cf85f684..fd46c71ae273697216a91900136f71e45ec45a14 100644 --- a/VectoCore/VectoCore/Resources/Declaration/VAUXBus/SP-Axles_Bus.csv +++ b/VectoCore/VectoCore/Resources/Declaration/VAUXBus/SP-Axles_Bus.csv @@ -1,5 +1,5 @@ -AxleNbr , Heavy Urban , Urban , Suburban , Interurban , Coach -1 , 800 , 750 , 700 , 650 , 550 -2 , 400 , 400 , 400 , 400 , 400 -3 , 400 , 400 , 400 , 400 , 400 -4 , 400 , 400 , 400 , 400 , 400 \ No newline at end of file +AxleNbr , Heavy Urban , Urban , Suburban , Interurban , Coach , VerificationTest +1 , 800 , 750 , 700 , 650 , 550 , 690 +2 , 400 , 400 , 400 , 400 , 400 , 400 +3 , 400 , 400 , 400 , 400 , 400 , 400 +4 , 400 , 400 , 400 , 400 , 400 , 400 \ No newline at end of file diff --git a/VectoCore/VectoCore/Resources/Declaration/VAUXBus/SP-Factors_Bus.csv b/VectoCore/VectoCore/Resources/Declaration/VAUXBus/SP-Factors_Bus.csv index af9cf0587102a8fc4844841cf824b9dfcb5713aa..ecbbf8d08e27e1c138153fbd11a7bddd6ae2d43c 100644 --- a/VectoCore/VectoCore/Resources/Declaration/VAUXBus/SP-Factors_Bus.csv +++ b/VectoCore/VectoCore/Resources/Declaration/VAUXBus/SP-Factors_Bus.csv @@ -1,9 +1,9 @@ -Technology , fullyelectric , tubing - Heavy Urban , tubing - Urban , tubing - Suburban , tubing - Interurban , tubing - Coach , axle - Heavy Urban , axle - Urban , axle - Suburban , axle - Interurban , axle - Coach -Fixed displacement , 0 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 -Fixed displacement with elec. control , 0 , 0.95 , 0.95 , 0.95 , 0.95 , 0.95 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 -Dual displacement with mech. control , 0 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 -Dual displacement with elec. control , 0 , 0.80 , 0.80 , 0.80 , 0.80 , 0.80 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 -Variable displacement mech. controlled , 0 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 -Variable displacement elec. controlled , 0 , 0.60 , 0.60 , 0.60 , 0.60 , 0.60 , 0.60 , 0.60 , 0.60 , 0.60 , 0.60 -Electric driven pump , 1 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 -Full electric steering gear , 1 , 0.00 , 0.00 , 0.00 , 0.00 , 0.00 , 0.10 , 0.10 , 0.10 , 0.10 , 0.10 \ No newline at end of file +Technology , fullyelectric , tubing - Heavy Urban , tubing - Urban , tubing - Suburban , tubing - Interurban , tubing - Coach , axle - Heavy Urban , axle - Urban , axle - Suburban , axle - Interurban , axle - Coach , axle - VerificationTest , tubing - VerificationTest +Fixed displacement , 0 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 , 1.0 , 1.0 +Fixed displacement with elec. control , 0 , 0.95 , 0.95 , 0.95 , 0.95 , 0.95 , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 , 1.0 , 0.95 +Dual displacement with mech. control , 0 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 +Dual displacement with elec. control , 0 , 0.80 , 0.80 , 0.80 , 0.80 , 0.80 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 , 0.8 +Variable displacement mech. controlled , 0 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 +Variable displacement elec. controlled , 0 , 0.60 , 0.60 , 0.60 , 0.60 , 0.60 , 0.60 , 0.60 , 0.60 , 0.60 , 0.60 , 0.6 , 0.6 +Electric driven pump , 1 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 +Full electric steering gear , 1 , 0.00 , 0.00 , 0.00 , 0.00 , 0.00 , 0.10 , 0.10 , 0.10 , 0.10 , 0.10 , 0.1 , 0.0 \ No newline at end of file diff --git a/VectoCore/VectoCore/Resources/XSD/VTPReport.0.2.xsd b/VectoCore/VectoCore/Resources/XSD/VTPReport.0.2.xsd index 0e10187de05639c0a6a93ae2e0a65fd0784902e1..c18b4c69b15175c0d43b0dc18ca1849d97b893cf 100644 --- a/VectoCore/VectoCore/Resources/XSD/VTPReport.0.2.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VTPReport.0.2.xsd @@ -54,30 +54,55 @@ </xs:complexType> <xs:complexType name="AuxiliariesType"> <xs:sequence> - <xs:element name="FanTechnology" type="vdecdef:AuxFanTechnologyType"> + <xs:element name="FanTechnology"> <xs:annotation> <xs:documentation>P181</xs:documentation> </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + </xs:restriction> + </xs:simpleType> </xs:element> - <xs:element name="SteeringPumpTechnology" type="vdecdef:AuxSPTechnologyType" maxOccurs="4"> + <xs:element name="SteeringPumpTechnology" maxOccurs="4"> <xs:annotation> <xs:documentation>P182</xs:documentation> </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + </xs:restriction> + </xs:simpleType> </xs:element> - <xs:element name="ElectricSystemTechnology" type="vdecdef:AuxESTechnologyType"> + <xs:element name="ElectricSystemTechnology"> <xs:annotation> <xs:documentation>P183</xs:documentation> </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + </xs:restriction> + </xs:simpleType> </xs:element> - <xs:element name="PneumaticSystemTechnology" type="vdecdef:AuxPSTechnologyType"> + <xs:element name="PneumaticSystemTechnology"> <xs:annotation> <xs:documentation>P184</xs:documentation> </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + </xs:restriction> + </xs:simpleType> </xs:element> - <xs:element name="HVACTechnology" type="vdecdef:AuxHVACTechnologyType"> + <xs:element name="HVACTechnology"> <xs:annotation> <xs:documentation>P185</xs:documentation> </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + </xs:restriction> + </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> @@ -498,10 +523,15 @@ <xs:documentation>P238</xs:documentation> </xs:annotation> </xs:element> - <xs:element name="LegislativeClass" type="vdecdef:LegislativeClassDeclarationType"> + <xs:element name="LegislativeClass"> <xs:annotation> <xs:documentation>P251</xs:documentation> </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + </xs:restriction> + </xs:simpleType> </xs:element> <xs:element name="VehicleGroup" type="VehicleGroupType"> <xs:annotation> @@ -580,6 +610,7 @@ <xs:simpleType name="CO2UnitType"> <xs:restriction base="xs:token"> <xs:enumeration value="g/t-km"/> + <xs:enumeration value="g/p-km"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="DataIntegrityStatusType"> diff --git a/VectoCore/VectoCoreTest/Integration/VTP/VTPTest.cs b/VectoCore/VectoCoreTest/Integration/VTP/VTPTest.cs index 97bc3a69840694586d56f17fb736d994eb145c92..a6d82e05842452f3f348a5d8f1e4f08019d4d7b7 100644 --- a/VectoCore/VectoCoreTest/Integration/VTP/VTPTest.cs +++ b/VectoCore/VectoCoreTest/Integration/VTP/VTPTest.cs @@ -52,7 +52,8 @@ namespace TUGraz.VectoCore.Tests.Integration.VTP } [TestCase(@"TestData\Integration\VTPMode\GenericVehicle\class_5_generic vehicle.vecto"), - TestCase(@"TestData\Integration\VTPMode\GenericVehicle\class_5_generic vehicle_noGear.vecto")] + TestCase(@"TestData\Integration\VTPMode\GenericVehicle\class_5_generic vehicle_noGear.vecto"), + TestCase(@"TestData\Integration\VTPMode\HeavyBus\VTP_PrimaryBus_ENG.vecto", TestName = "RunVTPHeavyPrimaryBus Engineering")] public void RunVTP(string jobFile) { var fileWriter = new FileOutputWriter(jobFile); @@ -101,7 +102,7 @@ namespace TUGraz.VectoCore.Tests.Integration.VTP jobContainer.AddRuns(runsFactory); - Assert.AreEqual(2, jobContainer.Runs.Count); + Assert.AreEqual(1, jobContainer.Runs.Count); //var i = 0; //jobContainer.Runs[i].Run.Run(); //Assert.IsTrue(jobContainer.Runs[i].Run.FinishedWithoutErrors); diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/CompletedBus_34f.RSLT_MANUFACTURER.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/CompletedBus_34f.RSLT_MANUFACTURER.xml new file mode 100644 index 0000000000000000000000000000000000000000..cc9ef9f69030f4e28c79762bbed3ac79a5b6c608 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/CompletedBus_34f.RSLT_MANUFACTURER.xml @@ -0,0 +1,313 @@ +<?xml version="1.0" encoding="utf-8"?> +<?xml-stylesheet href="https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css"?> +<mrf:VectoOutput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoOutputManufacturer.xsd"> + <mrf:Data xsi:type="VectoOutputDataType" id="RESULT-b2d5a208fb6d49b09083"> + <Vehicle xsi:type="VehicleCompletedBusType"> + <PrimaryVehicle> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <AxleConfiguration>6x2</AxleConfiguration> + <InputDataSignature> + <di:Reference URI="#VEH-PrimaryBus_SmartPS"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>yNV23dnHfcDyF7ChIql/vlDKcJ6jbT/Y2cDGBS/C62U=</di:DigestValue> + </di:Reference> + </InputDataSignature> + <ManufacturerRecordSignature> + <di:Reference URI="#RESULT-98ebc4763abc4450914e"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>jA3s78sr2wiL6D2WQ29//BFE69F44UukDiEtmNWROmA=</di:DigestValue> + </di:Reference> + </ManufacturerRecordSignature> + <VehicleInformationSignature> + <di:Reference URI="#PIF-09283050f3974383a23a"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>MyHmMYmuZq4IMLyjDX3tqWXX7bJeLskdDcv6KzYXiGA=</di:DigestValue> + </di:Reference> + </VehicleInformationSignature> + </PrimaryVehicle> + <CompletedVehicle> + <Model>Sample Bus Model</Model> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <VehicleCategory>M3</VehicleCategory> + <VehicleGroup>34f</VehicleGroup> + <RegisteredClass>II+III</RegisteredClass> + <VehicleCode>CB</VehicleCode> + <CurbMassChassis unit="kg">19400</CurbMassChassis> + <TechnicalPermissibleMaximumLadenMass unit="t">25.00</TechnicalPermissibleMaximumLadenMass> + <VocationalVehicle>false</VocationalVehicle> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <HybridElectricHDV>false</HybridElectricHDV> + <DualFuelVehicle>false</DualFuelVehicle> + <SleeperCab>false</SleeperCab> + <RegisteredPassengers> + <LowerDeck>16</LowerDeck> + <UpperDeck>56</UpperDeck> + </RegisteredPassengers> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>4.000</HeightIntegratedBody> + <VehicleLength>13.890</VehicleLength> + <VehicleWidth>2.550</VehicleWidth> + <DoorDriveTechnology>pneumatic</DoorDriveTechnology> + <Components xsi:type="ComponentsCompletedBusType"> + <AirDrag> + <Model>Generic Model</Model> + <CertificationMethod>Measured</CertificationMethod> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</DigestValue> + <CdxA>5.20</CdxA> + </AirDrag> + <Auxiliaries xmlns:aux="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xsi:type="aux:CompletedVehicleAuxiliaryDataDeclarationType"> + <aux:ElectricSystem> + <aux:AlternatorTechnology>default</aux:AlternatorTechnology> + <aux:LEDLights> + <aux:Dayrunninglights>true</aux:Dayrunninglights> + <aux:Headlights>true</aux:Headlights> + <aux:Positionlights>true</aux:Positionlights> + <aux:Brakelights>true</aux:Brakelights> + <aux:Interiorlights>true</aux:Interiorlights> + </aux:LEDLights> + </aux:ElectricSystem> + <aux:HVAC> + <aux:SystemConfiguration>6</aux:SystemConfiguration> + <aux:CompressorType> + <aux:DriverAC>2-stage</aux:DriverAC> + <aux:PassengerAC>2-stage</aux:PassengerAC> + </aux:CompressorType> + <aux:AuxiliaryHeaterPower>30000</aux:AuxiliaryHeaterPower> + <aux:DoubleGlasing>true</aux:DoubleGlasing> + <aux:HeatPump>false</aux:HeatPump> + <aux:AdjustableAuxiliaryHeater>true</aux:AdjustableAuxiliaryHeater> + <aux:SeparateAirDistributionDucts>true</aux:SeparateAirDistributionDucts> + </aux:HVAC> + </Auxiliaries> + </Components> + <InputDataSignature> + <di:Reference> + <di:DigestMethod Algorithm="null" /> + <di:DigestValue>NOT AVAILABLE</di:DigestValue> + </di:Reference> + </InputDataSignature> + </CompletedVehicle> + </Vehicle> + <Results> + <Status>success</Status> + <Result status="success" xsi:type="ResultCompletedVehicleSuccessType"> + <Mission>Interurban</Mission> + <Distance unit="km">123.590</Distance> + <SimulationParametersPrimaryVehicle> + <TotalVehicleMass unit="kg">24802</TotalVehicleMass> + <Payload unit="kg">6952</Payload> + <PassengerCount>97.9</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParametersPrimaryVehicle> + <SimulationParametersCompletedVehicle> + <TotalVehicleMass unit="kg">24512</TotalVehicleMass> + <Payload unit="kg">5112</Payload> + <PassengerCount>72.0</PassengerCount> + </SimulationParametersCompletedVehicle> + <VehiclePerformance> + <AverageSpeed unit="km/h">33.3</AverageSpeed> + <AverageDrivingSpeed unit="km/h">38.2</AverageDrivingSpeed> + <MinSpeed unit="km/h">0.0</MinSpeed> + <MaxSpeed unit="km/h">86.5</MaxSpeed> + <MaxDeceleration unit="m/s²">1.20</MaxDeceleration> + <MaxAcceleration unit="m/s²">1.10</MaxAcceleration> + <FullLoadDrivingtimePercentage>16.67</FullLoadDrivingtimePercentage> + <GearshiftCount>994</GearshiftCount> + <EngineSpeedDriving> + <Min unit="rpm">600.0</Min> + <Average unit="rpm">936.7</Average> + <Max unit="rpm">1855.8</Max> + </EngineSpeedDriving> + <AverageGearboxEfficiency unit="%">96.34</AverageGearboxEfficiency> + <AverageAxlegearEfficiency unit="%">95.23</AverageAxlegearEfficiency> + </VehiclePerformance> + <FuelConsumptionFactor>0.9840</FuelConsumptionFactor> + <Fuel type="Diesel CI"> + <FuelConsumption unit="g/km">409.4</FuelConsumption> + <FuelConsumption unit="g/t-km">80.1</FuelConsumption> + <FuelConsumption unit="g/p-km">5.69</FuelConsumption> + <FuelConsumption unit="MJ/km">17.5</FuelConsumption> + <FuelConsumption unit="MJ/t-km">3.42</FuelConsumption> + <FuelConsumption unit="MJ/p-km">0.243</FuelConsumption> + <FuelConsumption unit="l/100km">49.0</FuelConsumption> + <FuelConsumption unit="l/t-km">0.0958</FuelConsumption> + <FuelConsumption unit="l/p-km">0.00680</FuelConsumption> + </Fuel> + <CO2 unit="g/km">1281.4</CO2> + <CO2 unit="g/t-km">250.7</CO2> + <CO2 unit="g/p-km">17.8</CO2> + </Result> + <Result status="success" xsi:type="ResultCompletedVehicleSuccessType"> + <Mission>Interurban</Mission> + <Distance unit="km">123.590</Distance> + <SimulationParametersPrimaryVehicle> + <TotalVehicleMass unit="kg">19588</TotalVehicleMass> + <Payload unit="kg">1738</Payload> + <PassengerCount>24.5</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParametersPrimaryVehicle> + <SimulationParametersCompletedVehicle> + <TotalVehicleMass unit="kg">21123</TotalVehicleMass> + <Payload unit="kg">1723</Payload> + <PassengerCount>24.3</PassengerCount> + </SimulationParametersCompletedVehicle> + <VehiclePerformance> + <AverageSpeed unit="km/h">33.6</AverageSpeed> + <AverageDrivingSpeed unit="km/h">38.6</AverageDrivingSpeed> + <MinSpeed unit="km/h">0.0</MinSpeed> + <MaxSpeed unit="km/h">86.5</MaxSpeed> + <MaxDeceleration unit="m/s²">1.23</MaxDeceleration> + <MaxAcceleration unit="m/s²">1.10</MaxAcceleration> + <FullLoadDrivingtimePercentage>13.15</FullLoadDrivingtimePercentage> + <GearshiftCount>995</GearshiftCount> + <EngineSpeedDriving> + <Min unit="rpm">600.0</Min> + <Average unit="rpm">926.7</Average> + <Max unit="rpm">1809.5</Max> + </EngineSpeedDriving> + <AverageGearboxEfficiency unit="%">96.46</AverageGearboxEfficiency> + <AverageAxlegearEfficiency unit="%">94.82</AverageAxlegearEfficiency> + </VehiclePerformance> + <FuelConsumptionFactor>1.046</FuelConsumptionFactor> + <Fuel type="Diesel CI"> + <FuelConsumption unit="g/km">369.4</FuelConsumption> + <FuelConsumption unit="g/t-km">214.4</FuelConsumption> + <FuelConsumption unit="g/p-km">15.2</FuelConsumption> + <FuelConsumption unit="MJ/km">15.8</FuelConsumption> + <FuelConsumption unit="MJ/t-km">9.15</FuelConsumption> + <FuelConsumption unit="MJ/p-km">0.650</FuelConsumption> + <FuelConsumption unit="l/100km">44.2</FuelConsumption> + <FuelConsumption unit="l/t-km">0.256</FuelConsumption> + <FuelConsumption unit="l/p-km">0.0182</FuelConsumption> + </Fuel> + <CO2 unit="g/km">1156.2</CO2> + <CO2 unit="g/t-km">671.0</CO2> + <CO2 unit="g/p-km">47.6</CO2> + </Result> + <Result status="success" xsi:type="ResultCompletedVehicleSuccessType"> + <Mission>Coach</Mission> + <Distance unit="km">275.176</Distance> + <SimulationParametersPrimaryVehicle> + <TotalVehicleMass unit="kg">19704</TotalVehicleMass> + <Payload unit="kg">1854</Payload> + <PassengerCount>26.1</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParametersPrimaryVehicle> + <SimulationParametersCompletedVehicle> + <TotalVehicleMass unit="kg">21238</TotalVehicleMass> + <Payload unit="kg">1838</Payload> + <PassengerCount>25.9</PassengerCount> + </SimulationParametersCompletedVehicle> + <VehiclePerformance> + <AverageSpeed unit="km/h">64.4</AverageSpeed> + <AverageDrivingSpeed unit="km/h">66.2</AverageDrivingSpeed> + <MinSpeed unit="km/h">0.0</MinSpeed> + <MaxSpeed unit="km/h">102.5</MaxSpeed> + <MaxDeceleration unit="m/s²">1.25</MaxDeceleration> + <MaxAcceleration unit="m/s²">1.10</MaxAcceleration> + <FullLoadDrivingtimePercentage>14.89</FullLoadDrivingtimePercentage> + <GearshiftCount>179</GearshiftCount> + <EngineSpeedDriving> + <Min unit="rpm">600.0</Min> + <Average unit="rpm">1083.5</Average> + <Max unit="rpm">1810.7</Max> + </EngineSpeedDriving> + <AverageGearboxEfficiency unit="%">97.45</AverageGearboxEfficiency> + <AverageAxlegearEfficiency unit="%">91.58</AverageAxlegearEfficiency> + </VehiclePerformance> + <FuelConsumptionFactor>1.025</FuelConsumptionFactor> + <Fuel type="Diesel CI"> + <FuelConsumption unit="g/km">276.0</FuelConsumption> + <FuelConsumption unit="g/t-km">150.2</FuelConsumption> + <FuelConsumption unit="g/p-km">10.7</FuelConsumption> + <FuelConsumption unit="MJ/km">11.8</FuelConsumption> + <FuelConsumption unit="MJ/t-km">6.41</FuelConsumption> + <FuelConsumption unit="MJ/p-km">0.455</FuelConsumption> + <FuelConsumption unit="l/100km">33.0</FuelConsumption> + <FuelConsumption unit="l/t-km">0.180</FuelConsumption> + <FuelConsumption unit="l/p-km">0.0128</FuelConsumption> + </Fuel> + <CO2 unit="g/km">863.8</CO2> + <CO2 unit="g/t-km">470.0</CO2> + <CO2 unit="g/p-km">33.4</CO2> + </Result> + <Result status="success" xsi:type="ResultCompletedVehicleSuccessType"> + <Mission>Coach</Mission> + <Distance unit="km">275.176</Distance> + <SimulationParametersPrimaryVehicle> + <TotalVehicleMass unit="kg">22485</TotalVehicleMass> + <Payload unit="kg">4635</Payload> + <PassengerCount>65.3</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParametersPrimaryVehicle> + <SimulationParametersCompletedVehicle> + <TotalVehicleMass unit="kg">23995</TotalVehicleMass> + <Payload unit="kg">4595</Payload> + <PassengerCount>64.7</PassengerCount> + </SimulationParametersCompletedVehicle> + <VehiclePerformance> + <AverageSpeed unit="km/h">63.7</AverageSpeed> + <AverageDrivingSpeed unit="km/h">65.4</AverageDrivingSpeed> + <MinSpeed unit="km/h">0.0</MinSpeed> + <MaxSpeed unit="km/h">102.5</MaxSpeed> + <MaxDeceleration unit="m/s²">1.19</MaxDeceleration> + <MaxAcceleration unit="m/s²">1.10</MaxAcceleration> + <FullLoadDrivingtimePercentage>18.36</FullLoadDrivingtimePercentage> + <GearshiftCount>188</GearshiftCount> + <EngineSpeedDriving> + <Min unit="rpm">600.0</Min> + <Average unit="rpm">1080.1</Average> + <Max unit="rpm">1817.1</Max> + </EngineSpeedDriving> + <AverageGearboxEfficiency unit="%">97.36</AverageGearboxEfficiency> + <AverageAxlegearEfficiency unit="%">92.16</AverageAxlegearEfficiency> + </VehiclePerformance> + <FuelConsumptionFactor>1.023</FuelConsumptionFactor> + <Fuel type="Diesel CI"> + <FuelConsumption unit="g/km">292.7</FuelConsumption> + <FuelConsumption unit="g/t-km">63.7</FuelConsumption> + <FuelConsumption unit="g/p-km">4.52</FuelConsumption> + <FuelConsumption unit="MJ/km">12.5</FuelConsumption> + <FuelConsumption unit="MJ/t-km">2.72</FuelConsumption> + <FuelConsumption unit="MJ/p-km">0.193</FuelConsumption> + <FuelConsumption unit="l/100km">35.0</FuelConsumption> + <FuelConsumption unit="l/t-km">0.0762</FuelConsumption> + <FuelConsumption unit="l/p-km">0.00541</FuelConsumption> + </Fuel> + <CO2 unit="g/km">916.1</CO2> + <CO2 unit="g/t-km">199.4</CO2> + <CO2 unit="g/p-km">14.2</CO2> + </Result> + </Results> + <ApplicationInformation> + <SimulationToolVersion>0.6.1.1945-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> + <Date>2020-04-29T13:53:27.8416735Z</Date> + </ApplicationInformation> + </mrf:Data> + <mrf:Signature> + <di:Reference URI="#RESULT-b2d5a208fb6d49b09083"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>WQAMzAwhNh51mrrQdaeNYuRmUxIOnRUS39TxeetWt9Q=</di:DigestValue> + </di:Reference> + </mrf:Signature> +</mrf:VectoOutput> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/CompletedBus_34f.vecto b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/CompletedBus_34f.vecto new file mode 100644 index 0000000000000000000000000000000000000000..9b09858ac5fc8623aa45841be2adf3e323a0c753 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/CompletedBus_34f.vecto @@ -0,0 +1,12 @@ +{ + "Header": { + "CreatedBy": "Markus Quaritsch, IVT, Graz University of Technology", + "Date": "2020-02-07T15:06:30.9725917Z", + "AppVersion": "2.2", + "FileVersion": 7 + }, + "Body": { + "CompletedVehicle": "vecto_vehicle-completed_heavyBus_34f.xml", + "PrimaryVehicleResults": "primary_heavyBus group 42_SmartPS_generic maps.RSLT_PIF.xml" + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/VTP_PrimaryBus.vecto b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/VTP_PrimaryBus.vecto new file mode 100644 index 0000000000000000000000000000000000000000..7123593f98a9d14bede79416dda7806e4c9d8c67 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/VTP_PrimaryBus.vecto @@ -0,0 +1,24 @@ +{ + "Header": { + "CreatedBy": "", + "Date": "2018-06-12T11:24:10.6066876Z", + "AppVersion": "3", + "FileVersion": 4 + }, + "Body": { + "SavedInDeclMode": true, + "DeclarationVehicle": "primary_heavyBus group 42_non_Smart.xml", + "ManufacturerRecord": "CompletedBus_34f.RSLT_MANUFACTURER.xml", + "Mileage": 30000.0, + "NCVTestFuel": 42.5, + "FanPowerCoefficients": [ + 0.0, + 1.0, + 1.0 + ], + "FanDiameter": 0.3, + "Cycles": [ + "vtp_cycle_2Hz_Bus.vdri" + ] + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/VTP_PrimaryBus_ENG.vecto b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/VTP_PrimaryBus_ENG.vecto new file mode 100644 index 0000000000000000000000000000000000000000..a3aa344544ab040125787653d5a541b93c9d379c --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/VTP_PrimaryBus_ENG.vecto @@ -0,0 +1,24 @@ +{ + "Header": { + "CreatedBy": "", + "Date": "2018-06-12T11:24:10.6066876Z", + "AppVersion": "3", + "FileVersion": 4 + }, + "Body": { + "SavedInDeclMode": false, + "DeclarationVehicle": "primary_heavyBus group 42_non_Smart.xml", + "ManufacturerRecord": "CompletedBus_34f.RSLT_MANUFACTURER.xml", + "Mileage": 30000.0, + "NCVTestFuel": 42.5, + "FanPowerCoefficients": [ + 0.0, + 1.0, + 1.0 + ], + "FanDiameter": 0.3, + "Cycles": [ + "vtp_cycle_2Hz_Bus.vdri" + ] + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/vecto_vehicle-completed_heavyBus_34f.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/vecto_vehicle-completed_heavyBus_34f.xml new file mode 100644 index 0000000000000000000000000000000000000000..69c1a479f1fb35c9db494a069625fb80d0ffa7bb --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/vecto_vehicle-completed_heavyBus_34f.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="CompletedVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> + <Model>Sample Bus Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2020-01-09T11:00:00Z</Date> + <LegislativeClass>M3</LegislativeClass> + <RegisteredClass>II+III</RegisteredClass> + <VehicleCode>CB</VehicleCode> + <CurbMassChassis>19400</CurbMassChassis> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <RegisteredPassengers> + <LowerDeck>16</LowerDeck> + <UpperDeck>56</UpperDeck> + </RegisteredPassengers> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>4.000</HeightIntegratedBody> + <VehicleLength>13.890</VehicleLength> + <VehicleWidth>2.550</VehicleWidth> + <EntranceHeight>0.300</EntranceHeight> + <DoorDriveTechnology>pneumatic</DoorDriveTechnology> + <Components xsi:type="CompletedVehicleComponentsDeclarationType"> + <v2.6:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> + <Manufacturer>Generic Manufacturer</Manufacturer> + <Model>Generic Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-03-24T15:00:00Z</Date> + <AppVersion>Vecto AirDrag x.y</AppVersion> + <CdxA_0>5.20</CdxA_0> + <TransferredCdxA>5.20</TransferredCdxA> + <DeclaredCdxA>5.20</DeclaredCdxA> + </Data> + <Signature> + <di:Reference URI="#CabinX23h"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> + </di:Reference> + </Signature> + </v2.6:AirDrag> + <Auxiliaries> + <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <ElectricSystem> + <AlternatorTechnology>default</AlternatorTechnology> + <LEDLights> + <Dayrunninglights>true</Dayrunninglights> + <Headlights>true</Headlights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Interiorlights>true</Interiorlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>6</SystemConfiguration> + <CompressorType> + <DriverAC>2-stage</DriverAC> + <PassengerAC>2-stage</PassengerAC> + </CompressorType> + <AuxiliaryHeaterPower>30000</AuxiliaryHeaterPower> + <DoubleGlasing>true</DoubleGlasing> + <HeatPump>false</HeatPump> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/vtp_cycle_2Hz_Bus.vdri b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/vtp_cycle_2Hz_Bus.vdri index a4f2e8cceeb588c9c52e1bf8a37602a6e29b0fc9..d154a91ef4ec3308d5a103718925393712756061 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/vtp_cycle_2Hz_Bus.vdri +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/vtp_cycle_2Hz_Bus.vdri @@ -1,4 +1,4 @@ -<t> [s] , <v> [km/h] , <n_eng> [rpm] , <n_fan> [rpm] , <tq_left> [Nm] , <tq_right> [Nm] , <n_wh_left> [rpm] , <n_wh_right> [rpm] , <fc> [g/h] , <PS_comp_active> , <gear> +<t> [s] , <v> [km/h] , <n_eng> [rpm] , <n_fan> [rpm] , <tq_left> [Nm] , <tq_right> [Nm] , <n_wh_left> [rpm] , <n_wh_right> [rpm] , <fc_Diesel CI> [g/h] , <PS_comp_active> , <gear> 0.5 , 0.155072774 , 612.6648416 , 1679.93861 , -290.2833222 , -320.8394614 , 0.835692512 , 0.835692512 , 2662.077734 , 0 , 1.54109589 1 , 0.327375856 , 626.7368878 , 1679.93861 , -612.8203469 , -677.3277518 , 1.764239748 , 1.764239748 , 2466.909883 , 0 , 3.253424658 1.5 , 0.522345748 , 639.8611121 , 1679.93861 , -635.5526951 , -705.3563959 , 2.8149392 , 2.8149392 , 2503.097216 , 0 , 4 diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index dd4f5cb227c03eb4eef51d73e1db31d5246c1411..f883426306a8e823b8aedf9ddfb09b88d28c545d 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -2537,12 +2537,18 @@ <None Include="TestData\Integration\VTPMode\GenericVehicle\VTP_rural_2Hz.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> + <None Include="TestData\Integration\VTPMode\HeavyBus\CompletedBus_34f.vecto"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> <None Include="TestData\Integration\VTPMode\HeavyBus\VTP Testzyklus_Bus.xlsx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Include="TestData\Integration\VTPMode\HeavyBus\vtp_cycle_2Hz_Bus.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> + <None Include="TestData\Integration\VTPMode\HeavyBus\VTP_PrimaryBus_ENG.vecto"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> <None Include="TestData\Integration\VTPMode\HeavyBus\VTP_PrimaryBus.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> @@ -3610,12 +3616,18 @@ <Content Include="TestData\Integration\VTPMode\GenericVehicle\Tractor_4x2_vehicle-class-5_Generic vehicle.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> + <Content Include="TestData\Integration\VTPMode\HeavyBus\CompletedBus_34f.RSLT_MANUFACTURER.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> <Content Include="TestData\Integration\VTPMode\HeavyBus\primary_heavyBus group 42_non_Smart.RSLT_MANUFACTURER.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <Content Include="TestData\Integration\VTPMode\HeavyBus\primary_heavyBus group 42_non_Smart.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> + <Content Include="TestData\Integration\VTPMode\HeavyBus\vecto_vehicle-completed_heavyBus_34f.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> <Content Include="TestData\Integration\VTPMode\MediumLorry\vecto_vehicle-medium_lorry_4x2F.RSLT_MANUFACTURER.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content>