From 0d4b31639e3db0068f802fc88028b14835c15fdf Mon Sep 17 00:00:00 2001 From: Harald Martini <harald.martini@student.tugraz.at> Date: Mon, 5 Sep 2022 18:10:50 +0200 Subject: [PATCH] moved HeavyLorryRunDataFactories to same file again --- .../HeavyLorryRunDataFactory/Conventional.cs | 171 --------------- ...DeclarationModeHeavyLorryRunDataFactory.cs | 194 +++++++++++++++++- .../HeavyLorryRunDataFactory/HEV_S2.cs | 15 -- .../HeavyLorryRunDataFactory/HEV_S3.cs | 15 -- 4 files changed, 183 insertions(+), 212 deletions(-) delete mode 100644 VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/Conventional.cs delete mode 100644 VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/HEV_S2.cs delete mode 100644 VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/HEV_S3.cs diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/Conventional.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/Conventional.cs deleted file mode 100644 index 10d6a2bb4a..0000000000 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/Conventional.cs +++ /dev/null @@ -1,171 +0,0 @@ -using System; -using System.Collections.Generic; -using TUGraz.VectoCommon.Exceptions; -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCommon.Models; -using TUGraz.VectoCommon.Utils; -using TUGraz.VectoCore.InputData.Reader.ComponentData; -using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; -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 -{ - public abstract partial class DeclarationModeHeavyLorryRunDataFactory - { - - public sealed class Conventional : LorryBase - { - public Conventional(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - - #region Overrides of LorryBase - - protected override IEnumerable<VectoRunData> GetNextRun() - { - var vehicle = InputDataProvider.JobInputData.Vehicle; - - var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData; - var engineModes = engine.EngineModes; - - for (var modeIdx = 0; modeIdx < engineModes.Count; modeIdx++) { - 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, modeIdx, mission, loading, true); - yield return simulationRunData; - } - } - } - } - - protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, Mission mission, - KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational) - { - var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData; - var engineModes = engine.EngineModes; - var engineMode = engineModes[modeIdx]; - - var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, - _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); - - var simulationRunData = new VectoRunData { - Loading = loading.Key, - VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, allowVocational), - VehicleDesignSpeed = _segment.DesignSpeed, - AirdragData = DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment), - EngineData = - DataAdapter.CreateEngineData(InputDataProvider.JobInputData.Vehicle, engineMode, - mission), // _engineData.Copy(), // a copy is necessary because every run has a different correction factor! - ElectricMachinesData = new List<Tuple<PowertrainPosition, ElectricMotorData>>(), - GearboxData = _gearboxData, - AxleGearData = _axlegearData, - AngledriveData = _angledriveData, - Aux = DataAdapter.CreateAuxiliaryData( - vehicle.Components.AuxiliaryInputData, - vehicle.Components.BusAuxiliaries, mission.MissionType, - _segment.VehicleClass, vehicle.Length, - vehicle.Components.AxleWheels.NumSteeredAxles), - Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()), - Retarder = _retarderData, - DriverData = _driverdata, - ExecutionMode = ExecutionMode.Declaration, - JobName = InputDataProvider.JobInputData.JobName, - ModFileSuffix = (engineModes.Count > 1 ? $"_EngineMode{modeIdx}_" : "") + loading.Key, - Report = Report, - Mission = mission, - PTO = mission.MissionType == MissionType.MunicipalUtility - ? _municipalPtoTransmissionData - : _ptoTransmissionData, - InputDataHash = InputDataProvider.XMLHash, - SimulationType = SimulationType.DistanceCycle, - GearshiftParameters = _gearshiftData, - InputData = InputDataProvider - }; - simulationRunData.EngineData.FuelMode = modeIdx; - simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass; - simulationRunData.VehicleData.InputData = vehicle; - return simulationRunData; - } - #endregion - } - - public class HEV_S4 : LorryBase - { - public HEV_S4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - - public class HEV_S_IEPC : LorryBase - { - public HEV_S_IEPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - - public class HEV_P1 : LorryBase - { - public HEV_P1(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - - public class HEV_P2 : LorryBase - { - public HEV_P2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - - public class HEV_P2_5 : LorryBase - { - public HEV_P2_5(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - - public class HEV_P3 : LorryBase - { - public HEV_P3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - - public class HEV_P4 : LorryBase - { - public HEV_P4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - - public class PEV_E2 : LorryBase - { - public PEV_E2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - - public class PEV_E3 : LorryBase - { - public PEV_E3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - - public class PEV_E4 : LorryBase - { - public PEV_E4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - - public class PEV_E_IEPC : LorryBase - { - public PEV_E_IEPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - - public class Exempted : LorryBase - { - public Exempted(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - } -} \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs index 6064bab6e3..306d541115 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory.cs @@ -17,8 +17,180 @@ using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDataFactory { + public abstract partial class DeclarationModeHeavyLorryRunDataFactory + { + + public sealed class Conventional : LorryBase + { + public Conventional(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + + #region Overrides of LorryBase + + protected override IEnumerable<VectoRunData> GetNextRun() + { + var vehicle = InputDataProvider.JobInputData.Vehicle; + + var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData; + var engineModes = engine.EngineModes; + + for (var modeIdx = 0; modeIdx < engineModes.Count; modeIdx++) { + 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, modeIdx, mission, loading, true); + yield return simulationRunData; + } + } + } + } + + protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, Mission mission, + KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational) + { + var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData; + var engineModes = engine.EngineModes; + var engineMode = engineModes[modeIdx]; + + var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType, + _ => DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false)); + + var simulationRunData = new VectoRunData { + Loading = loading.Key, + VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, allowVocational), + VehicleDesignSpeed = _segment.DesignSpeed, + AirdragData = DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment), + EngineData = + DataAdapter.CreateEngineData(InputDataProvider.JobInputData.Vehicle, engineMode, + mission), // _engineData.Copy(), // a copy is necessary because every run has a different correction factor! + ElectricMachinesData = new List<Tuple<PowertrainPosition, ElectricMotorData>>(), + GearboxData = _gearboxData, + AxleGearData = _axlegearData, + AngledriveData = _angledriveData, + Aux = DataAdapter.CreateAuxiliaryData( + vehicle.Components.AuxiliaryInputData, + vehicle.Components.BusAuxiliaries, mission.MissionType, + _segment.VehicleClass, vehicle.Length, + vehicle.Components.AxleWheels.NumSteeredAxles), + Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()), + Retarder = _retarderData, + DriverData = _driverdata, + ExecutionMode = ExecutionMode.Declaration, + JobName = InputDataProvider.JobInputData.JobName, + ModFileSuffix = (engineModes.Count > 1 ? $"_EngineMode{modeIdx}_" : "") + loading.Key, + Report = Report, + Mission = mission, + PTO = mission.MissionType == MissionType.MunicipalUtility + ? _municipalPtoTransmissionData + : _ptoTransmissionData, + InputDataHash = InputDataProvider.XMLHash, + SimulationType = SimulationType.DistanceCycle, + GearshiftParameters = _gearshiftData, + InputData = InputDataProvider + }; + simulationRunData.EngineData.FuelMode = modeIdx; + simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass; + simulationRunData.VehicleData.InputData = vehicle; + return simulationRunData; + } + #endregion + } + + public class HEV_S4 : LorryBase + { + public HEV_S4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + + public class HEV_S_IEPC : LorryBase + { + public HEV_S_IEPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + + public class HEV_P1 : LorryBase + { + public HEV_P1(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + + public class HEV_P2 : LorryBase + { + public HEV_P2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + + public class HEV_P2_5 : LorryBase + { + public HEV_P2_5(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + + public class HEV_P3 : LorryBase + { + public HEV_P3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + + public class HEV_P4 : LorryBase + { + public HEV_P4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + + public class PEV_E2 : LorryBase + { + public PEV_E2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + + public class PEV_E3 : LorryBase + { + public PEV_E3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + + public class PEV_E4 : LorryBase + { + public PEV_E4(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + + public class PEV_E_IEPC : LorryBase + { + public PEV_E_IEPC(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + + public class Exempted : LorryBase + { + public Exempted(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + } + public abstract partial class DeclarationModeHeavyLorryRunDataFactory + { + public class HEV_S3 : LorryBase + { + public HEV_S3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + } + public abstract partial class DeclarationModeHeavyLorryRunDataFactory + { + public class HEV_S2 : LorryBase + { + public HEV_S2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, + IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } + } + + } /// <summary> /// This class is just used to improve the readability @@ -53,8 +225,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa } - - #region Implementation of IVectoRunDataFactory public IEnumerable<VectoRunData> NextRun() @@ -141,7 +311,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa _gearshiftData = DataAdapter.CreateGearshiftData( _gearboxData, _axlegearData.AxleGear.Ratio * (_angledriveData?.Angledrive.Ratio ?? 1.0), tmpEngine.IdleSpeed); - } @@ -157,7 +326,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa CycleType.PTO, "PTO", false) }; } - protected virtual VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational) + + protected virtual VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, + Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational) { throw new NotImplementedException(); } @@ -167,20 +338,21 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa 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?>>(), _allowVocational); + if (vehicle.ExemptedVehicle) { + powertrainConfig = CreateVectoRunData(vehicle, 0, null, + new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>(), _allowVocational); fuels = new List<List<FuelData.Entry>>(); - } - else - { + } else { powertrainConfig = _segment.Missions.Select( mission => CreateVectoRunData( vehicle, 0, mission, mission.Loadings.First(), _allowVocational)) .FirstOrDefault(x => x != null); - fuels = vehicle.Components.EngineInputData.EngineModes.Select(x => x.Fuels.Select(f => DeclarationData.FuelData.Lookup(f.FuelType, vehicle.TankSystem)).ToList()) + fuels = vehicle.Components.EngineInputData.EngineModes.Select(x => + x.Fuels.Select(f => DeclarationData.FuelData.Lookup(f.FuelType, vehicle.TankSystem)) + .ToList()) .ToList(); } + Report.InitializeReport(powertrainConfig, fuels); } diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/HEV_S2.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/HEV_S2.cs deleted file mode 100644 index 7745e08dab..0000000000 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/HEV_S2.cs +++ /dev/null @@ -1,15 +0,0 @@ -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; -using TUGraz.VectoCore.OutputData; - -namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDataFactory -{ - public abstract partial class DeclarationModeHeavyLorryRunDataFactory - { - public class HEV_S2 : LorryBase - { - public HEV_S2(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - } -} \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/HEV_S3.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/HEV_S3.cs deleted file mode 100644 index 01e76adefa..0000000000 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/HEV_S3.cs +++ /dev/null @@ -1,15 +0,0 @@ -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; -using TUGraz.VectoCore.OutputData; - -namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDataFactory -{ - public abstract partial class DeclarationModeHeavyLorryRunDataFactory - { - public class HEV_S3 : LorryBase - { - public HEV_S3(IDeclarationInputDataProvider dataProvider, IDeclarationReport report, - IDeclarationDataAdapter declarationDataAdapter) : base(dataProvider, report, declarationDataAdapter) { } - } - } -} \ No newline at end of file -- GitLab