From 8b0fc7b5e6e9244342d905ac9f6e4fa7c6276a03 Mon Sep 17 00:00:00 2001 From: "VKMTHD\\haraldmartini" <harald.martini@student.tugraz.at> Date: Wed, 23 Nov 2022 09:48:26 +0100 Subject: [PATCH] made NextRun virtual --- .../AbstractDeclarationVectoRunDataFactory.cs | 2 +- ...DeclarationModeHeavyLorryRunDataFactory.cs | 5 +- ...tionModeHeavyLorryRunDataFactory_Hybrid.cs | 118 ++++++++++++++---- 3 files changed, 95 insertions(+), 30 deletions(-) diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs index d51c2cb060..db27d2cbab 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs @@ -65,7 +65,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { //} } - public IEnumerable<VectoRunData> NextRun() + public virtual IEnumerable<VectoRunData> NextRun() { Initialize(); diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs index 5a1b20d498..81355544f2 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs @@ -135,7 +135,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa #region Implementation of IVectoRunDataFactory - public IEnumerable<VectoRunData> NextRun() + public override IEnumerable<VectoRunData> NextRun() { Initialize(); if (Report != null) @@ -214,7 +214,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa } } - protected override void SetGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, AxleGearData axleGearData, AngledriveData angledriveData) + protected override void SetGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, + AxleGearData axleGearData, AngledriveData angledriveData) { } diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs index abbe21afb9..833b55a5e4 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs @@ -6,7 +6,10 @@ using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.SimulationComponent; using TUGraz.VectoCore.Models.SimulationComponent.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Impl.Shiftstrategies; using TUGraz.VectoCore.OutputData; namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDataFactory @@ -46,7 +49,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa if (vehicle.OvcHev) { yield return CreateVectoRunData(vehicle, mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeDepleting); yield return CreateVectoRunData(vehicle, mission, loading, modeIdx, VectoRunData.OvcHevMode.ChargeSustaining); - } else { yield return CreateVectoRunData(vehicle, mission, loading, modeIdx); } @@ -54,23 +56,16 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa } } } - - protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, - Mission mission, - KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, - int? modeIdx, - VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable) - { - throw new NotImplementedException(); - } - + #endregion } public class SerialHybrid : Hybrid { - public SerialHybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public SerialHybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, + declarationDataAdapter) { } #region Overrides of Hybrid @@ -80,27 +75,61 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa int? modeIdx, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable) { + _segment = GetSegment(InputDataProvider.JobInputData.Vehicle, false); var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData; var engineModes = engine.EngineModes; var engineMode = engineModes[modeIdx.Value]; var runData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value); + + + runData.DriverData = DataAdapter.CreateDriverData(_segment); + runData.AirdragData = + DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment); runData.VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational); + + runData.EngineData = DataAdapter.CreateEngineData(vehicle, engineMode, mission); - runData.BatteryData = DataAdapter.CreateBatteryData(vehicle.Components.ElectricStorage, vehicle.VehicleType, vehicle.OvcHev); - runData.SuperCapData = DataAdapter.CreateSuperCapData(vehicle.Components.ElectricStorage); - runData.ElectricMachinesData = DataAdapter.CreateElectricMachines(vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits, runData.BatteryData.CalculateAverageVoltage()); - runData.GearboxData = _gearboxData; - runData.AirdragData = _airdragData; - runData.AngledriveData = _angledriveData; - runData.HybridStrategyParameters = DataAdapter.CreateHybridStrategy(runData.BatteryData, runData.SuperCapData); - runData.Aux = DataAdapter.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData, - vehicle.Components.BusAuxiliaries, - mission.MissionType, - _segment.VehicleClass, - vehicle.Length, - vehicle.Components.AxleWheels.NumSteeredAxles, - vehicle.VehicleType); + DataAdapter.CreateREESSData(vehicle.Components.ElectricStorage, vehicle.VehicleType, vehicle.OvcHev, + ((batteryData) => runData.BatteryData = batteryData), + ((sCdata => runData.SuperCapData = sCdata))); + runData.ElectricMachinesData = DataAdapter.CreateElectricMachines( + vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits, + runData.BatteryData.CalculateAverageVoltage()); + if (vehicle.Components.AxleGearInputData != null) { + runData.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData); + } + + runData.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData); + runData.Aux = DataAdapter.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData, null, mission.MissionType, + _segment.VehicleClass, vehicle.Length, vehicle.Components.AxleWheels.NumSteeredAxles, + VectoSimulationJobType.SerialHybridVehicle); + + if (vehicle.ArchitectureID == ArchitectureID.S2) { + runData.GearshiftParameters = + DataAdapter.CreateGearshiftData( + runData.AxleGearData?.AxleGear.Ratio ?? 1.0, + null, + vehicle.Components.GearboxInputData.Type, + vehicle.Components.GearboxInputData.Gears.Count + ); + var shiftStrategyName = + PowertrainBuilder.GetShiftStrategyName(vehicle.Components.GearboxInputData.Type, + vehicle.VehicleType); + runData.GearboxData = DataAdapter.CreateGearboxData(vehicle, runData, + ShiftPolygonCalculator.Create(shiftStrategyName, runData.GearshiftParameters)); + } else { + runData.GearshiftParameters = new ShiftStrategyParameters() + { + StartSpeed = DeclarationData.GearboxTCU.StartSpeed, + StartAcceleration = DeclarationData.GearboxTCU.StartAcceleration + }; + } + runData.HybridStrategyParameters = + DataAdapter.CreateHybridStrategy(runData.BatteryData, runData.SuperCapData, runData.VehicleData.TotalVehicleMass, ovcMode); + + + return runData; } @@ -114,13 +143,19 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa { throw new NotImplementedException(); } + protected override void Initialize() + { + _segment = GetSegment(InputDataProvider.JobInputData.Vehicle, false); + } #endregion } public class ParallelHybrid : Hybrid { - public ParallelHybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + public ParallelHybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, + declarationDataAdapter) { } #region Overrides of LorryBase @@ -131,6 +166,35 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa } #endregion + + #region Overrides of AbstractDeclarationVectoRunDataFactory + + protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, + int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable) + { + _segment = GetSegment(InputDataProvider.JobInputData.Vehicle, false); + var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData; + var engineModes = engine.EngineModes; + var engineMode = engineModes[modeIdx.Value]; + var runData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value); + + + + + + return runData; + } + + #region Overrides of LorryBase + + protected override void Initialize() + { + + } + + #endregion + + #endregion } public class HEV_S2 : SerialHybrid -- GitLab