From 42e2ab628ecc34c0af3e9104f5fda74ce3c865df Mon Sep 17 00:00:00 2001 From: "VKMTHD\\haraldmartini" <harald.martini@student.tugraz.at> Date: Tue, 9 May 2023 11:22:07 +0200 Subject: [PATCH] use IEPC_S instead of SerialHybrid as vecto simulation type use IEPC_E isntead of BatteryElectric as vecto simulation type Updated bindings --- .../XMLDeclarationVehicleDataProvider.cs | 2 +- ...larationCompletedBusVehicleDataProvider.cs | 49 ++++++++++++++++++- .../XMLDeclarationMultistageInputReader.cs | 2 + ...clarationDataAdapterGenericCompletedBus.cs | 12 ++++- .../DeclarationDataAdapterPrimaryBus.cs | 33 ++++++++++--- .../GearBoxDataAdapter.cs | 10 +++- .../VectoRunDataFactoryNinjectModule.cs | 1 + .../Models/Declaration/DeclarationData.cs | 7 ++- .../GenericModelData/GenericBusEngineData.cs | 2 +- .../PrimaryVehicleParameterGroup.cs | 4 +- .../VIFNinjectModule.cs | 2 +- 11 files changed, 104 insertions(+), 20 deletions(-) diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs index 042803a749..76a50eefc0 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs @@ -673,7 +673,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public XMLDeclarationMultistage_HEV_IEPC_S_PrimaryVehicleBusDataProviderV01(IXMLPrimaryVehicleBusJobInputData busJobData, XmlNode xmlNode, string sourceFile) : base(busJobData, xmlNode, sourceFile) { } - public override VectoSimulationJobType VehicleType { get => VectoSimulationJobType.SerialHybridVehicle; } + public override VectoSimulationJobType VehicleType { get => VectoSimulationJobType.IEPC_S; } public override string PowertrainPositionPrefix => "S"; } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationCompletedBusVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationCompletedBusVehicleDataProvider.cs index 1ff79ffc92..5f47633bdf 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationCompletedBusVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationCompletedBusVehicleDataProvider.cs @@ -1,7 +1,9 @@ -using System.Linq; +using System; +using System.Linq; using System.Xml; using System.Xml.Linq; using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; @@ -203,7 +205,50 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24 XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); public XMLDeclarationHevCompletedBusDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { } - public override VectoSimulationJobType VehicleType => ArchitectureID.ToString().StartsWith("S") ? VectoSimulationJobType.SerialHybridVehicle : VectoSimulationJobType.ParallelHybridVehicle; + + private VectoSimulationJobType? _vehicleType = null; + public override VectoSimulationJobType VehicleType + { + get + { + if (_vehicleType.HasValue) { + return _vehicleType.Value; + } + + switch (ArchitectureID) { + case ArchitectureID.UNKNOWN: + case ArchitectureID.E2: + case ArchitectureID.E3: + case ArchitectureID.E4: + case ArchitectureID.E_IEPC: + throw new VectoException($"Invalid {ArchitectureID} for hybrid vehicle"); + case ArchitectureID.P1: + case ArchitectureID.P2: + case ArchitectureID.P2_5: + case ArchitectureID.P3: + case ArchitectureID.P4: + _vehicleType = VectoSimulationJobType.ParallelHybridVehicle; + break; + case ArchitectureID.P_IHPC: + _vehicleType = VectoSimulationJobType.IHPC; + break; + case ArchitectureID.S2: + case ArchitectureID.S3: + case ArchitectureID.S4: + _vehicleType = VectoSimulationJobType.SerialHybridVehicle; + break; + case ArchitectureID.S_IEPC: + _vehicleType = VectoSimulationJobType.IEPC_S; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + return _vehicleType.Value; + } + } + + //ArchitectureID.ToString().StartsWith("S") ? VectoSimulationJobType.SerialHybridVehicle : VectoSimulationJobType.ParallelHybridVehicle; public override bool HybridElectricHDV => true; } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs index 46ece69d99..8b9cc5b286 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs @@ -1341,6 +1341,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl case VectoSimulationJobType.ParallelHybridVehicle: case VectoSimulationJobType.SerialHybridVehicle: case VectoSimulationJobType.BatteryElectricVehicle: + case VectoSimulationJobType.IEPC_S: + case VectoSimulationJobType.IEPC_E: return WaterElectricHeater != null && AirElectricHeater != null && OtherHeatingTechnology != null; default: return false; diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs index 6bc5d56a56..9ad611adc3 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs @@ -258,8 +258,16 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.CompletedBus.Gener public class HEV_S3 : SerialHybrid { } public class HEV_S4 : SerialHybrid { } - - public class HEV_S_IEPC : SerialHybrid { } + + public class HEV_S_IEPC : SerialHybrid + { + #region Overrides of SerialHybrid + + protected override IGearboxDataAdapter GearboxDataAdapter { get; } = + new GenericCompletedBusIEPCGearboxDataAdapter(); + + #endregion + } public abstract class ParallelHybrid : Hybrid { diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs index 143b2e90c9..96222d7ad9 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs @@ -21,9 +21,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus { public abstract class PrimaryBusBase : IPrimaryBusDeclarationDataAdapter { - public static readonly GearboxType[] SupportedGearboxTypes = - { GearboxType.MT, GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial }; - #region Implementation of IDeclarationDataAdapter + + public virtual GearboxType[] SupportedGearboxTypes => throw new NotImplementedException(); private readonly IDriverDataAdapter _driverDataAdapter = new PrimaryBusDriverDataAdapter(); protected readonly IVehicleDataAdapter _vehicleDataAdapter = new PrimaryBusVehicleDataAdapter(); @@ -160,15 +159,17 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus { return AuxDataAdapter.CreateBusAuxiliariesData(mission, vehicleData, runData); } - - #endregion - } public class Conventional : PrimaryBusBase { + #region Overrides of PrimaryBusBase + public override GearboxType[] SupportedGearboxTypes => new GearboxType[] + { + GearboxType.MT, GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial + }; protected override IEngineDataAdapter EngineDataAdapter { get; } = new CombustionEngineComponentDataAdapter(); protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(new TorqueConverterDataAdapter()); @@ -233,6 +234,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus { protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(new TorqueConverterDataAdapter()); + #region Overrides of SerialHybrid + + public override GearboxType[] SupportedGearboxTypes => new[] + { GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.APTN, GearboxType.ATSerial }; + + #endregion } public class HEV_S3 : SerialHybrid @@ -253,6 +260,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus public abstract class ParallelHybrid : Hybrid { + public override GearboxType[] SupportedGearboxTypes => new[] + { GearboxType.AMT, GearboxType.ATSerial, GearboxType.ATPowerSplit }; + #region Overrides of PrimaryBusBase protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(new TorqueConverterDataAdapter()); @@ -271,7 +281,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus public class HEV_P2 : ParallelHybrid { + #region Overrides of ParallelHybrid + public override GearboxType[] SupportedGearboxTypes => new[] { GearboxType.AMT, GearboxType.IHPC }; + + #endregion } public class HEV_P2_5 : ParallelHybrid @@ -293,9 +307,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus { private readonly IElectricStorageAdapter _electricStorageAdapter = new ElectricStorageAdapter(); - #region Overrides of PrimaryBusBase + public override GearboxType[] SupportedGearboxTypes => new[] + { GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.APTN, GearboxType.ATSerial }; - protected override IEngineDataAdapter EngineDataAdapter => throw new NotImplementedException(); + #region Overrides of PrimaryBusBase + + protected override IEngineDataAdapter EngineDataAdapter => throw new NotImplementedException(); protected override IGearboxDataAdapter GearboxDataAdapter => throw new NotImplementedException(); diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs index b211077a72..908550f180 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs @@ -465,6 +465,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen public class IEPCGearboxDataAdapter : GearboxDataAdapterBase { + private GearboxData CreateIEPCGearboxData(IVehicleDeclarationInputData vehicle, VectoRunData runData, IShiftPolygonCalculator shiftPolygonCalc) { @@ -545,9 +546,14 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen #endregion } + public class GenericCompletedBusIEPCGearboxDataAdapter : IEPCGearboxDataAdapter + { + + } + - public class CompletedSpecifigBusGearboxDataAdapter : GenericCompletedBusGearboxDataAdapter + public class CompletedSpecificBusGearboxDataAdapter : GenericCompletedBusGearboxDataAdapter { - public CompletedSpecifigBusGearboxDataAdapter(ITorqueConverterDataAdapter torqueConverterDataAdapter) : base(torqueConverterDataAdapter) { } + public CompletedSpecificBusGearboxDataAdapter(ITorqueConverterDataAdapter torqueConverterDataAdapter) : base(torqueConverterDataAdapter) { } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs b/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs index 740fedee40..2209d0af26 100644 --- a/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs +++ b/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs @@ -209,6 +209,7 @@ namespace TUGraz.VectoCore.InputData.Reader Bind<IVectoRunDataFactory>().To<DeclarationModeCompletedBusRunDataFactory.HEV_P4>().Named( _vehicleStringHelper.GetName(VehicleCategoryHelper.CompletedBus, VectoSimulationJobType.ParallelHybridVehicle, ArchitectureID.P4)); + Bind<IVectoRunDataFactory>().To<DeclarationModeCompletedBusRunDataFactory.PEV_E2>().Named( _vehicleStringHelper.GetName(VehicleCategoryHelper.CompletedBus, VectoSimulationJobType.BatteryElectricVehicle, ArchitectureID.E2)); diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs index dfb9c44b13..d8579a3c58 100644 --- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs @@ -626,14 +626,17 @@ namespace TUGraz.VectoCore.Models.Declaration public const double TorqueLimitGearboxFactor = 0.9; public const double TorqueLimitVehicleFactor = 0.95; - public static KilogramSquareMeter EngineInertia(VectoSimulationJobType jobType, CubicMeter displacement, GearboxType gbxType) + public static KilogramSquareMeter EngineInertia(VectoSimulationJobType jobType, CubicMeter displacement, GearboxType? gbxType) { // VB Code: Return 1.3 + 0.41 + 0.27 * (Displ / 1000) KilogramSquareMeter clutchPlateTc; if (jobType.IsOneOf(VectoSimulationJobType.SerialHybridVehicle, VectoSimulationJobType.IEPC_S)) { clutchPlateTc = 0.SI<KilogramSquareMeter>(); } else { - clutchPlateTc = (gbxType.AutomaticTransmission() ? TorqueConverterInertia : ClutchInertia); + if (!gbxType.HasValue) { + throw new VectoException("Gearbox type must be provided!"); + } + clutchPlateTc = (gbxType.Value.AutomaticTransmission() ? TorqueConverterInertia : ClutchInertia); } return clutchPlateTc + EngineBaseInertia + diff --git a/VectoCore/VectoCore/Models/GenericModelData/GenericBusEngineData.cs b/VectoCore/VectoCore/Models/GenericModelData/GenericBusEngineData.cs index ac648076b1..4d26ec3cbd 100644 --- a/VectoCore/VectoCore/Models/GenericModelData/GenericBusEngineData.cs +++ b/VectoCore/VectoCore/Models/GenericModelData/GenericBusEngineData.cs @@ -56,7 +56,7 @@ namespace TUGraz.VectoCore.Models.Declaration IdleSpeed = idleSpeed, Displacement = engineData.Displacement, WHRType = WHRType.None, - Inertia = DeclarationData.Engine.EngineInertia(primaryVehicle.VehicleType, engineData.Displacement, gearbox.Type), + Inertia = DeclarationData.Engine.EngineInertia(primaryVehicle.VehicleType, engineData.Displacement, gearbox?.Type), EngineStartTime = DeclarationData.Engine.DefaultEngineStartTime, RatedPowerDeclared = engineData.RatedPowerDeclared, RatedSpeedDeclared = engineData.RatedSpeedDeclared, diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryVehicleParameterGroup.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryVehicleParameterGroup.cs index f2d73394b1..8287d98941 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryVehicleParameterGroup.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryVehicleParameterGroup.cs @@ -95,7 +95,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF var result = new List<XElement> { new XElement(_vif + XMLNames.Vehicle_OvcHev, vehicle.OvcHev), }; - if (vehicle.OvcHev) { + if (vehicle.OvcHev && !vehicle.VehicleType.IsOneOf( + VectoSimulationJobType.BatteryElectricVehicle, + VectoSimulationJobType.IEPC_E)) { result.Add(new XElement(_vif + XMLNames.Vehicle_MaxChargingPower, vehicle.MaxChargingPower.Value())); } return result; 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 655c02a916..ca7ac8ae1c 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 @@ -159,7 +159,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF false))); Bind<IXMLMultistepIntermediateReport>().To<HEV_CompletedBus_VIF>().Named(MRFNinjectModule.VehicleTypeAndArchitectureStringHelper.CreateName.Invoke(MRFNinjectModule.VehicleTypeAndArchitectureStringHelper.ToParams(VehicleCategoryHelper.PrimaryBus, - VectoSimulationJobType.SerialHybridVehicle, + VectoSimulationJobType.IEPC_S, ArchitectureID.S_IEPC, false, true, -- GitLab