diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs index e8f85d9de34307bcd007e6d6bda39b6d6a219c2b..042803a7497fada86805b08478ee8116eb88b9c4 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 f2b017463e3cdaf92501b6f931c6bda2ec250481..9f7e4f43ab236f97c40961c8979c6c756754d70c 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 30bb62ad3fcf176508548480471fd1bd61dbe491..f3c6febaa599c98f901baec135e065cc8e705a8d 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 aa935abcf2fa7507405a84614b5c380bd1a62f37..7e13d744d3b2e1c3ecae01a8191506432848b82c 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 b87792a0f4faaf29cf54f3523c8e696858f4a7e0..42515dd66b8cbc68b09578aa90484b076b52ffb6 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 b22e9efa81e97184b2122ee2dd34a8c954656743..6b14f9acbf8a5ac7c25086510dcb0a62a7077856 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 4ce2c5b55b159c9c77b73338d55b7eeb4fdf8ddc..655c02a91619cb5d900da9d6e29ed8731ccfc056 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,