diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs index 522609f38fd5d385f5bc5b49199ffdac250107c3..ef0856a46f87bf164cb0692ed43ae078f6ef75e6 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs @@ -300,11 +300,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen var shiftPolygon = shiftPolygonCalculator != null ? shiftPolygonCalculator.ComputeDeclarationShiftPolygon( gearbox.Type, (int)i, engine?.FullLoadCurves[i + 1], gearbox.Gears, engine, axlegearRatio, - dynamicTyreRadius, runData.ElectricMachinesData?.FirstOrDefault().Item2) + dynamicTyreRadius, runData.ElectricMachinesData?.FirstOrDefault()?.Item2) : DeclarationData.Gearbox.ComputeShiftPolygon( gearbox.Type, (int)i, engine?.FullLoadCurves[i + 1], gearsInput, engine, - axlegearRatio, dynamicTyreRadius, runData.ElectricMachinesData?.FirstOrDefault().Item2); + axlegearRatio, dynamicTyreRadius, runData.ElectricMachinesData?.FirstOrDefault()?.Item2); var gearData = new GearData { diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs index c59bad0a7aaeec25737240b5e8982b2650148543..288e888d4c2f92ebb906a3562877b72ebc135e08 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs @@ -119,7 +119,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa _axlegearData = DataAdapter.CreateAxleGearData(InputDataProvider.JobInputData.Vehicle.Components.AxleGearInputData); } _angledriveData = DataAdapter.CreateAngledriveData(InputDataProvider.JobInputData.Vehicle.Components.AngledriveInputData); - SetGearboxAndGearshiftData(vehicle, _axlegearData, _angledriveData); + + _retarderData = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData); @@ -206,6 +207,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa foreach (var loading in mission.Loadings) { var simulationRunData = CreateVectoRunData(vehicle, mission, loading, modeIdx); + yield return simulationRunData; } } @@ -261,8 +263,22 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa mission); // _engineData.Copy(), // a copy is necessary because every run has a different correction factor! simulationRunData.ElectricMachinesData = new List<Tuple<PowertrainPosition, ElectricMotorData>>(); - simulationRunData.GearboxData = _gearboxData; + simulationRunData.GearshiftParameters = + DataAdapter.CreateGearshiftData( + simulationRunData.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); simulationRunData.AxleGearData = _axlegearData; + + simulationRunData.GearboxData = DataAdapter.CreateGearboxData(vehicle, simulationRunData, + ShiftPolygonCalculator.Create(shiftStrategyName, simulationRunData.GearshiftParameters)); simulationRunData.AngledriveData = _angledriveData; simulationRunData.Aux = DataAdapter.CreateAuxiliaryData( vehicle.Components.AuxiliaryInputData, @@ -276,9 +292,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa ? _municipalPtoTransmissionData : _ptoTransmissionData; - - - simulationRunData.GearshiftParameters = _gearshiftData; simulationRunData.EngineData.FuelMode = modeIdx.Value; @@ -317,6 +330,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa foreach (var loading in mission.Loadings) { var simulationRunData = CreateVectoRunData(vehicle, mission, loading); + simulationRunData.BatteryData.Batteries.ForEach(t => t.Item2.ChargeSustainingBattery = true); yield return simulationRunData; } } diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/ShiftPolygonCreator.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/ShiftPolygonCreator.cs index 5aa59950a5e62b47a0bc85965122292b2338008f..e5be5101bd5455b74f6a05cacd2f38a558f15bf8 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/ShiftPolygonCreator.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/ShiftPolygonCreator.cs @@ -14,6 +14,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl.Shiftstrategies return new AMTShiftStrategyOptimizedPolygonCalculator(); } + if (name == AMTShiftStrategy.Name) { + return new AMTShiftStrategyPolygonCalculator(); + } + if (name == PEVAMTShiftStrategy.Name) { if (shiftStrategyParameters == null) { throw new ArgumentException($"{nameof(shiftStrategyParameters)} required for {name}");