From e5fba516234a0e56fedfd0c4ba98b271c9c7a91a Mon Sep 17 00:00:00 2001 From: "VKMTHD\\haraldmartini" <harald.martini@student.tugraz.at> Date: Mon, 23 Jan 2023 09:56:19 +0100 Subject: [PATCH] create fullload curve before voltage level data for iepc --- .../EngineeringDataAdapter.cs | 6 ++- ...DeclarationModeHeavyLorryRunDataFactory.cs | 41 +++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs index 08fe0ca853..e054576492 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs @@ -1186,14 +1186,16 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter var voltageLevels = new List<ElectricMotorVoltageLevelData>(); foreach (var entry in iepc.VoltageLevels.OrderBy(x => x.VoltageLevel)) { var effMap = new Dictionary<uint, EfficiencyMap>(); + var fldCurve = + IEPCFullLoadCurveReader.Create(entry.FullLoadCurve, count, gearRatioUsedForMeasurement.Ratio); for (var i = 0u; i < entry.PowerMap.Count; i++) { var ratio = iepc.Gears.First(x => x.GearNumber == i + 1).Ratio; - effMap.Add(i + 1, IEPCMapReader.Create(entry.PowerMap[(int)i].PowerMap, count, ratio)); + effMap.Add(i + 1, IEPCMapReader.Create(entry.PowerMap[(int)i].PowerMap, count, ratio, fldCurve)); //fullLoadCurves.Add(i + 1, IEPCFullLoadCurveReader.Create(entry.FullLoadCurve, count, ratio)); } voltageLevels.Add(new IEPCVoltageLevelData() { Voltage = entry.VoltageLevel, - FullLoadCurve = IEPCFullLoadCurveReader.Create(entry.FullLoadCurve, count, gearRatioUsedForMeasurement.Ratio), + FullLoadCurve = fldCurve, EfficiencyMaps = effMap, }); } diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs index e42cfb3ba1..fc6b929a66 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs @@ -494,6 +494,47 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa public PEV_E_IEPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + #region Overrides of BatteryElectric + + protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, + int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable) + { + AxleGearRequired(); + return base.CreateVectoRunData(vehicle, mission, loading, modeIdx, ovcMode); + } + + #endregion + + private bool AxleGearRequired() + { + var vehicle = InputDataProvider.JobInputData.Vehicle; + var iepcInput = vehicle.Components.IEPC; + var axleGearRequired = !iepcInput.DifferentialIncluded && !iepcInput.DesignTypeWheelMotor; + if (axleGearRequired && vehicle.Components.AxleGearInputData == null) + { + throw new VectoException( + $"Axlegear reqhired 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; + } protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData) { -- GitLab