From a6e57dc597a78f60659346203980dae760101408 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <quaritsch@ivt.tugraz.at> Date: Thu, 4 May 2023 16:39:56 +0200 Subject: [PATCH] IEPC-E single bus and completed bus testcase works --- .../XMLDeclarationVehicleDataProvider.cs | 2 +- .../AuxiliaryDataAdapter.cs | 2 +- .../DeclarationDataAdapterSingleBus.cs | 5 +- ...DeclarationModePrimaryBusRunDataFactory.cs | 9 ++-- ...arationModeSingleBusVectoRunDataFactory.cs | 47 ++++++++++++++++++- .../VectoRunDataFactoryNinjectModule.cs | 2 +- .../VIFNinjectModule.cs | 2 +- 7 files changed, 58 insertions(+), 11 deletions(-) diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs index e8f85d9de3..042803a749 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs @@ -713,7 +713,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public XMLDeclarationMultistage_PEV_IEPC_PrimaryVehicleBusDataProviderV01(IXMLPrimaryVehicleBusJobInputData busJobData, XmlNode xmlNode, string sourceFile) : base(busJobData, xmlNode, sourceFile) { } - public override VectoSimulationJobType VehicleType { get => VectoSimulationJobType.BatteryElectricVehicle; } + public override VectoSimulationJobType VehicleType { get => VectoSimulationJobType.IEPC_E; } public override bool OvcHev => true; diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs index f2b017463e..9f7e4f43ab 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs @@ -1451,7 +1451,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen var retVal = GetDefaultElectricalUserConfig(); var primaryBusAuxiliaries = primaryVehicle.Components.BusAuxiliaries; - retVal.AlternatorType = primaryVehicle.VehicleType == VectoSimulationJobType.BatteryElectricVehicle + retVal.AlternatorType = primaryVehicle.VehicleType.IsOneOf(VectoSimulationJobType.BatteryElectricVehicle, VectoSimulationJobType.IEPC_E) ? AlternatorType.None : primaryBusAuxiliaries.ElectricSupply.AlternatorTechnology; //primaryBusAuxiliaries.ElectricSupply.AlternatorTechnology; diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs index 30bb62ad3f..f3c6febaa5 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs @@ -302,7 +302,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus public class PEV_E4 : BatteryElectric { } - public class PEV_E_IEPC : BatteryElectric { } + public class PEV_E_IEPC : BatteryElectric + { + protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new IEPCGearboxDataAdapter(); + } public class Exempted : SingleBusBase diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs index aa935abcf2..7e13d744d3 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs @@ -707,12 +707,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa protected override bool AxleGearRequired() { - var vehicle = InputDataProvider.JobInputData.Vehicle; - var iepcInput = vehicle.Components.IEPC; + var iepcInput = Vehicle.Components.IEPC; var axleGearRequired = !iepcInput.DifferentialIncluded && !iepcInput.DesignTypeWheelMotor; - if (axleGearRequired && vehicle.Components.AxleGearInputData == null) { + if (axleGearRequired && Vehicle.Components.AxleGearInputData == null) { throw new VectoException( - $"Axlegear reqhired for selected type of IEPC! DifferentialIncluded: {iepcInput.DifferentialIncluded}, DesignTypeWheelMotor: {iepcInput.DesignTypeWheelMotor}"); + $"Axlegear required for selected type of IEPC! DifferentialIncluded: {iepcInput.DifferentialIncluded}, DesignTypeWheelMotor: {iepcInput.DesignTypeWheelMotor}"); } var numGearsPowermap = @@ -730,7 +729,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa $"Number of gears drag curve does not match gear count! DragCurve {numGearsDrag}; Gear count: {gearCount}"); } - return axleGearRequired || vehicle.Components.AxleGearInputData != null; + return axleGearRequired || Vehicle.Components.AxleGearInputData != null; } diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs index b87792a0f4..42515dd66b 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs @@ -649,7 +649,52 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus public class PEV_E_IEPC : BatteryElectric { public PEV_E_IEPC(ISingleBusInputDataProvider dataProvider, IDeclarationReport report, ISingleBusDeclarationDataAdapter dataAdapter) : base(dataProvider, report, dataAdapter) { } - } + + protected override bool AxleGearRequired() + { + var iepcInput = PrimaryVehicle.Components.IEPC; + var axleGearRequired = !iepcInput.DifferentialIncluded && !iepcInput.DesignTypeWheelMotor; + if (axleGearRequired && PrimaryVehicle.Components.AxleGearInputData == null) { + throw new VectoException( + $"Axlegear required for selected type of IEPC! DifferentialIncluded: {iepcInput.DifferentialIncluded}, DesignTypeWheelMotor: {iepcInput.DesignTypeWheelMotor}"); + } + + var numGearsPowermap = + iepcInput.VoltageLevels.Select(x => Tuple.Create(x.VoltageLevel, x.PowerMap.Count)).ToArray(); + var gearCount = iepcInput.Gears.Count; + var numGearsDrag = iepcInput.DragCurves.Count; + + if (numGearsPowermap.Any(x => x.Item2 != gearCount)) { + throw new VectoException( + $"Number of gears for voltage levels does not match! PowerMaps: {numGearsPowermap.Select(x => $"{x.Item1}: {x.Item2}").Join()}; Gear count: {gearCount}"); + } + + if (numGearsDrag > 1 && numGearsDrag != gearCount) { + throw new VectoException( + $"Number of gears drag curve does not match gear count! DragCurve {numGearsDrag}; Gear count: {gearCount}"); + } + + return axleGearRequired || PrimaryVehicle.Components.AxleGearInputData != null; + + } + + protected override void CreateGearboxAndGearshiftData(VectoRunData runData) + { + runData.GearshiftParameters = + DataAdapter.CreateGearshiftData( + runData.AxleGearData?.AxleGear.Ratio ?? 1.0, + null, + GearboxType.APTN, + PrimaryVehicle.Components.IEPC.Gears.Count + ); + var shiftStrategyName = + PowertrainBuilder.GetShiftStrategyName(GearboxType.APTN, + PrimaryVehicle.VehicleType); + runData.GearboxData = DataAdapter.CreateGearboxData(PrimaryVehicle, runData, + ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters)); + + } + } public class Exempted : SingleBusBase diff --git a/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs b/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs index b22e9efa81..6b14f9acbf 100644 --- a/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs +++ b/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs @@ -267,7 +267,7 @@ namespace TUGraz.VectoCore.InputData.Reader _vehicleStringHelper.GetSingleBusName(VectoSimulationJobType.BatteryElectricVehicle, ArchitectureID.E4)); Bind<IVectoRunDataFactory>().To<DeclarationModeSingleBusRunDataFactory.PEV_E_IEPC>().Named( - _vehicleStringHelper.GetSingleBusName(VectoSimulationJobType.BatteryElectricVehicle, + _vehicleStringHelper.GetSingleBusName(VectoSimulationJobType.IEPC_E, ArchitectureID.E_IEPC)); Bind<IVectoRunDataFactory>().To<DeclarationModeSingleBusRunDataFactory.Exempted>().Named( diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs index 4ce2c5b55b..655c02a916 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs @@ -208,7 +208,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF false))); Bind<IXMLMultistepIntermediateReport>().To<IEPC_CompletedBus_VIF>().Named(MRFNinjectModule.VehicleTypeAndArchitectureStringHelper.CreateName.Invoke(MRFNinjectModule.VehicleTypeAndArchitectureStringHelper.ToParams(VehicleCategoryHelper.PrimaryBus, - VectoSimulationJobType.BatteryElectricVehicle, + VectoSimulationJobType.IEPC_E, ArchitectureID.E_IEPC, false, true, -- GitLab