diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs index f338574db02eecadd5e13b1b28474edb361cf179..6e113b32dffec29551ea1aaca5640445f79e2d9d 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs @@ -74,7 +74,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.CompletedBus.Gener public ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed) { - return _gearboxDataAdapter.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed); + throw new NotFiniteNumberException(); + //return _gearboxDataAdapter.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed, gbx.Type, gbx.Gears.Count); } public RetarderData CreateRetarderData(IRetarderInputData retarderData) diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs index 6f3e5f288227e46c7b29480a7c9f9bb93663ae3d..7b9fd6084e70971726b937ae19d2d5813bdb6240 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs @@ -31,6 +31,7 @@ using System; using System.Collections.Generic; +using System.Data.Common; using System.Linq; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; @@ -102,6 +103,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry throw new NotImplementedException(); } + public virtual ShiftStrategyParameters CreateDummyGearshiftStrategy() + { + throw new NotImplementedException(); + } + public virtual AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragData, Mission mission, Segment segment) { @@ -132,8 +138,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry throw new NotImplementedException(); } - public virtual ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, - PerSecond engineIdlingSpeed) + public virtual ShiftStrategyParameters CreateGearshiftData(double axleRatio, + PerSecond engineIdlingSpeed, GearboxType gearboxType, int gearsCount) { throw new NotImplementedException(); } @@ -183,9 +189,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry #region Overrides of LorryBase - public override ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed) + public override ShiftStrategyParameters CreateGearshiftData(double axleRatio, PerSecond engineIdlingSpeed, GearboxType gearboxType, int gearsCount) { - return _gearboxDataAdapter.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed); + return _gearboxDataAdapter.CreateGearshiftData(axleRatio, engineIdlingSpeed, gearboxType, gearsCount); } #endregion @@ -259,11 +265,14 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry { private ParallelHybridStrategyParameterDataAdapter _hybridStrategyDataAdapter = new ParallelHybridStrategyParameterDataAdapter(); + + private GearboxDataAdapter _gearboxDataAdapter = new GearboxDataAdapter(null); #region Overrides of LorryBase - public override ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed) + public override ShiftStrategyParameters CreateGearshiftData(double axleRatio, PerSecond engineIdlingSpeed, GearboxType type, int gearsCount) { - throw new NotImplementedException(); + + return _gearboxDataAdapter.CreateGearshiftData(axleRatio, engineIdlingSpeed, type, gearsCount); } public override IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData, @@ -284,9 +293,21 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry { #region Overrides of LorryBase - public override ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed) + private readonly GearboxDataAdapter _gearboxDataAdapter = new GearboxDataAdapter(null); + private readonly ElectricStorageAdapter _electricStorageAdapter = new ElectricStorageAdapter(); + private readonly ElectricMachinesDataAdapter _electricMachineAdapter = new ElectricMachinesDataAdapter(); + public static readonly GearboxType[] SupportedGearboxTypes = + { GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial, GearboxType.APTN }; + public override GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData, VectoRunData runData, + IShiftPolygonCalculator shiftPolygonCalc) { - throw new NotImplementedException(); + return _gearboxDataAdapter.CreateGearboxData(inputData, runData, shiftPolygonCalc, new[] { GearboxType.AMT }); + } + + public override ShiftStrategyParameters CreateGearshiftData(double axleRatio, PerSecond engineIdlingSpeed, GearboxType gearboxType, int gearsCount) + { + System.Diagnostics.Debug.Assert(engineIdlingSpeed == null); + return _gearboxDataAdapter.CreateGearshiftData(axleRatio, null, gearboxType, gearsCount); } public override IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData, @@ -295,6 +316,22 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry throw new NotImplementedException(); } + public override IList<Tuple<PowertrainPosition, ElectricMotorData>> CreateElectricMachines(IElectricMachinesDeclarationInputData electricMachines, IDictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>> torqueLimits, + Volt averageVoltage, GearList gears = null) + { + return _electricMachineAdapter.CreateElectricMachines(electricMachines, torqueLimits, averageVoltage, gears); + } + + public override BatterySystemData CreateBatteryData(IElectricStorageSystemDeclarationInputData componentsElectricStorage) + { + return _electricStorageAdapter.CreateBatteryData(batteryInputData: componentsElectricStorage); + } + + public override SuperCapData CreateSuperCapData(IElectricStorageSystemDeclarationInputData componentsElectricStorage) + { + return _electricStorageAdapter.CreateSuperCapData(componentsElectricStorage); + } + #endregion } @@ -310,9 +347,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry return _gearBoxDataAdaper.CreateGearboxData(inputData, runData, shiftPolygonCalc, SupportedGearboxTypes); } - public override ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed) + public override ShiftStrategyParameters CreateGearshiftData(double axleRatio, PerSecond engineIdlingSpeed, GearboxType gearboxType, int gearsCount) { - return _gearBoxDataAdaper.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed); + return _gearBoxDataAdaper.CreateGearshiftData(axleRatio, engineIdlingSpeed, gearboxType, gearsCount); } #endregion @@ -328,7 +365,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry public class PEV_E2 : BatteryElectric { } public class PEV_E3 : BatteryElectric { } public class PEV_E4 : BatteryElectric { } - public class PEV_E_IEPC : BatteryElectric { } + + public class PEV_E_IEPC : BatteryElectric + { + + } public class Exempted : LorryBase { #region Overrides of LorryBase @@ -339,7 +380,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry return _vehicleDataAdapter.CreateExemptedVehicleData(vehicle); } - public override ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed) + public override ShiftStrategyParameters CreateGearshiftData(double axleRatio, PerSecond engineIdlingSpeed, GearboxType gearboxType, int gearsCount) { throw new NotImplementedException(); } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs index cd3fb54430d5064e53f671b8d8a4cb5cb68e2c96..443a9d364056bc2d87775adbb30d3937b0cbd3cc 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs @@ -49,7 +49,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter RetarderData CreateRetarderData(IRetarderInputData retarderData, PowertrainPosition position = PowertrainPosition.HybridPositionNotSet); - ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed); + ShiftStrategyParameters CreateGearshiftData(double axleRatio, PerSecond engineIdlingSpeed, GearboxType gearboxType, int gearsCount); //VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission, // KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational); @@ -68,6 +68,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter BatterySystemData CreateBatteryData(IElectricStorageSystemDeclarationInputData componentsElectricStorage); SuperCapData CreateSuperCapData(IElectricStorageSystemDeclarationInputData componentsElectricStorage); HybridStrategyParameters CreateHybridStrategy(BatterySystemData runDataBatteryData, SuperCapData runDataSuperCapData); + ShiftStrategyParameters CreateDummyGearshiftStrategy(); } public interface IPrimaryBusDeclarationDataAdapter : IDeclarationDataAdapter diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs index 532be24428ecbbe6d1f06b750d8096b21db99f55..c32e7efd250446ce40a58bd646f30f88433244aa 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs @@ -134,7 +134,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus public override ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed) { - return _gearboxDataAdapter.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed); + throw new NotImplementedException(); + //return _gearboxDataAdapter.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed, gbx.Type, gbx.Gears.Count); } #endregion @@ -194,7 +195,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus public override ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed) { - return _gearboxDataAdapter.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed); + throw new NotImplementedException(); + //return _gearboxDataAdapter.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed, gbx.Type, gbx.Gears.Count); } } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs index ec675f469be665ad9af6d39346ff3859308da4d8..d20a3eb3fcfb84f5c4ca0fbbae94f6b8834f3b6e 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs @@ -37,7 +37,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen private void CheckTorqueLimits(IElectricMachinesDeclarationInputData electricMachines, IDictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>> torqueLimits) { - + if (torqueLimits == null) { + return; + } foreach (var torqueLimit in torqueLimits.OrderBy(x => x.Key)) { //E-machines at position @@ -93,7 +95,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen ? TransmissionLossMapReader.CreateEmADCLossMap(1.0, 1.0, "EM ADC IHPC LossMap Eff") : adcLossMap != null ? TransmissionLossMapReader.CreateEmADCLossMap(adcLossMap, ratio, "EM ADC LossMap") - : TransmissionLossMapReader.CreateEmADCLossMap(efficiency, ratio, "EM ADC LossMap Eff"); + : TransmissionLossMapReader.CreateEmADCLossMap(1, ratio, "EM ADC LossMap Eff"); var retVal = new ElectricMotorData() { diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs index 5c4165c7b91db733bad93fdf3a14eb51c3e4aa03..522609f38fd5d385f5bc5b49199ffdac250107c3 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/GearBoxDataAdapter.cs @@ -21,8 +21,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData, VectoRunData runData, IShiftPolygonCalculator shiftPolygonCalculator, GearboxType[] supportedGearboxTypes); - ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, - PerSecond engineIdlingSpeed); + ShiftStrategyParameters CreateGearshiftData(double axleRatio, + PerSecond engineIdlingSpeed, GearboxType gearboxType, int gearsCount); } public abstract class GearboxDataAdapterBase : ComponentDataAdapterBase, IGearboxDataAdapter @@ -155,8 +155,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen protected abstract GearboxData DoCreateGearboxData(IVehicleDeclarationInputData inputData, VectoRunData runData, IShiftPolygonCalculator shiftPolygonCalculator, GearboxType[] supportedGearboxTypes); - public ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, - PerSecond engineIdlingSpeed) + public ShiftStrategyParameters CreateGearshiftData(double axleRatio, + PerSecond engineIdlingSpeed, GearboxType gearboxType, int gearsCount) { var retVal = new ShiftStrategyParameters { @@ -184,7 +184,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen DeclarationData.GearboxTCU.CurrentCardanPowerThresholdPropulsion, TargetSpeedDeviationFactor = DeclarationData.GearboxTCU.TargetSpeedDeviationFactor, EngineSpeedHighDriveOffFactor = DeclarationData.GearboxTCU.EngineSpeedHighDriveOffFactor, - RatingFactorCurrentGear = gbx.Type.AutomaticTransmission() + RatingFactorCurrentGear = gearboxType.AutomaticTransmission() ? DeclarationData.GearboxTCU.RatingFactorCurrentGearAT : DeclarationData.GearboxTCU.RatingFactorCurrentGear, AccelerationReserveLookup = AccelerationReserveLookupReader.ReadFromStream( @@ -213,8 +213,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen //-------------------- RatioEarlyUpshiftFC = DeclarationData.GearboxTCU.RatioEarlyUpshiftFC / axleRatio, RatioEarlyDownshiftFC = DeclarationData.GearboxTCU.RatioEarlyDownshiftFC / axleRatio, - AllowedGearRangeFC = gbx.Type.AutomaticTransmission() - ? (gbx.Gears.Count > DeclarationData.GearboxTCU.ATSkipGearsThreshold + AllowedGearRangeFC = gearboxType.AutomaticTransmission() + ? (gearsCount > DeclarationData.GearboxTCU.ATSkipGearsThreshold ? DeclarationData.GearboxTCU.AllowedGearRangeFCATSkipGear : DeclarationData.GearboxTCU.AllowedGearRangeFCAT) : DeclarationData.GearboxTCU.AllowedGearRangeFCAMT, @@ -225,7 +225,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen LoadStageThresoldsUp = DeclarationData.GearboxTCU.LoadStageThresholdsUp, LoadStageThresoldsDown = DeclarationData.GearboxTCU.LoadStageThresoldsDown, - ShiftSpeedsTCToLocked = DeclarationData.GearboxTCU.ShiftSpeedsTCToLocked + ShiftSpeedsTCToLocked = engineIdlingSpeed == null ? null : DeclarationData.GearboxTCU.ShiftSpeedsTCToLocked .Select(x => x.Select(y => y + engineIdlingSpeed.AsRPM).ToArray()).ToArray(), }; @@ -280,13 +280,15 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen } SetDeclarationData(retVal); - + var gearDifferenceRatio = gearbox.Type.AutomaticTransmission() && gearbox.Gears.Count > 2 ? gearbox.Gears[0].Ratio / gearbox.Gears[1].Ratio : 1.0; var gears = new Dictionary<uint, GearData>(); - var tcShiftPolygon = DeclarationData.TorqueConverter.ComputeShiftPolygon(engine.FullLoadCurves[0]); + var tcShiftPolygon = engine?.FullLoadCurves != null ? DeclarationData.TorqueConverter.ComputeShiftPolygon(engine.FullLoadCurves[0]) : null; + + var vehicleCategory = runData.VehicleData.VehicleCategory == VehicleCategory.GenericBusVehicle ? VehicleCategory.GenericBusVehicle : inputData.VehicleCategory; @@ -297,12 +299,12 @@ 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) + gearbox.Type, (int)i, engine?.FullLoadCurves[i + 1], gearbox.Gears, engine, axlegearRatio, + dynamicTyreRadius, runData.ElectricMachinesData?.FirstOrDefault().Item2) : DeclarationData.Gearbox.ComputeShiftPolygon( - gearbox.Type, (int)i, engine.FullLoadCurves[i + 1], + gearbox.Type, (int)i, engine?.FullLoadCurves[i + 1], gearsInput, engine, - axlegearRatio, dynamicTyreRadius, null); + axlegearRatio, dynamicTyreRadius, runData.ElectricMachinesData?.FirstOrDefault().Item2); var gearData = new GearData { diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/RetarderDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/RetarderDataAdapter.cs index 5a72aa8457937ca143729e0579cf844ebfe51a61..215ba949b56c75be8176d7f42fd101c0045c268f 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/RetarderDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/RetarderDataAdapter.cs @@ -24,7 +24,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen { try { - var retarder = new RetarderData { Type = retarderInputData.Type }; + var retarder = new RetarderData { Type = retarderInputData?.Type ?? RetarderType.None}; switch (retarder.Type) { diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs index 40f9d3592d831750ac3063030469c38a9cf07ac6..f7e0f7f883237ce13e1d08346aec505d0011e4ef 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs @@ -100,7 +100,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus public ShiftStrategyParameters CreateGearshiftData(GearboxData gbx, double axleRatio, PerSecond engineIdlingSpeed) { - return _gearboxDataAdapter.CreateGearshiftData(gbx, axleRatio, engineIdlingSpeed); + return _gearboxDataAdapter.CreateGearshiftData(axleRatio, engineIdlingSpeed, gbx.Type, gbx.Gears.Count); } public IEnumerable<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxInputData, diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs index 6628f805b8ec44da11eff96b77959caf6cda923c..d51c2cb060b5922a15cdeea186e77532f5e6f4b2 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs @@ -80,22 +80,24 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { protected abstract void Initialize(); - protected abstract VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, + protected abstract VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, + int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable); protected virtual void InitializeReport() { + return; // TODO <- remove VectoRunData powertrainConfig; List<List<FuelData.Entry>> fuels; var vehicle = InputDataProvider.JobInputData.Vehicle; if (vehicle.ExemptedVehicle) { - powertrainConfig = CreateVectoRunData(vehicle, 0, null, new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>()); + powertrainConfig = CreateVectoRunData(vehicle, null, new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>(), 0); fuels = new List<List<FuelData.Entry>>(); } else { powertrainConfig = _segment.Missions.Select( mission => CreateVectoRunData( - vehicle, 0, mission, mission.Loadings.First())) + vehicle, mission, mission.Loadings.First(), 0)) .FirstOrDefault(x => x != null); fuels = vehicle.Components.EngineInputData.EngineModes.Select(x => x.Fuels.Select(f => DeclarationData.FuelData.Lookup(f.FuelType, vehicle.TankSystem)).ToList()) .ToList(); diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs index 0df11ea4fdbe064382a5c9514c049c0102160050..c59bad0a7aaeec25737240b5e8982b2650148543 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs @@ -13,6 +13,7 @@ using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Models.SimulationComponent.Impl; +using TUGraz.VectoCore.Models.SimulationComponent.Impl.Shiftstrategies; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.Utils; @@ -45,6 +46,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa InputDataProvider = dataProvider; Report = report; } + /// <summary> /// Sets <see cref="VectoRunData.Loading"/> /// ,<see cref="VectoRunData.JobName"/> @@ -60,19 +62,21 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa /// ,<see cref="VectoRunData.InputDataHash"/> /// </summary> /// <param name="vehicle"></param> - /// <param name="modeIdx"></param> /// <param name="mission"></param> /// <param name="loading"></param> - /// <param name="engineModes"></param> /// <param name="segment"></param> + /// <param name="engineModes"></param> + /// <param name="modeIdx"></param> /// <returns></returns> - protected VectoRunData CreateCommonRunData(IVehicleDeclarationInputData vehicle, int modeIdx, Mission mission, + protected VectoRunData CreateCommonRunData(IVehicleDeclarationInputData vehicle, + Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, - IList<IEngineModeDeclarationInputData> engineModes, - Segment segment) + Segment segment, + IList<IEngineModeDeclarationInputData> engineModes = null, int modeIdx = 0) { var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); + var simulationRunData = new VectoRunData { Loading = loading.Key, @@ -84,7 +88,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()), SimulationType = SimulationType.DistanceCycle, InputData = InputDataProvider, - ModFileSuffix = (engineModes.Count > 1 ? $"_EngineMode{modeIdx}_" : "") + loading.Key, + ModFileSuffix = (engineModes?.Count > 1 ? $"_EngineMode{modeIdx}_" : "") + loading.Key, VehicleDesignSpeed = segment.DesignSpeed, InputDataHash = InputDataProvider.XMLHash, }; @@ -115,7 +119,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa _axlegearData = DataAdapter.CreateAxleGearData(InputDataProvider.JobInputData.Vehicle.Components.AxleGearInputData); } _angledriveData = DataAdapter.CreateAngledriveData(InputDataProvider.JobInputData.Vehicle.Components.AngledriveInputData); - SetGearboxData(vehicle); + SetGearboxAndGearshiftData(vehicle, _axlegearData, _angledriveData); _retarderData = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData); @@ -126,28 +130,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa } - private void SetGearboxData(IVehicleDeclarationInputData vehicle) - { - if (vehicle.Components.GearboxInputData == null) { - return; - } - var tmpRunData = new VectoRunData() { - GearboxData = new GearboxData() { - Type = vehicle.Components.GearboxInputData.Type, - } - }; - var tempVehicle = DataAdapter.CreateVehicleData(vehicle, _segment, _segment.Missions.First(), - _segment.Missions.First().Loadings.First(), _allowVocational); - var tmpStrategy = PowertrainBuilder.GetShiftStrategy(new SimplePowertrainContainer(tmpRunData)); - var tmpEngine = DataAdapter.CreateEngineData( - vehicle, vehicle.Components.EngineInputData.EngineModes[0], _segment.Missions.First()); - _gearboxData = DataAdapter.CreateGearboxData( - vehicle, new VectoRunData() { EngineData = tmpEngine, AxleGearData = _axlegearData, VehicleData = tempVehicle }, - tmpStrategy); - _gearshiftData = DataAdapter.CreateGearshiftData( - _gearboxData, _axlegearData.AxleGear.Ratio * (_angledriveData?.Angledrive.Ratio ?? 1.0), - tmpEngine.IdleSpeed); - } + protected abstract void SetGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, AxleGearData axleGearData, AngledriveData angledriveData); #region Implementation of IVectoRunDataFactory @@ -201,6 +184,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa public Conventional(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + protected override void Initialize() + { + base.Initialize(); + } + #region Overrides of LorryBase protected override IEnumerable<VectoRunData> GetNextRun() { @@ -217,26 +205,48 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa } foreach (var loading in mission.Loadings) { - var simulationRunData = CreateVectoRunData(vehicle, modeIdx, mission, loading); + var simulationRunData = CreateVectoRunData(vehicle, mission, loading, modeIdx); yield return simulationRunData; } } } } - + protected override void SetGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, AxleGearData axleGearData, AngledriveData angledriveData) + { + throw new NotImplementedException(); + //var tmpRunData = new VectoRunData() + //{ + // GearboxData = new GearboxData() + // { + // Type = vehicle.Components.GearboxInputData.Type, + // } + //}; + //var tempVehicle = DataAdapter.CreateVehicleData(vehicle, _segment, _segment.Missions.First(), + // _segment.Missions.First().Loadings.First(), _allowVocational); + //var tmpStrategy = PowertrainBuilder.GetShiftStrategy(new SimplePowertrainContainer(tmpRunData)); + //var tmpEngine = DataAdapter.CreateEngineData( + // vehicle, vehicle.Components.EngineInputData.EngineModes[0], _segment.Missions.First()); + //_gearboxData = DataAdapter.CreateGearboxData( + // vehicle, new VectoRunData() { EngineData = tmpEngine, AxleGearData = _axlegearData, VehicleData = tempVehicle }, + // tmpStrategy); + //_gearshiftData = DataAdapter.CreateGearshiftData( + // _gearboxData, _axlegearData.AxleGear.Ratio * (_angledriveData?.Angledrive.Ratio ?? 1.0), + // tmpEngine.IdleSpeed, _gearboxData.Type, _gearboxData.Gears.Count); + } - protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, + protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, + int? modeIdx, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable) { var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData; var engineModes = engine.EngineModes; - var engineMode = engineModes[modeIdx]; + var engineMode = engineModes[modeIdx.Value]; - var simulationRunData = CreateCommonRunData(vehicle, modeIdx, mission, loading, engineModes, _segment); + var simulationRunData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value); @@ -271,7 +281,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa simulationRunData.GearshiftParameters = _gearshiftData; - simulationRunData.EngineData.FuelMode = modeIdx; + simulationRunData.EngineData.FuelMode = modeIdx.Value; simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass; simulationRunData.VehicleData.InputData = vehicle; return simulationRunData; @@ -295,16 +305,120 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa protected override IEnumerable<VectoRunData> GetNextRun() { - throw new NotImplementedException(); + var vehicle = InputDataProvider.JobInputData.Vehicle; + foreach (var mission in _segment.Missions) + { + //if (mission.MissionType.IsEMS() && + // engine.RatedPowerDeclared.IsSmaller(DeclarationData.MinEnginePowerForEMS)) + //{ + // continue; + //} + + foreach (var loading in mission.Loadings) + { + var simulationRunData = CreateVectoRunData(vehicle, mission, loading); + yield return simulationRunData; + } + } } - protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, + protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, + int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable) { - throw new NotImplementedException(); + System.Diagnostics.Debug.Assert(ovcMode == VectoRunData.OvcHevMode.NotApplicable); + _segment = GetSegment(vehicle); + var result = CreateCommonRunData(vehicle, mission, loading, _segment); + result.AirdragData = + DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment); + result.DriverData = DataAdapter.CreateDriverData(); + result.BatteryData = DataAdapter.CreateBatteryData(componentsElectricStorage: vehicle.Components.ElectricStorage); + result.SuperCapData = DataAdapter.CreateSuperCapData(componentsElectricStorage: vehicle.Components.ElectricStorage); + result.ElectricMachinesData = DataAdapter.CreateElectricMachines(vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits, result.BatteryData.CalculateAverageVoltage(), null); + result.AngledriveData = DataAdapter.CreateAngledriveData(vehicle.Components.AngledriveInputData); + result.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData); + result.VehicleData = + DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational); + result.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData, + result.ElectricMachinesData.First(e => e.Item1 != PowertrainPosition.GEN).Item1); + + if (vehicle.ArchitectureID == ArchitectureID.E2) { + + result.GearshiftParameters = + DataAdapter.CreateGearshiftData( + result.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); + result.GearboxData = DataAdapter.CreateGearboxData(vehicle, result, + ShiftPolygonCalculator.Create(shiftStrategyName, result.GearshiftParameters)); + + + } + + + + + + + + + + + + + + + return result; + } + + protected override void Initialize() + { + _segment = GetSegment(InputDataProvider.JobInputData.Vehicle); + } + #region Overrides of LorryBase + + protected override void SetGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, AxleGearData axleGearData, AngledriveData angledriveData) + { + + //if (vehicle.ArchitectureID != ArchitectureID.E2) { + // DataAdapter.CreateDummyGearshiftStrategy(); + + + + // return; + //} + //var tmpRunData = new VectoRunData() + //{ + // GearboxData = new GearboxData() + // { + // Type = vehicle.Components.GearboxInputData.Type, + // } + //}; + //var tempVehicle = DataAdapter.CreateVehicleData(vehicle, _segment, _segment.Missions.First(), + // _segment.Missions.First().Loadings.First(), _allowVocational); + //var tmpStrategy = PowertrainBuilder.GetShiftStrategy(new SimplePowertrainContainer(tmpRunData)); + ////var electricMachineData = DataAdapter.CreateElectricMachines(vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits, ) + //_gearboxData = DataAdapter.CreateGearboxData( + // vehicle, new VectoRunData() { ElectricMachinesData = null, AxleGearData = axleGearData, VehicleData = tempVehicle }, + // tmpStrategy); + //_gearshiftData = DataAdapter.CreateGearshiftData( + // _gearboxData, axleGearData.AxleGear.Ratio * (angledriveData?.Angledrive.Ratio ?? 1.0), + // null, _gearboxData.Type, _gearboxData.Gears.Count); + } + + + #endregion + #endregion } @@ -344,15 +458,26 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa throw new NotImplementedException(); } - protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, + 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 + + #region Overrides of LorryBase + + protected override void SetGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, AxleGearData axleGearData, + AngledriveData angledriveData) + { + throw new NotImplementedException(); + } + + #endregion } } 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 3c892d0ccc6e950169d53e1959b48968fd883c19..81536fba2bea17d6b5a29c6573123b414c4830c1 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs @@ -6,6 +6,7 @@ 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.SimulationComponent.Data; using TUGraz.VectoCore.OutputData; namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDataFactory @@ -43,20 +44,21 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa foreach (var loading in mission.Loadings) { if (vehicle.OvcHev) { - yield return CreateVectoRunData(vehicle, modeIdx, mission, loading, VectoRunData.OvcHevMode.ChargeDepleting); - yield return CreateVectoRunData(vehicle, modeIdx, mission, loading, VectoRunData.OvcHevMode.ChargeSustaining); + 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, modeIdx, mission, loading); + yield return CreateVectoRunData(vehicle, mission, loading, modeIdx); } } } } } - protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, + 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(); @@ -72,16 +74,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa #region Overrides of Hybrid - protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, + protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, + int? modeIdx, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable) { var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData; var engineModes = engine.EngineModes; - var engineMode = engineModes[modeIdx]; - var runData = CreateCommonRunData(vehicle, modeIdx, mission, loading, engineModes, _segment); + var engineMode = engineModes[modeIdx.Value]; + var runData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value); runData.VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational); runData.EngineData = DataAdapter.CreateEngineData(vehicle, engineMode, mission); runData.BatteryData = DataAdapter.CreateBatteryData(vehicle.Components.ElectricStorage); @@ -98,11 +101,30 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa #endregion + #region Overrides of LorryBase + + protected override void SetGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, AxleGearData axleGearData, + AngledriveData angledriveData) + { + throw new NotImplementedException(); + } + + #endregion } public class ParallelHybrid : Hybrid { public ParallelHybrid(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + + #region Overrides of LorryBase + + protected override void SetGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, AxleGearData axleGearData, + AngledriveData angledriveData) + { + throw new NotImplementedException(); + } + + #endregion } public class HEV_S2 : SerialHybrid @@ -131,31 +153,31 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } } - public class HEV_P1 : Hybrid + public class HEV_P1 : ParallelHybrid { public HEV_P1(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } } - public class HEV_P2 : Hybrid + public class HEV_P2 : ParallelHybrid { public HEV_P2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } } - public class HEV_P2_5 : Hybrid + public class HEV_P2_5 : ParallelHybrid { public HEV_P2_5(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } } - public class HEV_P3 : Hybrid + public class HEV_P3 : ParallelHybrid { public HEV_P3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } } - public class HEV_P4 : Hybrid + public class HEV_P4 : ParallelHybrid { public HEV_P4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, ILorryDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs index 40e0df5c4f4b833919c960f47e5f7247e75c557d..77ea61f9d3a8dd98069721997f76ca0508345104 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs @@ -124,8 +124,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa CombustionEngineData tmpEngine, VehicleData tempVehicle); #endregion - protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, + protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, + int? modeIdx, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable) { if (InputDataProvider.JobInputData.Vehicle.ExemptedVehicle) @@ -146,7 +147,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa var engine = vehicle.Components.EngineInputData; var engineModes = engine.EngineModes; - var engineMode = engineModes[modeIdx]; + var engineMode = engineModes[modeIdx.Value]; var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); @@ -181,7 +182,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa GearshiftParameters = _gearshiftData, JobType = vehicle.VehicleType, }; - simulationRunData.EngineData.FuelMode = modeIdx; + simulationRunData.EngineData.FuelMode = modeIdx.Value; simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass; simulationRunData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData( mission, InputDataProvider.JobInputData.Vehicle, simulationRunData); @@ -208,7 +209,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa { foreach (var loading in mission.Loadings) { - var simulationRunData = CreateVectoRunData(vehicle, modeIdx, mission, loading); + var simulationRunData = CreateVectoRunData(vehicle, mission, loading, modeIdx); if (simulationRunData == null) { continue; @@ -262,7 +263,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa { foreach (var loading in mission.Loadings) { - var simulationRunData = CreateVectoRunData(vehicle, modeIdx, mission, loading); + var simulationRunData = CreateVectoRunData(vehicle, mission, loading, modeIdx); if (simulationRunData == null) { continue; diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryLorries.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryLorries.cs index 91075a97064ee153a332d5e91ee3d2f65b6a2cf0..7ea2783da91adaa0c08c254468acdb3feec13dac 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryLorries.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryLorries.cs @@ -112,7 +112,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl DataAdapter.CreatePTOTransmissionData(vehicle.Components.PTOTransmissionInputData); GearshiftData = DataAdapter.CreateGearshiftData( - GearboxData, AxlegearData.AxleGear.Ratio * (AngledriveData?.Angledrive.Ratio ?? 1.0), EngineData.IdleSpeed); + AxlegearData.AxleGear.Ratio * (AngledriveData?.Angledrive.Ratio ?? 1.0), EngineData.IdleSpeed, GearboxData.Type, GearboxData.Gears.Count); AuxVTP = CreateVTPAuxData(vehicle); }