diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index 1c27f14908a4ebb072c2273c556e5c8df3ce153f..e00723cf83d4b047f027181bb440e6df3c67693a 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -59,36 +59,36 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// <summary> /// Provides Methods to build a simulator with a powertrain step by step. /// </summary> - public class PowertrainBuilder + public static class PowertrainBuilder { - private readonly IModalDataContainer _modData; - private readonly WriteSumData _sumWriter; + //private readonly IModalDataContainer _modData; + //private readonly WriteSumData _sumWriter; - public PowertrainBuilder(IModalDataContainer modData, WriteSumData sumWriter = null) - { - _modData = modData ?? throw new VectoException("Modal Data Container can't be null"); - _sumWriter = sumWriter; - } + //public PowertrainBuilder(IModalDataContainer modData, WriteSumData sumWriter = null) + //{ + // _modData = modData ?? throw new VectoException("Modal Data Container can't be null"); + // _sumWriter = sumWriter; + //} - public IVehicleContainer Build(VectoRunData data) + public static IVehicleContainer Build(VectoRunData data, IModalDataContainer modData, WriteSumData sumWriter = null) { switch (data.Cycle.CycleType) { case CycleType.DistanceBased: switch (data.JobType) { - case VectoSimulationJobType.ConventionalVehicle: return BuildFullPowertrainConventional(data); - case VectoSimulationJobType.ParallelHybridVehicle: return BuildFullPowertrainParallelHybrid(data); - case VectoSimulationJobType.SerialHybridVehicle: return BuildFullPowertrainSerialHybrid(data); - case VectoSimulationJobType.BatteryElectricVehicle: return BuildFulPowertrainBatteryElectric(data); - case VectoSimulationJobType.EngineOnlySimulation: return BuildEngineOnly(data); - case VectoSimulationJobType.IEPC_E: return BuildFullPowertrainIEPCE(data); - case VectoSimulationJobType.IEPC_S: return BuildFullPowertrainIEPCSerial(data); + case VectoSimulationJobType.ConventionalVehicle: return BuildFullPowertrainConventional(data, modData, sumWriter); + case VectoSimulationJobType.ParallelHybridVehicle: return BuildFullPowertrainParallelHybrid(data, modData, sumWriter); + case VectoSimulationJobType.SerialHybridVehicle: return BuildFullPowertrainSerialHybrid(data, modData, sumWriter); + case VectoSimulationJobType.BatteryElectricVehicle: return BuildFulPowertrainBatteryElectric(data, modData, sumWriter); + case VectoSimulationJobType.EngineOnlySimulation: return BuildEngineOnly(data, modData, sumWriter); + case VectoSimulationJobType.IEPC_E: return BuildFullPowertrainIEPCE(data, modData, sumWriter); + case VectoSimulationJobType.IEPC_S: return BuildFullPowertrainIEPCSerial(data, modData, sumWriter); default: throw new ArgumentOutOfRangeException($"Powertrain Builder cannot build Powertrain for JobType: {data.JobType}"); } - case CycleType.EngineOnly: return BuildEngineOnly(data); - case CycleType.PWheel: return BuildPWheel(data); - case CycleType.VTP: return BuildVTP(data); - case CycleType.MeasuredSpeed: return BuildMeasuredSpeed(data); - case CycleType.MeasuredSpeedGear: return BuildMeasuredSpeedGear(data); + case CycleType.EngineOnly: return BuildEngineOnly(data, modData, sumWriter); + case CycleType.PWheel: return BuildPWheel(data, modData, sumWriter); + case CycleType.VTP: return BuildVTP(data, modData, sumWriter); + case CycleType.MeasuredSpeed: return BuildMeasuredSpeed(data, modData, sumWriter); + case CycleType.MeasuredSpeedGear: return BuildMeasuredSpeedGear(data, modData, sumWriter); default: throw new VectoException("Powertrain Builder cannot build Powertrain for CycleType: {0}", data.Cycle.CycleType); } } @@ -101,7 +101,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””(Aux) /// </code> /// </summary> - private IVehicleContainer BuildEngineOnly(VectoRunData data) + private static IVehicleContainer BuildEngineOnly(VectoRunData data, IModalDataContainer _modData, WriteSumData _sumWriter) { if (data.Cycle.CycleType != CycleType.EngineOnly) { throw new VectoException("CycleType must be EngineOnly."); @@ -139,7 +139,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””(Aux) /// </code> /// </summary> - private IVehicleContainer BuildPWheel(VectoRunData data) + private static IVehicleContainer BuildPWheel(VectoRunData data, IModalDataContainer _modData, WriteSumData _sumWriter) { if (data.Cycle.CycleType != CycleType.PWheel) { throw new VectoException("CycleType must be PWheel."); @@ -175,7 +175,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””(VTPTruckAuxiliaries or VTPBusAuxiliaries) /// </code> /// </summary> - private IVehicleContainer BuildVTP(VectoRunData data) + private static IVehicleContainer BuildVTP(VectoRunData data, IModalDataContainer _modData, WriteSumData _sumWriter) { if (data.Cycle.CycleType != CycleType.VTP) { throw new VectoException("CycleType must be VTP."); @@ -204,7 +204,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl return container; } - private void AddVTPBusAuxiliaries(VectoRunData data, VehicleContainer container, VTPCombustionEngine engine) + private static void AddVTPBusAuxiliaries(VectoRunData data, VehicleContainer container, VTPCombustionEngine engine) { var aux = new EngineAuxiliary(container); foreach (var auxData in data.Aux) { @@ -232,7 +232,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl engine.Connect(aux.Port()); } - private void AddVTPTruckAuxiliaries(VectoRunData data, VehicleContainer container, VTPCombustionEngine engine) + private static void AddVTPTruckAuxiliaries(VectoRunData data, VehicleContainer container, VTPCombustionEngine engine) { var aux = CreateSpeedDependentAuxiliaries(data, container); var engineFan = new EngineFanAuxiliary(data.FanDataVTP.FanCoefficients.Take(3).ToArray(), data.FanDataVTP.FanDiameter); @@ -271,7 +271,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””(Aux) /// </code> /// </summary> - private IVehicleContainer BuildMeasuredSpeed(VectoRunData data) + private static IVehicleContainer BuildMeasuredSpeed(VectoRunData data, IModalDataContainer _modData, WriteSumData _sumWriter) { if (data.Cycle.CycleType != CycleType.MeasuredSpeed) { throw new VectoException("CycleType must be MeasuredSpeed."); @@ -311,7 +311,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””(Aux) /// </code> /// </summary> - private IVehicleContainer BuildMeasuredSpeedGear(VectoRunData data) + private static IVehicleContainer BuildMeasuredSpeedGear(VectoRunData data, IModalDataContainer _modData, WriteSumData _sumWriter) { if (data.Cycle.CycleType != CycleType.MeasuredSpeedGear) { throw new VectoException("CycleType must be MeasuredSpeed with Gear."); @@ -353,7 +353,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””(Aux) /// </code> /// </summary> - private IVehicleContainer BuildFullPowertrainConventional(VectoRunData data) + private static IVehicleContainer BuildFullPowertrainConventional(VectoRunData data, IModalDataContainer _modData, WriteSumData _sumWriter) { if (data.Cycle.CycleType != CycleType.DistanceBased) { throw new VectoException("CycleType must be DistanceBased"); @@ -403,7 +403,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””(Aux) /// </code> /// </summary> - private IVehicleContainer BuildFullPowertrainParallelHybrid(VectoRunData data) + private static IVehicleContainer BuildFullPowertrainParallelHybrid(VectoRunData data, IModalDataContainer _modData, WriteSumData _sumWriter) { if (data.Cycle.CycleType != CycleType.DistanceBased) { throw new VectoException("CycleType must be DistanceBased"); @@ -527,7 +527,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””Engine E2 /// </code> /// </summary> - private IVehicleContainer BuildFullPowertrainSerialHybrid(VectoRunData data) + private static IVehicleContainer BuildFullPowertrainSerialHybrid(VectoRunData data, IModalDataContainer _modData, WriteSumData _sumWriter) { if (data.Cycle.CycleType != CycleType.DistanceBased) { throw new VectoException("CycleType must be DistanceBased"); @@ -663,7 +663,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””Engine E2 /// </code> /// </summary> - private IVehicleContainer BuildFulPowertrainBatteryElectric(VectoRunData data) + private static IVehicleContainer BuildFulPowertrainBatteryElectric(VectoRunData data, IModalDataContainer _modData, WriteSumData _sumWriter) { if (data.Cycle.CycleType != CycleType.DistanceBased) { throw new VectoException("CycleType must be DistanceBased"); @@ -756,7 +756,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl return container; } - private IPowerTrainComponent GetPEVPTO(VehicleContainer container, VectoRunData data) + private static IPowerTrainComponent GetPEVPTO(VehicleContainer container, VectoRunData data) { if (data.PTO == null) { return null; @@ -802,7 +802,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl private static Retarder GetRetarder(RetarderType type, RetarderData data, IVehicleContainer container) => type == data.Type ? new Retarder(container, data.LossMap, data.Ratio) : null; - private IElectricMotor GetElectricMachine(PowertrainPosition pos, IList<Tuple<PowertrainPosition, + private static IElectricMotor GetElectricMachine(PowertrainPosition pos, IList<Tuple<PowertrainPosition, ElectricMotorData>> electricMachinesData, VehicleContainer container, IElectricSystem es, IHybridController ctl) { var motorData = electricMachinesData.FirstOrDefault(x => x.Item1 == pos); @@ -855,7 +855,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””Engine IEPC /// </code> /// </summary> - private IVehicleContainer BuildFullPowertrainIEPCE(VectoRunData data) + private static IVehicleContainer BuildFullPowertrainIEPCE(VectoRunData data, IModalDataContainer _modData, WriteSumData _sumWriter) { if (data.Cycle.CycleType != CycleType.DistanceBased) { throw new VectoException("CycleType must be DistanceBased"); @@ -940,7 +940,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””Engine IEPC /// </code> /// </summary> - private IVehicleContainer BuildFullPowertrainIEPCSerial(VectoRunData data) + private static IVehicleContainer BuildFullPowertrainIEPCSerial(VectoRunData data, IModalDataContainer _modData, WriteSumData _sumWriter) { if (data.Cycle.CycleType != CycleType.DistanceBased) { throw new VectoException("CycleType must be DistanceBased"); @@ -1036,7 +1036,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””(Aux) /// </code> /// </summary> - public void BuildSimplePowertrain(VectoRunData data, IVehicleContainer container) + public static void BuildSimplePowertrain(VectoRunData data, IVehicleContainer container) { IVehicle vehicle = new Vehicle(container, data.VehicleData, data.AirdragData); // TODO: MQ 2018-11-19: engineering mode needs AUX power from cycle, use face cycle... @@ -1085,7 +1085,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””Engine E2 /// </code> /// </summary> - public void BuildSimpleSerialHybridPowertrain(VectoRunData data, VehicleContainer container) + public static void BuildSimpleSerialHybridPowertrain(VectoRunData data, VehicleContainer container) { var es = ConnectREESS(data, container); var aux = new ElectricAuxiliary(container); @@ -1170,7 +1170,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””Engine E2 /// </code> /// </summary> - public void BuildSimpleIEPCHybridPowertrain(VectoRunData data, VehicleContainer container) + public static void BuildSimpleIEPCHybridPowertrain(VectoRunData data, VehicleContainer container) { var es = ConnectREESS(data, container); var aux = new ElectricAuxiliary(container); @@ -1205,7 +1205,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””CombustionEngine /// </code> /// </summary> - public void BuildSimpleGenSet(VectoRunData data, VehicleContainer container) + public static void BuildSimpleGenSet(VectoRunData data, VehicleContainer container) { var es = ConnectREESS(data, container); var ctl = new GensetMotorController(container, es); @@ -1240,7 +1240,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””(Aux) /// </code> /// </summary> - public void BuildSimpleHybridPowertrain(VectoRunData data, VehicleContainer container) + public static void BuildSimpleHybridPowertrain(VectoRunData data, VehicleContainer container) { var es = ConnectREESS(data, container); var aux = new ElectricAuxiliary(container); @@ -1331,7 +1331,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// â””Electric Motor /// </code> /// </summary> - public void BuildSimplePowertrainElectric(VectoRunData data, VehicleContainer container) + public static void BuildSimplePowertrainElectric(VectoRunData data, VehicleContainer container) { var es = ConnectREESS(data, container); var aux = new ElectricAuxiliary(container); @@ -1399,7 +1399,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl return es; } - private DrivingCycleData GetMeasuredSpeedDummyCycle() => + private static DrivingCycleData GetMeasuredSpeedDummyCycle() => DrivingCycleDataReader.ReadFromStream(( "<t>,<v>,<grad>\n" + "0, 50, 0\n" + @@ -1506,7 +1506,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl return aux; } - private EngineAuxiliary CreateSpeedDependentAuxiliaries(VectoRunData data, IVehicleContainer container) + private static EngineAuxiliary CreateSpeedDependentAuxiliaries(VectoRunData data, IVehicleContainer container) { var aux = new EngineAuxiliary(container); var auxData = data.Aux.ToArray(); @@ -1517,7 +1517,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl return aux; } - private void AddSwitchingAux(EngineAuxiliary aux, IModalDataContainer modData, string auxId, VectoRunData.AuxData[] auxData) + private static void AddSwitchingAux(EngineAuxiliary aux, IModalDataContainer modData, string auxId, VectoRunData.AuxData[] auxData) { var urban = auxData.First(x => x.ID == auxId && x.MissionType == MissionType.UrbanDelivery); var rural = auxData.First(x => x.ID == auxId && x.MissionType == MissionType.RegionalDelivery); diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs index bba97fd261a4ea3aa2985af3b7a178bd7d494dff..dda1b99017f0fe9a8bc40588964b722709731f28 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs @@ -203,14 +203,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory JsonConvert.SerializeObject(data, Formatting.Indented)); } - var builder = new PowertrainBuilder( - modContainer, modData => { - if (SumData != null) { - SumData.Write(modData, JobNumber, current, d); - } - }); - - var run = GetVectoRun(data, builder); + var run = GetVectoRun(data, modContainer, modData => { + if (SumData != null) { + SumData.Write(modData, JobNumber, current, d); + } + }); if (Validate) { ValidateVectoRunData( @@ -241,7 +238,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory } } - private static VectoRun GetVectoRun(VectoRunData data, PowertrainBuilder builder) + private static VectoRun GetVectoRun(VectoRunData data, IModalDataContainer modData, WriteSumData sumWriter) { VectoRun run; switch (data.Cycle.CycleType) { @@ -249,19 +246,19 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory if ((data.SimulationType & SimulationType.DistanceCycle) == 0) { throw new VectoException("Distance-based cycle can not be simulated in {0} mode", data.SimulationType); } - run = new DistanceRun(builder.Build(data)); + run = new DistanceRun(PowertrainBuilder.Build(data, modData, sumWriter)); break; case CycleType.EngineOnly: if ((data.SimulationType & SimulationType.EngineOnly) == 0) { throw new VectoException("Engine-only cycle can not be simulated in {0} mode", data.SimulationType); } - run = new TimeRun(builder.Build(data)); + run = new TimeRun(PowertrainBuilder.Build(data, modData, sumWriter)); break; case CycleType.VTP: if ((data.SimulationType & SimulationType.VerificationTest) == 0) { throw new VectoException("VTP-cycle can not be simulated in {0} mode", data.SimulationType); } - run = new TimeRun(builder.Build(data)); + run = new TimeRun(PowertrainBuilder.Build(data, modData, sumWriter)); break; case CycleType.PWheel: @@ -270,7 +267,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory if ((data.SimulationType & (SimulationType.PWheel | SimulationType.MeasuredSpeedCycle)) == 0) { throw new VectoException("{1}-cycle can not be simulated in {0} mode", data.SimulationType, data.Cycle.CycleType); } - run = new TimeRun(builder.Build(data)); + run = new TimeRun(PowertrainBuilder.Build(data, modData, sumWriter)); break; case CycleType.PTO: throw new VectoException("PTO Cycle can not be used as main cycle!"); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/AMTShiftStrategyOptimized.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/AMTShiftStrategyOptimized.cs index dc0a77b3e23a4b7bf0a1548166c9f94bda28a2dc..55b9974e750fb2884874cdaf446cfb27a14ee319 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/AMTShiftStrategyOptimized.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/AMTShiftStrategyOptimized.cs @@ -61,10 +61,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { var runData = dataBus.RunData; // MQ: 2019-11-29 - fuel used here has no effect as this is the modDatacontainer for the test-powertrain only! - var modData = new ModalDataContainer(runData, null, null); - var builder = new PowertrainBuilder(modData); TestContainer = new SimplePowertrainContainer(runData); - builder.BuildSimplePowertrain(runData, TestContainer); + PowertrainBuilder.BuildSimplePowertrain(runData, TestContainer); TestContainerGbx = TestContainer.GearboxCtl as Gearbox; if (TestContainerGbx == null) { throw new VectoException("Unknown gearboxtype: {0}", TestContainer.GearboxCtl.GetType().FullName); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategyOptimized.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategyOptimized.cs index da97a2b2c7841ded9b88308bd6a24ca967734e72..472d7b0eccf667a0170d8ea79954c608538ee593 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategyOptimized.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategyOptimized.cs @@ -107,11 +107,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl private void InitializeTestContainer(VectoRunData runData) { // fuel list here has no effect as this is the mod-container for the test-powertrain only - var modData = new ModalDataContainer(runData, null, null); - var builder = new PowertrainBuilder(modData); TestContainer = new SimplePowertrainContainer(runData); - builder.BuildSimplePowertrain(runData, TestContainer); + PowertrainBuilder.BuildSimplePowertrain(runData, TestContainer); TestContainerGbx = TestContainer.GearboxCtl as ATGearbox; if (TestContainerGbx == null) { throw new VectoException("Unknown gearboxtype: {0}", TestContainer.GearboxCtl.GetType().FullName); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs index ded3a8981ed33da71043a8cef52596d1fed695e8..c29e39b125985a7d13abd1bc2b1a339ca52f4976 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs @@ -113,13 +113,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl if (ADAS.PredictiveCruiseControl != PredictiveCruiseControlType.None) { // create a dummy powertrain for pre-processing and estimations - var modData = new ModalDataContainer(data, null, null); - var builder = new PowertrainBuilder(modData); var testContainer = new SimplePowertrainContainer(data); if (data.JobType != VectoSimulationJobType.BatteryElectricVehicle && data.JobType != VectoSimulationJobType.SerialHybridVehicle) - builder.BuildSimplePowertrain(data, testContainer); + PowertrainBuilder.BuildSimplePowertrain(data, testContainer); else { - builder.BuildSimplePowertrainElectric(data, testContainer); + PowertrainBuilder.BuildSimplePowertrainElectric(data, testContainer); } container.AddPreprocessor(new PCCSegmentPreprocessor(testContainer, PCCSegments, data?.DriverData.PCC)); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs index 428700872f33cd571cf725a2fe2d417beccca67d..26501658c316471ababf468afa74db57fa85a8fe 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs @@ -105,10 +105,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { var runData = dataBus.RunData; // MQ: 2019-11-29 - fuel used here has no effect as this is the modDatacontainer for the test-powertrain only! - var modData = new ModalDataContainer(runData, null, null); - var builder = new PowertrainBuilder(modData); TestContainer = new SimplePowertrainContainer(runData); - builder.BuildSimplePowertrainElectric(runData, TestContainer); + PowertrainBuilder.BuildSimplePowertrainElectric(runData, TestContainer); TestContainerGbx = TestContainer.GearboxCtl as Gearbox; TestContainerBattery = TestContainer.BatteryInfo as Battery; TestContainerBatterySystem = TestContainer.BatteryInfo as BatterySystem; diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs index acb7ca724a6885ac0f2050498047a785b6b0c32d..f752c820dee32c1ebe5c5d32ee99aee228e2f8a6 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs @@ -36,10 +36,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies grad = 2; } - var modData = new ModalDataContainer(runData, null, null); - var builder = new PowertrainBuilder(modData); var testContainer = new SimplePowertrainContainer(runData); - builder.BuildSimpleHybridPowertrain(runData, testContainer); + PowertrainBuilder.BuildSimpleHybridPowertrain(runData, testContainer); return new VelocitySpeedGearshiftPreprocessor(VelocityDropData, runData.GearboxData.TractionInterruption, testContainer, -grad, grad); @@ -570,10 +568,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies * x.FuelData.LowerHeatingValueVecto * StrategyParameters.MinICEOnTime).Value()); // create testcontainer - var modData = new ModalDataContainer(runData, null, null); - var builder = new PowertrainBuilder(modData); var testContainer = new SimplePowertrainContainer(runData); - builder.BuildSimpleHybridPowertrain(runData, testContainer); + PowertrainBuilder.BuildSimpleHybridPowertrain(runData, testContainer); TestPowertrain = new TestPowertrain<T>(testContainer, DataBus); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/SerialHybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/SerialHybridStrategy.cs index 2f6e212cb0517c11768464551121f05398d2993b..995b7b21150e34339e81981217bb4a5c7526618b 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/SerialHybridStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/SerialHybridStrategy.cs @@ -280,19 +280,17 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies runData.GenSet = new VectoRunData.GenSetData() { GenSetCharacteristics = GenSetCharacteristics }; // create testcontainer - var modData = new ModalDataContainer(runData, null, null); - var builder = new PowertrainBuilder(modData); var testContainer = new SimplePowertrainContainer(runData); if (runData.JobType == VectoSimulationJobType.IEPC_S) { - builder.BuildSimpleIEPCHybridPowertrain(runData, testContainer); + PowertrainBuilder.BuildSimpleIEPCHybridPowertrain(runData, testContainer); } else { - builder.BuildSimpleSerialHybridPowertrain(runData, testContainer); + PowertrainBuilder.BuildSimpleSerialHybridPowertrain(runData, testContainer); } TestPowertrain = new TestPowertrain<T>(testContainer, DataBus); var gensetContainer = new SimplePowertrainContainer(runData); - builder.BuildSimpleGenSet(runData, gensetContainer); + PowertrainBuilder.BuildSimpleGenSet(runData, gensetContainer); TestGenSet = new TestGenset(gensetContainer, DataBus); diff --git a/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs index 478489c4b6ff93a123bf0a4b9f484dc8d7f362d6..2347bc503caef67d8a8ae02ee3b425dd1095b561 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs @@ -277,8 +277,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation }; // call builder (actual test) - var builder = new PowertrainBuilder(new MockModalDataContainer()); - builder.Build(data); + PowertrainBuilder.Build(data, new MockModalDataContainer()); } /// <summary> @@ -363,8 +362,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation }; // call builder (actual test) - var builder = new PowertrainBuilder(new MockModalDataContainer()); - var jobContainer = builder.Build(data); + var jobContainer = PowertrainBuilder.Build(data, new MockModalDataContainer()); } private static void RunJob(string jobFile, string expectedModFile, string actualModFile, string expectedSumFile, diff --git a/VectoCore/VectoCoreTest/Models/Simulation/PowerTrainBuilderTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/PowerTrainBuilderTest.cs index 12d8e72d65ace7fc3f5cd9ac6c147646a35303f0..b96aef018182cfa4c73e2b2fb20758362f1e9b8c 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/PowerTrainBuilderTest.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/PowerTrainBuilderTest.cs @@ -78,10 +78,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var reader = new EngineeringModeVectoRunDataFactory(engineeringProvider); var runData = reader.NextRun().First(); - var writer = new MockModalDataContainer(); - var builder = new PowertrainBuilder(writer); - - var powerTrain = builder.Build(runData) as VehicleContainer; + var powerTrain = PowertrainBuilder.Build(runData, new MockModalDataContainer()) as VehicleContainer; Assert.NotNull(powerTrain); Assert.IsInstanceOf<IVehicleContainer>(powerTrain); @@ -108,10 +105,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation if (!shouldFail) { var runData = reader.NextRun().First(); - var writer = new MockModalDataContainer(); - var builder = new PowertrainBuilder(writer); - - var powerTrain = builder.Build(runData) as VehicleContainer; + var powerTrain = PowertrainBuilder.Build(runData, new MockModalDataContainer()) as VehicleContainer; Assert.NotNull(powerTrain); Assert.IsInstanceOf<IVehicleContainer>(powerTrain); diff --git a/VectoCore/VectoCoreTest/Models/Simulation/PwheelModeTests.cs b/VectoCore/VectoCoreTest/Models/Simulation/PwheelModeTests.cs index 9f02660a5851fb2b012a36c113b346332e61c4d4..304b051c8294fdf6506a8ed370425ac3133f6007 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/PwheelModeTests.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/PwheelModeTests.cs @@ -179,8 +179,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation }; // call builder (actual test) - var builder = new PowertrainBuilder(new MockModalDataContainer()); - var jobContainer = builder.Build(data); + var jobContainer = PowertrainBuilder.Build(data, new MockModalDataContainer()); } /// <summary> diff --git a/VectoCore/VectoCoreTest/Models/Simulation/SimulationPreprocessingTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/SimulationPreprocessingTest.cs index c37ea78d34b6c9858bba4ed31d4aba8877c84403..54b39cac2af7e6a28bf466e94d368b1e169f621d 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/SimulationPreprocessingTest.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/SimulationPreprocessingTest.cs @@ -196,10 +196,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation protected virtual Dictionary<MeterPerSecond, Radian> SimulationRunPreprocessingEcoRoll(IVectoRun run) { var data = run.GetContainer().RunData; - var modData = new ModalDataContainer(data, null, null); - var builder = new PowertrainBuilder(modData); var simpleContainer = new SimplePowertrainContainer(data); - builder.BuildSimplePowertrain(data, simpleContainer); + PowertrainBuilder.BuildSimplePowertrain(data, simpleContainer); var tmp = new Dictionary<MeterPerSecond, Radian>(); var preprocessor = new PCCEcoRollEngineStopPreprocessor(simpleContainer, tmp, 50.KMPHtoMeterPerSecond(), 90.KMPHtoMeterPerSecond()); @@ -220,10 +218,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation protected virtual PCCSegments SimulationRunPreprocessingPCCSegments(IVectoRun run) { var data = run.GetContainer().RunData; - var modData = new ModalDataContainer(data, null, null); - var builder = new PowertrainBuilder(modData); var simpleContainer = new SimplePowertrainContainer(data); - builder.BuildSimplePowertrain(data, simpleContainer); + PowertrainBuilder.BuildSimplePowertrain(data, simpleContainer); var tmp = new PCCSegments(); var preprocessor = new PCCSegmentPreprocessor(simpleContainer, tmp, data.DriverData.PCC); @@ -292,10 +288,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation protected virtual VelocityRollingLookup SimulationRunPreprocessingVelocityTractionInterruption(IVectoRun run) { var data = run.GetContainer().RunData; - var modData = new ModalDataContainer(data, null, null); - var builder = new PowertrainBuilder(modData); var simpleContainer = new SimplePowertrainContainer(data); - builder.BuildSimplePowertrain(data, simpleContainer); + PowertrainBuilder.BuildSimplePowertrain(data, simpleContainer); var tmp = new VelocityRollingLookup(); var preprocessor = new VelocitySpeedGearshiftPreprocessor(tmp, 1.SI<Second>(), simpleContainer, minGradient: -12, maxGradient: 12);