From fc201f32025e7bb5957e591f6d74b8aebe06d0c3 Mon Sep 17 00:00:00 2001 From: "VKMTHD\\franzjosefkober" <franz.josef.kober@ivt.tugraz.at> Date: Mon, 30 Mar 2020 09:53:51 +0200 Subject: [PATCH] added ssmbusparameters with related test --- .../DeclarationDataAdapterPrimaryBus.cs | 22 +++++++++ .../DeclarationDataAdapterCompletedBus.cs | 33 ++++++++----- ...tionModeCompletedBusVectoRunDataFactory.cs | 19 +++++++- .../CompletedBusFactorMethodTest.cs | 48 ++++++++++++++----- 4 files changed, 97 insertions(+), 25 deletions(-) diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs index d1bcd8274f..066284b7cb 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs @@ -136,6 +136,28 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter return pneumaticUI; } + public void SetSSMBusParameters(SSMInputs ssmInputs, Mission mission) + { + var busParams = mission.BusParameter; + + var hvacBusLength = busParams.HVACConfiguration == BusHVACSystemConfiguration.Configuration2 + ? 2 * Constants.BusParameters.DriverCompartmentLength + : busParams.VehicleLength; + + var hvacBusHeight = DeclarationData.BusAuxiliaries.CalculateInternalHeight(busParams.FloorType, + busParams.DoubleDecker, busParams.BodyHeight); + + ssmInputs.NumberOfPassengers = mission.RefLoad.Value(); + ssmInputs.BusFloorType = busParams.FloorType; + + ssmInputs.BusWindowSurface = DeclarationData.BusAuxiliaries.WindowHeight(busParams.DoubleDecker) * hvacBusLength + + DeclarationData.BusAuxiliaries.FrontAndRearWindowArea(busParams.DoubleDecker); + ssmInputs.BusSurfaceArea = 2 * (hvacBusLength * busParams.VehicleWidth + hvacBusLength * + busParams.BodyHeight + busParams.VehicleWidth * busParams.BodyHeight); + ssmInputs.BusVolume = hvacBusLength * busParams.VehicleWidth * hvacBusHeight; + } + + public override AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragInputData, Mission mission, Segment segment) diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationDataAdapterCompletedBus.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationDataAdapterCompletedBus.cs index e585529ffe..9bd2db4ac2 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationDataAdapterCompletedBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationDataAdapterCompletedBus.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; @@ -12,6 +13,7 @@ using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; using TUGraz.VectoCore.Models.BusAuxiliaries; using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics; +using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC; using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumatics; using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.Electrics; @@ -136,22 +138,29 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl } - - - public PneumaticUserInputsConfig SetPneumaticUserInputsConfig(PneumaticUserInputsConfig pneumaticUserInputsConfig, - IVehicleDeclarationInputData completedVehicle) + public void SetSSMBusParameters(SSMInputs ssmInputs, IVehicleDeclarationInputData completedVehicle, Mission mission, + KeyValuePair<LoadingType, Kilogram> loading) { + var busAuxiliaries = completedVehicle.Components.BusAuxiliaries; + var isDoubleDecker = completedVehicle.VehicleCode.IsDoubleDeckBus(); + var floorType = GetFloorType(completedVehicle.VehicleCode); - pneumaticUserInputsConfig.KneelingHeight = VectoMath.Max(0.SI<Meter>(), - completedVehicle.EntranceHeight - Constants.BusParameters.EntranceHeight); - pneumaticUserInputsConfig.Doors = - completedVehicle.Components.BusAuxiliaries.PneumaticConsumers.DoorDriveTechnology; - - return pneumaticUserInputsConfig; - } - + var hvacBusLength = busAuxiliaries.HVACAux.SystemConfiguration == BusHVACSystemConfiguration.Configuration2 + ? 2 * Constants.BusParameters.DriverCompartmentLength + : completedVehicle.Length; + var hvacBusHeight = DeclarationData.BusAuxiliaries.CalculateInternalHeight(GetFloorType(completedVehicle.VehicleCode), + isDoubleDecker, completedVehicle.Height); + ssmInputs.NumberOfPassengers = GetLoading(completedVehicle, mission, loading).Value(); + ssmInputs.BusFloorType = floorType; + + ssmInputs.BusWindowSurface = DeclarationData.BusAuxiliaries.WindowHeight(isDoubleDecker) * hvacBusLength + + DeclarationData.BusAuxiliaries.FrontAndRearWindowArea(isDoubleDecker); + ssmInputs.BusSurfaceArea = 2 * (hvacBusLength * completedVehicle.Width + hvacBusLength * + completedVehicle.Height + completedVehicle.Width * completedVehicle.Height); + ssmInputs.BusVolume = hvacBusLength * completedVehicle.Width * hvacBusHeight; + } public IEnumerable<VectoRunData.AuxData> CreateAuxiliaryData( IAuxiliariesDeclarationInputData auxiliaryInputData, IBusAuxiliariesDeclarationData mergedBusAux, diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeCompletedBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeCompletedBusVectoRunDataFactory.cs index f76e242487..a5ad452c3d 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeCompletedBusVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeCompletedBusVectoRunDataFactory.cs @@ -13,6 +13,7 @@ using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; using TUGraz.VectoCore.Models.BusAuxiliaries; using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics; +using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC; using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumatics; using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.Electrics; using TUGraz.VectoCore.Models.Declaration; @@ -287,10 +288,20 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl primaryBusAuxiliaries, completedVehicle, _compressorMap), PneumaticAuxillariesConfig = _consumersDeclarationData + + + }; - + + var ssmInputs = new SSMInputs(null); + DataAdapterCompleted.SetSSMBusParameters(ssmInputs, completedVehicle, mission, loading); + + + auxiliaryConfig.SSMInputs = ssmInputs; + simulationRunData.BusAuxiliaries = auxiliaryConfig; + simulationRunData.Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()); @@ -370,6 +381,12 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl PneumaticAuxillariesConfig = _consumersDeclarationData }; + var ssmInputs = new SSMInputs(null); + DataAdapterPrimary.SetSSMBusParameters(ssmInputs, mission); + + + auxiliaryConfig.SSMInputs = ssmInputs; + simulationRunData.BusAuxiliaries = auxiliaryConfig; diff --git a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs index 7df8416913..ce83f04ce2 100644 --- a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs +++ b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs @@ -105,10 +105,9 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus SetRelatedVehicleParts(runs); - var index = 0; for (int i = 0; i < relatedRuns.Count; i++) { - AssertVehicleData(relatedRuns[i], ref index); + AssertVehicleData(relatedRuns[i],i); AssertAirdragData(relatedRuns[i]); AssertEngineData(relatedRuns[i]); AssertGearbox(relatedRuns[i]); @@ -120,13 +119,14 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus AssertElectricalUserInputConfig(relatedRuns[i]); AssertPneumaticUserInputsConfig(relatedRuns[i]); AssertPneumaticConsumerDemand(relatedRuns[i]); + AssertSSMBusParameters(relatedRuns[i], i); } } #region Vehicle Data Asserts - private void AssertVehicleData(RelatedRun relatedRun, ref int index) + private void AssertVehicleData(RelatedRun relatedRun, int currentIndex) { var genericVehicleData = relatedRun.VectoRunDataGenericBody.VehicleData; var specificVehicleData = relatedRun.VectoRunDataSpezificBody.VehicleData; @@ -140,7 +140,7 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus Assert.AreEqual(0, genericVehicleData.BodyAndTrailerMass.Value()); Assert.AreEqual(genericVehicleData.BodyAndTrailerMass, specificVehicleData.BodyAndTrailerMass); - AssertLoading(genericVehicleData.Loading, specificVehicleData.Loading, ref index); + AssertLoading(genericVehicleData.Loading, specificVehicleData.Loading, currentIndex); Assert.AreEqual(0.4992, genericVehicleData.DynamicTyreRadius.Value(), 1e-0); Assert.AreEqual(genericVehicleData.DynamicTyreRadius, specificVehicleData.DynamicTyreRadius); @@ -150,28 +150,27 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus AssertAxles(genericVehicleData.AxleData, specificVehicleData.AxleData); } - private void AssertLoading(Kilogram genericLoading, Kilogram specificLoading, ref int index) + private void AssertLoading(Kilogram genericLoading, Kilogram specificLoading, int index) { switch (index) { case 0: - Assert.AreEqual(5051.2950, genericLoading.Value(), 1e-0); - Assert.AreEqual(2309.4738, specificLoading.Value(), 1e-0);//lowLoading + Assert.AreEqual(5051.2950, genericLoading.Value(), 1e-4); + Assert.AreEqual(2309.4738, specificLoading.Value(), 1e-4); break; case 1: - Assert.AreEqual(5051.2950, genericLoading.Value(), 1e-0); + Assert.AreEqual(5051.2950, genericLoading.Value(), 1e-4); Assert.AreEqual(2130, specificLoading.Value(), 1e-0); break; case 2: - Assert.AreEqual(3367.53, genericLoading.Value(), 1e-0); - Assert.AreEqual(1539.6492, specificLoading.Value(), 1e-0); + Assert.AreEqual(3367.53, genericLoading.Value(), 1e-2); + Assert.AreEqual(1539.6492, specificLoading.Value(), 1e-4); break; case 3: - Assert.AreEqual(3367.53, genericLoading.Value(), 1e-0); + Assert.AreEqual(3367.53, genericLoading.Value(), 1e-2); Assert.AreEqual(2130.0, specificLoading.Value(), 1e-0); break; } - index++; } private void AssertADASData(VehicleData.ADASData genericAdasData, VehicleData.ADASData specificAdasData) @@ -624,6 +623,31 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus #endregion + #region SSMBusParameters Asserts + + private void AssertSSMBusParameters(RelatedRun relatedRun, int currentIndex) + { + var genericBusParam = relatedRun.VectoRunDataGenericBody.BusAuxiliaries.SSMInputs.BusParameters; + var specificBusParam = relatedRun.VectoRunDataSpezificBody.BusAuxiliaries.SSMInputs.BusParameters; + + AssertLoading(genericBusParam.NumberOfPassengers.SI<Kilogram>(), + specificBusParam.NumberOfPassengers.SI<Kilogram>(), currentIndex); + + Assert.AreEqual(FloorType.HighFloor, genericBusParam.BusFloorType); + Assert.AreEqual(FloorType.HighFloor, specificBusParam.BusFloorType); + + Assert.AreEqual(34.2500, genericBusParam.BusWindowSurface.Value()); + Assert.AreEqual(37.5750, specificBusParam.BusWindowSurface.Value()); + + Assert.AreEqual(150.1200, genericBusParam.BusSurfaceArea.Value()); + Assert.AreEqual(146.6130, specificBusParam.BusSurfaceArea.Value()); + + Assert.AreEqual(48.1950, genericBusParam.BusVolume.Value()); + Assert.AreEqual(54.2997, specificBusParam.BusVolume.Value()); + } + + #endregion + private CrosswindCorrectionCdxALookup GetCrosswindCorrection(string crossWindCorrectionParams, SquareMeter aerodynamicDragArea, Meter vehicleHeight) { -- GitLab