From fd2d970466d26fa6b5fa53d8eca1066147fb8fdd Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <quaritsch@ivt.tugraz.at> Date: Wed, 10 May 2023 17:57:23 +0200 Subject: [PATCH] refactoring bus aux adapter - pneumatic system, electric system. --- .../AuxiliaryDataAdapter.cs | 25 +++++++++------ .../PrimaryBus/PrimaryBusSimulation.cs | 32 +++++++++---------- 2 files changed, 31 insertions(+), 26 deletions(-) diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs index e5ddc39695..a0810807a8 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs @@ -1044,7 +1044,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen ElectricalUserInputsConfig = CreateElectricsUserInputsConfig( primaryVehicle, completedVehicle, mission, actuations, runData.VehicleData.VehicleClass), PneumaticUserInputsConfig = CreatePneumaticUserInputsConfig( - primaryBusAuxiliaries, completedVehicle), + primaryVehicle, completedVehicle), PneumaticAuxillariesConfig = base.CreatePneumaticAuxConfig(runData.Retarder.Type), Actuations = actuations, SSMInputsCooling = ssmCooling, @@ -1143,14 +1143,15 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen - private PneumaticUserInputsConfig CreatePneumaticUserInputsConfig(IBusAuxiliariesDeclarationData primaryBusAuxiliaries, - IVehicleDeclarationInputData completedVehicle) + private PneumaticUserInputsConfig CreatePneumaticUserInputsConfig(IVehicleDeclarationInputData primaryVehicle, IVehicleDeclarationInputData completedVehicle) { - return new PneumaticUserInputsConfig + var primaryBusAuxiliaries = primaryVehicle.Components.BusAuxiliaries; + + return new PneumaticUserInputsConfig { CompressorMap = DeclarationData.BusAuxiliaries.GetCompressorMap(primaryBusAuxiliaries.PneumaticSupply), CompressorGearEfficiency = Constants.BusAuxiliaries.PneumaticUserConfig.CompressorGearEfficiency, - CompressorGearRatio = completedVehicle.VehicleType == VectoSimulationJobType.BatteryElectricVehicle + CompressorGearRatio = primaryVehicle.VehicleType == VectoSimulationJobType.BatteryElectricVehicle ? 0 : primaryBusAuxiliaries.PneumaticSupply.Ratio, SmartAirCompression = primaryBusAuxiliaries.PneumaticSupply.SmartAirCompression, SmartRegeneration = primaryBusAuxiliaries.PneumaticSupply.SmartRegeneration, @@ -1410,12 +1411,16 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen return new Dictionary<string, AuxiliaryDataAdapter.ElectricConsumerEntry>(); } - protected virtual Dictionary<string, AuxiliaryDataAdapter.ElectricConsumerEntry> GetElectricAuxConsumersPrimary(Mission mission, IVehicleDeclarationInputData vehicleData, VehicleClass vehicleClass, IBusAuxiliariesDeclarationData busAuxPrimary) + protected virtual Dictionary<string, ElectricConsumerEntry> GetElectricAuxConsumersPrimary(Mission mission, + IVehicleDeclarationInputData primaryVehicle, IVehicleDeclarationInputData completedVehicle, + VehicleClass vehicleClass) { - var retVal = new Dictionary<string, AuxiliaryDataAdapter.ElectricConsumerEntry>(); + var busAuxPrimary = primaryVehicle.Components.BusAuxiliaries; + + var retVal = new Dictionary<string, AuxiliaryDataAdapter.ElectricConsumerEntry>(); var spPower = DeclarationData.SteeringPumpBus.LookupElectricalPowerDemand( mission.MissionType, busAuxPrimary.SteeringPumpTechnology, - vehicleData.Length ?? mission.BusParameter.VehicleLength); + completedVehicle.Length ?? mission.BusParameter.VehicleLength); retVal[Constants.Auxiliaries.IDs.SteeringPump] = new AuxiliaryDataAdapter.ElectricConsumerEntry { ActiveDuringEngineStopStandstill = false, @@ -1423,7 +1428,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen Current = spPower / Constants.BusAuxiliaries.ElectricSystem.PowernetVoltage }; - var fanPower = vehicleData.ArchitectureID.IsBatteryElectricVehicle() + var fanPower = primaryVehicle.ArchitectureID.IsBatteryElectricVehicle() ? 0.SI<Watt>() : DeclarationData.Fan.LookupElectricalPowerDemand( vehicleClass, mission.MissionType, busAuxPrimary.FanTechnology); @@ -1443,7 +1448,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen var currentDemand = GetElectricConsumers(mission, completedVehicle, actuations, vehicleClass); // add electrical steering pump or electric fan defined in primary vehicle - foreach (var entry in GetElectricAuxConsumersPrimary(mission, completedVehicle, vehicleClass, primaryVehicle.Components.BusAuxiliaries)) + foreach (var entry in GetElectricAuxConsumersPrimary(mission, primaryVehicle, completedVehicle, vehicleClass)) { currentDemand[entry.Key] = entry.Value; } diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/PrimaryBus/PrimaryBusSimulation.cs b/VectoCore/VectoCoreTest/Integration/Declaration/PrimaryBus/PrimaryBusSimulation.cs index 53907efaa2..519b39ab4b 100644 --- a/VectoCore/VectoCoreTest/Integration/Declaration/PrimaryBus/PrimaryBusSimulation.cs +++ b/VectoCore/VectoCoreTest/Integration/Declaration/PrimaryBus/PrimaryBusSimulation.cs @@ -34,7 +34,7 @@ public class PrimaryBusSimulation private const string BASE_DIR_COMPLETED = @"TestData\Integration\DeclarationMode\2nd_AmendmDeclMode\CompletedBus"; private const string BASE_DIR_VIF = @"TestData\Integration\DeclarationMode\2nd_AmendmDeclMode\CompletedBus\VIF"; - private StandardKernel _kernel; + private StandardKernel _kernel; private IXMLInputDataReader _xmlReader; [OneTimeSetUp] @@ -49,7 +49,7 @@ public class PrimaryBusSimulation } - [ + [ TestCase(@"PrimaryBus/Conventional/primary_heavyBus group41_nonSmart.xml", 0, TestName = "2nd Amendment PrimaryBus Conventional"), TestCase(@"PrimaryBus/PEV/PEV_primaryBus_AMT_E2.xml", 0, TestName = "2nd Amendment PrimaryBus PEV E2"), @@ -62,7 +62,7 @@ public class PrimaryBusSimulation TestCase(@"PrimaryBus/P-HEV/PrimaryCoach_P2_HEV_AMT_CM_BCVC.xml", 7, TestName = "2nd Amendment PrimaryBus Coach P-HEV P2 AMT_CM_BCVC stpr, InterUrban_Ref_Load"), TestCase(@"PrimaryBus/P-HEV/PrimaryCoach_P2_HEV_AMT_Conv.xml", 0, TestName="2nd Amendment PrimaryBus Coach P-HEV P2 AMT"), - TestCase(@"PrimaryBus/P-HEV/PrimaryCoach_P2_HEV_Base_AMT.xml", 0, TestName = "2nd Amendment PrimaryBus Coach P-HEV P2 Base AMT"), + TestCase(@"PrimaryBus/P-HEV/PrimaryCoach_P2_HEV_Base_AMT.xml", 0, TestName = "2nd Amendment PrimaryBus Coach P-HEV P2 Base AMT"), TestCase(@"PrimaryBus/P-HEV/PrimaryCoach_P2_HEV_AMT_OVC.xml", 0, TestName = "2nd Amendment PrimaryBus Coach P-HEV P2 AMT OVC"), TestCase(@"PrimaryBus/P-HEV/PrimaryCityBus_P1_HEV_Base_AT.xml", 0, TestName = "2nd Amendment PrimaryBus CityBus P-HEV P1 Base AT"), TestCase(@"PrimaryBus/P-HEV/PrimaryCityBus_P1_HEV_AT_BD_BCVC.xml", 0, TestName= "2nd Amendment PrimaryBus CityBus P-HEV P1 Base AT - no TC"), @@ -89,14 +89,14 @@ public class PrimaryBusSimulation TestCase(@"PrimaryCityBus_IEPC-S_Base.RSLT_VIF.xml", @"HEV_completedBus_2.xml", 1, TestName = "2nd Amendment CompletedBus CityBus HEV IEPC-S"), TestCase(@"exempted_primary_heavyBus.RSLT_VIF.xml", @"exempted_completedBus_input_full.xml", 1, TestName = "2nd Amendment CompletedBus Exempted"), ] - public void CompletedBusSimulationTest(string vifFile, string completed, int runIdx) + public void CompletedBusSimulationTest(string vifFile, string completed, int runIdx) { var completedJob = GenerateJsonJobCompletedBus(Path.Combine(BASE_DIR_VIF, vifFile), Path.Combine(BASE_DIR_COMPLETED, completed)); var finalVif = CreateCompletedVIF(completedJob); //RunSimulationPrimary(finalVif, runIdx); - } + } [ TestCase(@"PrimaryBus/Conventional/primary_heavyBus group41_nonSmart.xml", @"Conventional_completedBus_2.xml", 0, TestName = "2nd Amendment SingleBus Conventional"), @@ -123,12 +123,12 @@ public class PrimaryBusSimulation private void RunSimulationSingle(string jobFile, string completed, int runIdx) { var completedJob = GenerateJsonJobSingleBus(Path.Combine(BASE_DIR, jobFile), Path.Combine(BASE_DIR_COMPLETED, completed)); - //var filePath = Path.Combine(BASE_DIR, jobFile); + //var filePath = Path.Combine(BASE_DIR, jobFile); var dataProvider = JSONInputDataFactory.ReadJsonJob(completedJob); var fileWriter = new FileOutputWriter(completedJob); var simFactory = _kernel.Get<ISimulatorFactoryFactory>(); - var runsFactory = simFactory.Factory(ExecutionMode.Declaration, dataProvider, fileWriter, null, null); + var runsFactory = simFactory.Factory(ExecutionMode.Declaration, dataProvider, fileWriter, null, null); //runsFactory.WriteModalResults = true; runsFactory.SerializeVectoRunData = true; var jobContainer = new JobContainer(new SummaryDataContainer(fileWriter)) { }; @@ -153,7 +153,7 @@ public class PrimaryBusSimulation PrintRuns(jobContainer, fileWriter); PrintFiles(fileWriter); - } + } private string GenerateJsonJobSingleBus(string primary, string completed) { @@ -177,7 +177,7 @@ public class PrimaryBusSimulation var str = JsonConvert.SerializeObject(json, Newtonsoft.Json.Formatting.Indented); File.WriteAllText(path, str); return path; - } + } public string CreateCompletedVIF(string jobFile) { @@ -204,9 +204,9 @@ public class PrimaryBusSimulation //PrintRuns(jobContainer, fileWriter); PrintFiles(fileWriter); return fileWriter.GetWrittenFiles()[ReportType.DeclarationReportMultistageVehicleXML]; - } + } - public void RunSimulationPrimary(string jobFile, int runIdx) + public void RunSimulationPrimary(string jobFile, int runIdx) { var filePath = Path.Combine(BASE_DIR, jobFile); var dataProvider = _xmlReader.CreateDeclaration(filePath); @@ -223,9 +223,9 @@ public class PrimaryBusSimulation } else { var run = runsFactory.SimulationRuns().Skip(runIdx).First(); jobContainer.AddRun(run); - TestContext.Progress.WriteLine($"{run.CycleName} - {run.RunSuffix}"); + TestContext.Progress.WriteLine($"{run.CycleName} - {run.RunSuffix}"); var expectedResults = 1; - if (dataProvider.JobInputData.Vehicle.OvcHev && !dataProvider.JobInputData.Vehicle.VehicleType.IsOneOf( + if (dataProvider.JobInputData.Vehicle.OvcHev && !dataProvider.JobInputData.Vehicle.VehicleType.IsOneOf( VectoSimulationJobType.BatteryElectricVehicle, VectoSimulationJobType.IEPC_E)) { var run2 = runsFactory.SimulationRuns().Skip(runIdx + 1).First(); @@ -255,7 +255,7 @@ public class PrimaryBusSimulation { var len = expected.Length - ignoreEnd; - var expectedWithoutSuffix = expected.Substring(0, len); + var expectedWithoutSuffix = expected.Substring(0, len); var actualWithoutSuffix = actual.Substring(0, len); Assert.AreEqual(expectedWithoutSuffix, actualWithoutSuffix); } @@ -303,7 +303,7 @@ public class PrimaryBusSimulation } - private string GenerateJsonJobCompletedBus(string vif, string completeBusInput) + private string GenerateJsonJobCompletedBus(string vif, string completeBusInput) { var subDirectory = Path.GetDirectoryName(completeBusInput); @@ -327,7 +327,7 @@ public class PrimaryBusSimulation return path; } - private void PrintRuns(JobContainer jobContainer, FileOutputWriter fileWriter = null) + private void PrintRuns(JobContainer jobContainer, FileOutputWriter fileWriter = null) { foreach (var keyValuePair in jobContainer.GetProgress()) { TestContext.WriteLine($"{keyValuePair.Key}: {keyValuePair.Value.CycleName} {keyValuePair.Value.RunName} {keyValuePair.Value.Error?.Message}"); -- GitLab