diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs index 5924a4b9d723000d580c371328cd700925bf3245..61711e1856721dbaa368dae5ee8d2dfc1b99526b 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs @@ -1337,7 +1337,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider { get { - return ElementExists(new [] {XMLNames.Component_Vehicle, XMLNames.Component_Model}) + if (BaseNode.LocalName == XMLNames.Component_Vehicle) { + return BaseNode.SelectSingleNode($"./*[local-name()='{XMLNames.Component_Model}']")?.InnerText; + } + return ElementExists(new [] { XMLNames.Component_Vehicle, XMLNames.Component_Model}) ? GetString(new[] { XMLNames.Component_Vehicle, XMLNames.Component_Model }) : null; } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataMultistageV01InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataMultistageV01InjectModule.cs index aabae6c80c9e0cf060286df8a7516d4aea16478a..8f61766998e747ae0ca2b542dbf3a8f650fe4b6e 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataMultistageV01InjectModule.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataMultistageV01InjectModule.cs @@ -39,10 +39,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules Bind<IXMLPrimaryVehicleBusJobInputData>().To<XMLDeclarationMultistagePrimaryVehicleBusJobInputDataProviderV01>() .Named(XMLDeclarationMultistagePrimaryVehicleBusJobInputDataProviderV01.QUALIFIED_XSD_TYPE); - Bind<IXMLPrimaryVehicleBusJobInputData>().To<XMLDeclarationMultistageExemptedPrimaryVehicleBusJobInputDataProviderV01>() - .Named(XMLDeclarationMultistageExemptedPrimaryVehicleBusJobInputDataProviderV01.QUALIFIED_XSD_TYPE); + Bind<IXMLPrimaryVehicleBusJobInputData>().To<XMLDeclarationMultistageExemptedPrimaryVehicleBusJobInputDataProviderV01>() + .Named(XMLDeclarationMultistageExemptedPrimaryVehicleBusJobInputDataProviderV01.QUALIFIED_XSD_TYPE); - Bind<IXMLJobDataReader>().To<XMLJobDataMultistagePrimaryVehicleReaderV01>() + Bind<IXMLJobDataReader>().To<XMLJobDataMultistagePrimaryVehicleReaderV01>() .Named(XMLJobDataMultistagePrimaryVehicleReaderV01.QUALIFIED_XSD_TYPE); Bind<IXMLJobDataReader>().To<XMLJobDataMultistageExemptedPrimaryVehicleReaderV01>() diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeMultistageBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeMultistageBusVectoRunDataFactory.cs index 45a69fd65b749930a2c871025d6ff9761ddfaa67..c2c3e20b12a7ccff214dbb7455b067ca4042f1d7 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeMultistageBusVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeMultistageBusVectoRunDataFactory.cs @@ -26,15 +26,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { return new VectoRunData { - Exempted = true, + Exempted = InputDataProvider.MultistageJobInputData.JobInputData.PrimaryVehicle.Vehicle.ExemptedVehicle, + MultistageRun = true, + ExecutionMode = ExecutionMode.Declaration, Report = Report, Mission = new Mission { MissionType = MissionType.ExemptedMission }, - VehicleData = CreateExemptedVehicleData(InputDataProvider.MultistageJobInputData.JobInputData.PrimaryVehicle.Vehicle), + VehicleData = CreateVehicleData(InputDataProvider.MultistageJobInputData.JobInputData.PrimaryVehicle.Vehicle), MultistageVIFInputData = InputDataProvider }; } - private VehicleData CreateExemptedVehicleData(IVehicleDeclarationInputData data) + private VehicleData CreateVehicleData(IVehicleDeclarationInputData data) { var exempted = SetCommonVehicleData(data); exempted.VIN = data.VIN; diff --git a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs index 67b3aaaf5c4dff81638043a4449c823e18ec7180..40b12e257190b3b222d36c1197a140cd3d9f657d 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs @@ -134,12 +134,14 @@ namespace TUGraz.VectoCore.Models.Simulation.Data public SuperCapData SuperCapData { get; internal set; } - public SimulationType SimulationType { get; set; } + public SimulationType SimulationType { get; internal set; } - public VTPData VTPData { get; set; } + public VTPData VTPData { get; internal set; } - public ShiftStrategyParameters GearshiftParameters { get; set; } - public bool Exempted { get; set; } + public ShiftStrategyParameters GearshiftParameters { get; internal set; } + public bool Exempted { get; internal set; } + + public bool MultistageRun { get; internal set; } public IDrivingCycleData PTOCycleWhileDrive { get; internal set; } diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/ExemptedRun.cs b/VectoCore/VectoCore/Models/Simulation/Impl/ExemptedRun.cs index 7aeca33d1d57e26819b49dc3e7422bd6a4b679de..bcb975cebc62b91dedcbe1b892c70633f791dd18 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/ExemptedRun.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/ExemptedRun.cs @@ -63,6 +63,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl { private void CheckValidInput() { + if (Container.RunData.MultistageRun) { + return; + } var vehicleData = Container.RunData.VehicleData; if (vehicleData.ZeroEmissionVehicle && vehicleData.DualFuelVehicle) { throw new VectoException("Invalid input: ZE-HDV and DualFuelVehicle are mutually exclusive!"); diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs index bddcacb7b1bd208134967d46255bbed923fd45c0..9b04c22a04eb836acd2ad06ac5e7047651e1a332 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs @@ -214,7 +214,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl var current = i++; var d = data; data.JobRunId = current; - yield return data.Exempted ? GetExemptedRun(data) : GetNonExemptedRun(data, current, d, ref warning1Hz); + yield return data.Exempted || data.MultistageRun ? GetExemptedRun(data) : GetNonExemptedRun(data, current, d, ref warning1Hz); } } diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs index b3b21458d2d3923b077c5c0b55d023cc46b4b419..a1dace17c611d2dbcb0df78805fbb9de4a5af885 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs @@ -139,7 +139,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl Container.AbsTime = AbsTime; } } while (response is ResponseSuccess); - if (!GetContainer().RunData.Exempted) { + if (!(GetContainer().RunData.Exempted || GetContainer().RunData.MultistageRun)) { //foreach (var fuel in GetContainer().RunData.EngineData.Fuels) { // calculate vehicleline correction here in local thread context because writing sum-data and report afterwards is synchronized //var cf = GetContainer().ModalData.VehicleLineCorrectionFactor(fuel.FuelData); @@ -186,7 +186,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl throw ex; } - Container.RunStatus = Container.RunData.Exempted + Container.RunStatus = Container.RunData.Exempted || Container.RunData.MultistageRun ? Status.Success : CyclePort.Progress < 1 ? (response is ResponseBatteryEmpty ? Status.REESSEmpty : Status.Aborted)