From 4588849385919838760b7629f2bee3d2236b41ad Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Thu, 9 Jan 2020 14:23:43 +0100 Subject: [PATCH] refactoring: replacing high/low ventilation rate with single ventilation rate - set in run-data accordingly. consequently ventilation power, volume exchange renaming data adapter for primary bus introducing HVAC config-id --- .../IntegrationTests/AuxDemandTest.vb | 3 +- .../UnitTests/SSMTOOLTests.vb | 32 +++---- .../VectoAuxiliariesTests/UnitTests/Utils.vb | 7 +- .../BusHVACSystemConfiguration.cs | 15 +++ .../VectoCommon/BusAuxiliaries/ISSMInputs.cs | 20 ++-- .../VectoCore/Configuration/Constants.cs | 3 - .../InputData/FileIO/JSON/SSMInputData.cs | 14 +-- .../DeclarationDataAdapterPrimaryBus.cs | 91 +++++++++++++++++++ .../DeclarationDataAdapterTruck.cs | 54 +---------- .../DeclarationModeBusVectoRunDataFactory.cs | 4 +- .../DeclarationVTPModeVectoRunDataFactory.cs | 2 +- .../EngineeringModeVectoRunDataFactory.cs | 2 +- .../Models/BusAuxiliaries/AuxiliaryConfig.cs | 9 +- .../Impl/HVAC/SSMCalculate.cs | 42 +++------ .../DownstreamModules/Impl/HVAC/SSMInputs.cs | 58 ++++++------ .../DownstreamModules/Impl/HVAC/SSMTOOL.cs | 2 +- .../Models/Declaration/DeclarationData.cs | 33 ++++--- .../Simulation/Impl/PowertrainBuilder.cs | 2 +- .../Simulation/Impl/SimulatorFactory.cs | 2 +- .../OutputData/FileIO/BusAuxWriter.cs | 14 +-- .../Declaration/VAUXBus/SP-AxleFactor.csv | 9 ++ .../VectoCore/Utils/ProviderExtensions.cs | 2 +- VectoCore/VectoCore/VectoCore.csproj | 24 ++--- .../Integration/CoachAdvancedAuxPowertrain.cs | 4 +- 24 files changed, 250 insertions(+), 198 deletions(-) create mode 100644 VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs create mode 100644 VectoCore/VectoCore/Resources/Declaration/VAUXBus/SP-AxleFactor.csv diff --git a/VECTOAux/VectoAuxiliariesTests/IntegrationTests/AuxDemandTest.vb b/VECTOAux/VectoAuxiliariesTests/IntegrationTests/AuxDemandTest.vb index fce6fc5f8a..26c09444f8 100644 --- a/VECTOAux/VectoAuxiliariesTests/IntegrationTests/AuxDemandTest.vb +++ b/VECTOAux/VectoAuxiliariesTests/IntegrationTests/AuxDemandTest.vb @@ -41,7 +41,7 @@ Namespace IntegrationTests aux.Signals.EngineIdleSpeed = 560.RPMtoRad() dim auxConfig = BusAuxiliaryInputData.ReadBusAuxiliaries(auxFilePath, Utils.GetDefaultVehicleData(vehicleWeight.SI(Of Kilogram))) - CType(auxConfig, AuxiliaryConfig).Cycle = "Coach" + aux.Initialise(auxConfig, FuelData.Diesel) ', Path.GetDirectoryName(Path.GetFullPath(auxFilePath)) + "\") aux.Signals.ClutchEngaged = True @@ -86,7 +86,6 @@ Namespace IntegrationTests aux.Signals.EngineIdleSpeed = 560.RPMtoRad() Dim auxCfg = BusAuxiliaryInputData.ReadBusAuxiliaries(auxFilePath, Utils.GetDefaultVehicleData(12000.SI(Of Kilogram)())) - CType(auxCfg, AuxiliaryConfig).Cycle = "Coach" CType(auxCfg, AuxiliaryConfig).FuelMap = fuelMap CType(aux, AdvancedAuxiliaries).Initialise(auxCfg, FuelData.Diesel) ', Path.GetDirectoryName(Path.GetFullPath(auxFilePath)) + "\") diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb index 3d6dcd3592..eb092b429b 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb @@ -71,7 +71,7 @@ Namespace UnitTests <TestCase("AuxHeater")> Public Sub InstantiateDefaultSSMGenInputsTest(section As String) - Dim dao = New DeclarationDataAdapterTruck() + Dim dao = New DeclarationDataAdapterPrimaryBus() Dim target As ISSMInputs = dao.CreateSSMModelParameters(Utils.GetDefaultVehicleData(), FuelData.Diesel) If section = "BusParameterisation" Then @@ -102,12 +102,12 @@ Namespace UnitTests Assert.AreEqual(3.0R, target.BoundaryConditions.UValue.Value()) Assert.AreEqual(18, target.BoundaryConditions.HeatingBoundaryTemperature.AsDegCelsius) Assert.AreEqual(23, target.BoundaryConditions.CoolingBoundaryTemperature.AsDegCelsius) - Assert.AreEqual(20, target.BoundaryConditions.HighVentilation.Value()*3600) - Assert.AreEqual(7, target.BoundaryConditions.LowVentilation.Value()*3600) - Assert.AreEqual(1236.25, Math.Round(target.BoundaryConditions.HighVolumeExchange.Value()*3600, 2)) - Assert.AreEqual(432.69, Math.Round(target.BoundaryConditions.LowVolumeExchange.Value()*3600, 2)) - Assert.AreEqual(692.3, Math.Round(target.BoundaryConditions.HighVentPower.Value(), 2)) - Assert.AreEqual(242.3, Math.Round(target.BoundaryConditions.LowVentPower.Value(), 2)) + Assert.AreEqual(20, target.BoundaryConditions.VentilationRate.Value()*3600) + 'Assert.AreEqual(7, target.BoundaryConditions.LowVentilation.Value()*3600) + Assert.AreEqual(1236.25, Math.Round(target.BoundaryConditions.VolumeExchange.Value()*3600, 2)) + 'Assert.AreEqual(432.69, Math.Round(target.BoundaryConditions.LowVolumeExchange.Value()*3600, 2)) + Assert.AreEqual(692.3, Math.Round(target.BoundaryConditions.VentPower.Value(), 2)) + 'Assert.AreEqual(242.3, Math.Round(target.BoundaryConditions.LowVentPower.Value(), 2)) Assert.AreEqual(0.56R, target.BoundaryConditions.SpecificVentilationPower.Value()/3600) Assert.AreEqual(0.84, target.BoundaryConditions.AuxHeaterEfficiency) Assert.AreEqual(42700.0/3600.0, target.BoundaryConditions.GCVDieselOrHeatingOil.Value()/3600.0/1000.0) @@ -130,8 +130,8 @@ Namespace UnitTests If section = "AC-System" Then 'AC-SYSTEM '********* - Assert.AreEqual(ACCompressorType.TwoStage, target.ACSystem.CompressorType) - Assert.AreEqual(18, target.ACSystem.CompressorCapacity.Value()/1000.0) + Assert.AreEqual(ACCompressorType.TwoStage, target.ACSystem.HVACCompressorType) + Assert.AreEqual(18, target.ACSystem.HVACMaxCoolingPower.Value()/1000.0) Assert.AreEqual(3.5, target.ACSystem.COP) End If @@ -141,9 +141,9 @@ Namespace UnitTests Assert.Areequal(True, target.Ventilation.VentilationOnDuringHeating) Assert.Areequal(True, target.Ventilation.VentilationWhenBothHeatingAndACInactive) Assert.Areequal(True, target.Ventilation.VentilationDuringAC) - Assert.Areequal(VentilationLevel.High, target.Ventilation.VentilationFlowSettingWhenHeatingAndACInactive) - Assert.Areequal(VentilationLevel.High, target.Ventilation.VentilationDuringHeating) - Assert.AreEqual(VentilationLevel.High, target.Ventilation.VentilationDuringCooling) + 'Assert.Areequal(VentilationLevel.High, target.Ventilation.VentilationFlowSettingWhenHeatingAndACInactive) + 'Assert.Areequal(VentilationLevel.High, target.Ventilation.VentilationDuringHeating) + 'Assert.AreEqual(VentilationLevel.High, target.Ventilation.VentilationDuringCooling) End If @@ -560,7 +560,7 @@ Namespace UnitTests Const filePath As String = "SSMTOOLTestSaveRetreive.json" Dim success As Boolean - Dim dao = New DeclarationDataAdapterTruck() + Dim dao = New DeclarationDataAdapterPrimaryBus() Dim target As SSMTOOL = New SSMTOOL(dao.CreateSSMModelParameters(Utils.GetDefaultVehicleData(), FuelData.Diesel)) @@ -569,9 +569,9 @@ Namespace UnitTests Assert.IsTrue(success) 'change something - CType(target.SSMInputs.BoundaryConditions, SSMInputs).HighVentilation = 202.202.SI (Of PerSecond) + CType(target.SSMInputs.BoundaryConditions, SSMInputs).VentilationRate = 202.202.SI (Of PerSecond) - Assert.AreEqual(202.202, target.SSMInputs.BoundaryConditions.HighVentilation.Value(), 1e-3) + Assert.AreEqual(202.202, target.SSMInputs.BoundaryConditions.VentilationRate.Value(), 1e-3) 'Retreive 'success = target.Load(filePath) @@ -584,7 +584,7 @@ Namespace UnitTests end try Assert.IsTrue(success) - Assert.AreEqual(20.SI(Unit.SI.Per.Hour).Value(), target.SSMInputs.BoundaryConditions.HighVentilation.Value(), + Assert.AreEqual(20.SI(Unit.SI.Per.Hour).Value(), target.SSMInputs.BoundaryConditions.VentilationRate.Value(), 1e-3) End Sub diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb index 02901bab37..d0857ef624 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb @@ -144,11 +144,10 @@ Public Class Utils .EnvironmentalConditionsMap = DeclarationData.BusAuxiliaries.DefaultEnvironmentalConditions, .HeatingBoundaryTemperature = 18.0.DegCelsiusToKelvin(), .CoolingBoundaryTemperature = 23.0.DegCelsiusToKelvin(), - .HighVentilation = 20.SI(Unit.SI.Per.Hour).Cast (Of PerSecond), - .LowVentilation = 7.SI(Unit.SI.Per.Hour).Cast (Of PerSecond), + .VentilationRate = 20.SI(Unit.SI.Per.Hour).Cast (Of PerSecond), .SpecificVentilationPower = 0.56.SI(Unit.SI.Watt.Hour.Per.Cubic.Meter).Cast (Of JoulePerCubicMeter), - .CompressorType = ACCompressorType.TwoStage, - .CompressorCapacity = 18.si(Unit.SI.kilo.watt).Cast (of Watt), + .HVACCompressorType = ACCompressorType.TwoStage, + .HVACMaxCoolingPower = 18.si(Unit.SI.kilo.watt).Cast (of Watt), .AuxHeaterEfficiency = 0.84, .FuelFiredHeaterPower = 30.SI(Unit.SI.kilo.watt).Cast (Of Watt), .FuelEnergyToHeatToCoolant = Constants.BusAuxiliaries.Heater.FuelEnergyToHeatToCoolant, diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs b/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs new file mode 100644 index 0000000000..13b2f68ce0 --- /dev/null +++ b/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs @@ -0,0 +1,15 @@ +namespace TUGraz.VectoCommon.BusAuxiliaries { + public enum BusHVACSystemConfiguration + { + Unknown, + Configuration1, + Configuration2, + Configuration3, + Configuration4, + Configuration5, + Configuration6, + Configuration7, + Configuration8, + Configuration9, + } +} \ No newline at end of file diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs index 8f073cafe8..2a1a2894d6 100644 --- a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs +++ b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs @@ -59,12 +59,9 @@ namespace TUGraz.VectoCommon.BusAuxiliaries Kelvin HeatingBoundaryTemperature { get; } Kelvin CoolingBoundaryTemperature { get; } Kelvin TemperatureCoolingTurnsOff { get; } - PerSecond HighVentilation { get; } - PerSecond LowVentilation { get; } - CubicMeterPerSecond HighVolumeExchange { get; } - CubicMeterPerSecond LowVolumeExchange { get; } - Watt HighVentPower { get; } - Watt LowVentPower { get; } + PerSecond VentilationRate { get; } + CubicMeterPerSecond VolumeExchange { get; } + Watt VentPower { get; } JoulePerCubicMeter SpecificVentilationPower { get; } double AuxHeaterEfficiency { get; } JoulePerKilogramm GCVDieselOrHeatingOil { get; } @@ -90,8 +87,8 @@ namespace TUGraz.VectoCommon.BusAuxiliaries public interface IACSystem { // AC-system - ACCompressorType CompressorType { get; } - Watt CompressorCapacity { get; } + ACCompressorType HVACCompressorType { get; } + Watt HVACMaxCoolingPower { get; } double COP { get; } } @@ -102,9 +99,10 @@ namespace TUGraz.VectoCommon.BusAuxiliaries bool VentilationWhenBothHeatingAndACInactive { get; } bool VentilationDuringAC { get; set; } - VentilationLevel VentilationFlowSettingWhenHeatingAndACInactive { get; } - VentilationLevel VentilationDuringHeating { get; } - VentilationLevel VentilationDuringCooling { get; } + + //VentilationLevel VentilationFlowSettingWhenHeatingAndACInactive { get; } + //VentilationLevel VentilationDuringHeating { get; } + //VentilationLevel VentilationDuringCooling { get; } } public enum VentilationLevel diff --git a/VectoCore/VectoCore/Configuration/Constants.cs b/VectoCore/VectoCore/Configuration/Constants.cs index 09e3277ada..73faf2e1b2 100644 --- a/VectoCore/VectoCore/Configuration/Constants.cs +++ b/VectoCore/VectoCore/Configuration/Constants.cs @@ -72,9 +72,6 @@ namespace TUGraz.VectoCore.Configuration public static class BusAuxiliaries { - public const string BrakeAndDoorsActuationKey = "Park brake + 2 doors"; - public const string CycleTimeActuationKey = "CycleTime"; - public static class SteadyStateModel { public static readonly Kelvin PassengerBoundaryTemperature = 17.0.DegCelsiusToKelvin(); diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/SSMInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/SSMInputData.cs index ebf718ee30..fcf9255eae 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/SSMInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/SSMInputData.cs @@ -42,8 +42,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON //retVal.PassengerBoundaryTemperature = genInput.GetEx<double>("BC_PassengerBoundaryTemperature").DegCelsiusToKelvin(); retVal.HeatingBoundaryTemperature = genInput.GetEx<double>("BC_HeatingBoundaryTemperature").DegCelsiusToKelvin(); retVal.CoolingBoundaryTemperature = genInput.GetEx<double>("BC_CoolingBoundaryTemperature").DegCelsiusToKelvin(); - retVal.HighVentilation = genInput.GetEx<double>("BC_HighVentilation").SI(Unit.SI.Per.Hour).Cast<PerSecond>(); - retVal.LowVentilation = genInput.GetEx<double>("BC_lowVentilation").SI(Unit.SI.Per.Hour).Cast<PerSecond>(); + retVal.VentilationRate = genInput.GetEx<double>("BC_VentilationRate").SI(Unit.SI.Per.Hour).Cast<PerSecond>(); + //retVal.LowVentilation = genInput.GetEx<double>("BC_lowVentilation").SI(Unit.SI.Per.Hour).Cast<PerSecond>(); retVal.SpecificVentilationPower = genInput.GetEx<double>("BC_SpecificVentilationPower").SI(Unit.SI.Watt.Hour.Per.Cubic.Meter).Cast<JoulePerCubicMeter>(); retVal.AuxHeaterEfficiency = genInput.GetEx<double>("BC_AuxHeaterEfficiency"); //retVal.GCVDieselOrHeatingOil = genInput.GetEx<double>("BC_GCVDieselOrHeatingOil").SI(Unit.SI.Kilo.Watt.Hour.Per.Kilo.Gramm).Cast<JoulePerKilogramm>(); @@ -56,14 +56,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON genInput.GetEx<double>("EC_Solar").SI<WattPerSquareMeter>(), 1.0); //retVal.EnviromentalConditions_BatchFile = genInput.GetEx<string>("EC_EnviromentalConditions_BatchFile"); //retVal.BatchMode = genInput.GetEx<bool>("EC_EnviromentalConditions_BatchEnabled"); - retVal.CompressorType = ACCompressorTypeExtensions.ParseEnum(genInput.GetEx<string>("AC_CompressorType")); - retVal.CompressorCapacity = genInput.GetEx<double>("AC_CompressorCapacitykW").SI(Unit.SI.Kilo.Watt).Cast<Watt>(); + retVal.HVACCompressorType = ACCompressorTypeExtensions.ParseEnum(genInput.GetEx<string>("AC_CompressorType")); + retVal.HVACMaxCoolingPower = genInput.GetEx<double>("AC_CompressorCapacitykW").SI(Unit.SI.Kilo.Watt).Cast<Watt>(); retVal.VentilationOnDuringHeating = genInput.GetEx<bool>("VEN_VentilationOnDuringHeating"); retVal.VentilationWhenBothHeatingAndACInactive = genInput.GetEx<bool>("VEN_VentilationWhenBothHeatingAndACInactive"); retVal.VentilationDuringAC = genInput.GetEx<bool>("VEN_VentilationDuringAC"); - retVal.VentilationFlowSettingWhenHeatingAndACInactive = genInput.GetEx<string>("VEN_VentilationFlowSettingWhenHeatingAndACInactive").ParseEnum<VentilationLevel>(); - retVal.VentilationDuringHeating = genInput.GetEx<string>("VEN_VentilationDuringHeating").ParseEnum<VentilationLevel>(); - retVal.VentilationDuringCooling = genInput.GetEx<string>("VEN_VentilationDuringCooling").ParseEnum<VentilationLevel>(); + //retVal.VentilationFlowSettingWhenHeatingAndACInactive = genInput.GetEx<string>("VEN_VentilationFlowSettingWhenHeatingAndACInactive").ParseEnum<VentilationLevel>(); + //retVal.VentilationDuringHeating = genInput.GetEx<string>("VEN_VentilationDuringHeating").ParseEnum<VentilationLevel>(); + //retVal.VentilationDuringCooling = genInput.GetEx<string>("VEN_VentilationDuringCooling").ParseEnum<VentilationLevel>(); //retVal.EngineWasteHeatkW = genInput.GetEx<double>("AH_EngineWasteHeatkW").SI(Unit.SI.Kilo.Watt).Cast<Watt>(); retVal.FuelFiredHeaterPower = genInput.GetEx<double>("AH_FuelFiredHeaterkW").SI(Unit.SI.Kilo.Watt).Cast<Watt>(); retVal.FuelEnergyToHeatToCoolant = genInput.GetEx<double>("AH_FuelEnergyToHeatToCoolant"); diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs index 5d86618c5b..b479a91e19 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs @@ -1,10 +1,16 @@ using System; using System.Collections.Generic; +using System.Linq; +using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; +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.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data; @@ -61,5 +67,90 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter } #endregion + + public IAuxiliaryConfig CreateBusAuxiliariesData(IVehicleDeclarationInputData vehicleData, VectoRunData runData) + { + var retVal = new AuxiliaryConfig(); + + retVal.ElectricalUserInputsConfig = GetElectricalUserConfig(vehicleData); + retVal.PneumaticUserInputsConfig = GetPneumaticUserConfig(vehicleData); + retVal.PneumaticAuxillariesConfig = CreatePneumaticAuxConfig(runData.Retarder.Type); + retVal.Actuations = DeclarationData.BusAuxiliaries.ActuationsMap.Lookup(runData.Mission.MissionType); + retVal.SSMInputs = CreateSSMModelParameters(runData.VehicleData, FuelData.Diesel); + retVal.VehicleData = runData.VehicleData; + retVal.FuelMap = runData.EngineData.Fuels.First().ConsumptionMap; + + + return retVal; + } + + private IElectricsUserInputsConfig GetElectricalUserConfig(IVehicleDeclarationInputData vehicleData) + { + throw new NotImplementedException(); + } + + private IPneumaticUserInputsConfig GetPneumaticUserConfig(IVehicleDeclarationInputData vehicleData) + { + throw new NotImplementedException(); + } + + public virtual ISSMInputs CreateSSMModelParameters(IVehicleData vehicleData, IFuelProperties heatingFuel) + { + var retVal = new SSMInputs(vehicleData, null, heatingFuel) { + Technologies = DeclarationData.BusAuxiliaries.SSMTechnologyList, + DefaultConditions = new EnvironmentalConditionMapEntry( + Constants.BusAuxiliaries.SteadyStateModel.DefaultTemperature, + Constants.BusAuxiliaries.SteadyStateModel.DefaultSolar, + 1.0), + EnvironmentalConditionsMap = DeclarationData.BusAuxiliaries.DefaultEnvironmentalConditions, + HeatingBoundaryTemperature = Constants.BusAuxiliaries.SteadyStateModel.HeatingBoundaryTemperature, + CoolingBoundaryTemperature = Constants.BusAuxiliaries.SteadyStateModel.CoolingBoundaryTemperature, + + //HighVentilation = Constants.BusAuxiliaries.SteadyStateModel.HighVentilation, + //LowVentilation = Constants.BusAuxiliaries.SteadyStateModel.LowVentilation, + SpecificVentilationPower = Constants.BusAuxiliaries.SteadyStateModel.SpecificVentilationPower, + + // TODO! MQ 2019-19-29 Compressor Type and CompressorCapacity from input data? + HVACCompressorType = ACCompressorType.TwoStage, // "2-stage", + HVACMaxCoolingPower = 18.SI(Unit.SI.Kilo.Watt).Cast<Watt>(), + + AuxHeaterEfficiency = Constants.BusAuxiliaries.SteadyStateModel.AuxHeaterEfficiency, + FuelFiredHeaterPower = Constants.BusAuxiliaries.SteadyStateModel.FuelFiredHeaterPower, + FuelEnergyToHeatToCoolant = Constants.BusAuxiliaries.Heater.FuelEnergyToHeatToCoolant, + CoolantHeatTransferredToAirCabinHeater = Constants.BusAuxiliaries.Heater.CoolantHeatTransferredToAirCabinHeater, + GFactor = Constants.BusAuxiliaries.SteadyStateModel.GFactor, + VentilationOnDuringHeating = true, + VentilationWhenBothHeatingAndACInactive = true, + VentilationDuringAC = true, + //VentilationDuringHeating = VentilationLevel.High, + //VentilationDuringCooling = VentilationLevel.High, + //VentilationFlowSettingWhenHeatingAndACInactive = VentilationLevel.High, + MaxPossibleBenefitFromTechnologyList = + Constants.BusAuxiliaries.SteadyStateModel.MaxPossibleBenefitFromTechnologyList, + }; + + DeclarationData.BusAuxiliaries.SetHVACParameters(retVal, BusHVACSystemConfiguration.Configuration6); + + return retVal; + } + + public virtual IPneumaticsConsumersDemand CreatePneumaticAuxConfig(RetarderType retarderType) + { + return new PneumaticsConsumersDemand() { + AdBlueInjection = Constants.BusAuxiliaries.PneumaticConsumersDemands.AdBlueInjection, + AirControlledSuspension = Constants.BusAuxiliaries.PneumaticConsumersDemands.AirControlledSuspension, + Braking = retarderType == RetarderType.None ? + Constants.BusAuxiliaries.PneumaticConsumersDemands.BrakingNoRetarder : + Constants.BusAuxiliaries.PneumaticConsumersDemands.BrakingWithRetarder, + BreakingWithKneeling = Constants.BusAuxiliaries.PneumaticConsumersDemands.BreakingAndKneeling, + DeadVolBlowOuts = Constants.BusAuxiliaries.PneumaticConsumersDemands.DeadVolBlowOuts, + DeadVolume = Constants.BusAuxiliaries.PneumaticConsumersDemands.DeadVolume, + NonSmartRegenFractionTotalAirDemand = Constants.BusAuxiliaries.PneumaticConsumersDemands.NonSmartRegenFractionTotalAirDemand, + SmartRegenFractionTotalAirDemand = Constants.BusAuxiliaries.PneumaticConsumersDemands.SmartRegenFractionTotalAirDemand, + OverrunUtilisationForCompressionFraction = Constants.BusAuxiliaries.PneumaticConsumersDemands.OverrunUtilisationForCompressionFraction, + DoorOpening = Constants.BusAuxiliaries.PneumaticConsumersDemands.DoorOpening, + StopBrakeActuation = Constants.BusAuxiliaries.PneumaticConsumersDemands.StopBrakeActuation, + }; + } } } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterTruck.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterTruck.cs index 3f9c53887a..9d97888c04 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterTruck.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterTruck.cs @@ -108,7 +108,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter retVal.AirDensity = DeclarationData.AirDensity; retVal.VIN = data.VIN; retVal.ManufacturerAddress = data.ManufacturerAddress; - retVal.LegislativeClass = data.LegislativeClass; +// retVal.LegislativeClass = data.LegislativeClass; retVal.ZeroEmissionVehicle = data.ZeroEmissionVehicle; retVal.SleeperCab = data.SleeperCab; retVal.TrailerGrossVehicleWeight = mission.Trailer.Sum(t => t.TrailerGrossVehicleWeight).DefaultIfNull(0); @@ -606,58 +606,6 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter }; } - public virtual ISSMInputs CreateSSMModelParameters(IVehicleData vehicleData, IFuelProperties heatingFuel) - { - return new SSMInputs(vehicleData, null, heatingFuel) { - Technologies = DeclarationData.BusAuxiliaries.SSMTechnologyList, - DefaultConditions = new EnvironmentalConditionMapEntry( - Constants.BusAuxiliaries.SteadyStateModel.DefaultTemperature, - Constants.BusAuxiliaries.SteadyStateModel.DefaultSolar, - 1.0), - EnvironmentalConditionsMap = DeclarationData.BusAuxiliaries.DefaultEnvironmentalConditions, - HeatingBoundaryTemperature = Constants.BusAuxiliaries.SteadyStateModel.HeatingBoundaryTemperature, - CoolingBoundaryTemperature = Constants.BusAuxiliaries.SteadyStateModel.CoolingBoundaryTemperature, - HighVentilation = Constants.BusAuxiliaries.SteadyStateModel.HighVentilation, - LowVentilation = Constants.BusAuxiliaries.SteadyStateModel.LowVentilation, - SpecificVentilationPower = Constants.BusAuxiliaries.SteadyStateModel.SpecificVentilationPower, - - // TODO! MQ 2019-19-29 Compressor Type and CompressorCapacity from input data? - CompressorType = ACCompressorType.TwoStage, // "2-stage", - CompressorCapacity = 18.SI(Unit.SI.Kilo.Watt).Cast<Watt>(), - - AuxHeaterEfficiency = Constants.BusAuxiliaries.SteadyStateModel.AuxHeaterEfficiency, - FuelFiredHeaterPower = Constants.BusAuxiliaries.SteadyStateModel.FuelFiredHeaterPower, - FuelEnergyToHeatToCoolant = Constants.BusAuxiliaries.Heater.FuelEnergyToHeatToCoolant, - CoolantHeatTransferredToAirCabinHeater = Constants.BusAuxiliaries.Heater.CoolantHeatTransferredToAirCabinHeater, - GFactor = Constants.BusAuxiliaries.SteadyStateModel.GFactor, - VentilationOnDuringHeating = true, - VentilationWhenBothHeatingAndACInactive = true, - VentilationDuringAC = true, - VentilationDuringHeating = VentilationLevel.High, - VentilationDuringCooling = VentilationLevel.High, - VentilationFlowSettingWhenHeatingAndACInactive = VentilationLevel.High, - MaxPossibleBenefitFromTechnologyList = - Constants.BusAuxiliaries.SteadyStateModel.MaxPossibleBenefitFromTechnologyList, - }; - } - public virtual IPneumaticsConsumersDemand CreatePneumaticAuxConfig(RetarderType retarderType) - { - return new PneumaticsConsumersDemand() { - AdBlueInjection = Constants.BusAuxiliaries.PneumaticConsumersDemands.AdBlueInjection, - AirControlledSuspension = Constants.BusAuxiliaries.PneumaticConsumersDemands.AirControlledSuspension, - Braking = retarderType == RetarderType.None ? - Constants.BusAuxiliaries.PneumaticConsumersDemands.BrakingNoRetarder : - Constants.BusAuxiliaries.PneumaticConsumersDemands.BrakingWithRetarder, - BreakingWithKneeling = Constants.BusAuxiliaries.PneumaticConsumersDemands.BreakingAndKneeling, - DeadVolBlowOuts = Constants.BusAuxiliaries.PneumaticConsumersDemands.DeadVolBlowOuts, - DeadVolume = Constants.BusAuxiliaries.PneumaticConsumersDemands.DeadVolume, - NonSmartRegenFractionTotalAirDemand = Constants.BusAuxiliaries.PneumaticConsumersDemands.NonSmartRegenFractionTotalAirDemand, - SmartRegenFractionTotalAirDemand = Constants.BusAuxiliaries.PneumaticConsumersDemands.SmartRegenFractionTotalAirDemand, - OverrunUtilisationForCompressionFraction = Constants.BusAuxiliaries.PneumaticConsumersDemands.OverrunUtilisationForCompressionFraction, - DoorOpening = Constants.BusAuxiliaries.PneumaticConsumersDemands.DoorOpening, - StopBrakeActuation = Constants.BusAuxiliaries.PneumaticConsumersDemands.StopBrakeActuation, - }; - } } } diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeBusVectoRunDataFactory.cs index d54c4074d6..3ad2a7e027 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeBusVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeBusVectoRunDataFactory.cs @@ -81,7 +81,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { AxleGearData = _axlegearData, AngledriveData = _angledriveData, Aux = DataAdapter.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData, - vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass, vehicle.Length ?? mission.VehicleLength), + vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass, vehicle.Length ?? mission.VehicleLength), Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()), Retarder = _retarderData, DriverData = _driverdata, @@ -95,6 +95,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { }; simulationRunData.EngineData.FuelMode = modeIdx; simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass; + simulationRunData.BusAuxiliaries = _dao.CreateBusAuxiliariesData(InputDataProvider.JobInputData.Vehicle, simulationRunData); + yield return simulationRunData; } } diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs index d660f42410..5670c83882 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs @@ -231,7 +231,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl loading), AirdragData = AirdragData, DriverData = null, - AdvancedAux = null, + BusAuxiliaries = null, Retarder = RetarderData, PTO = PTOTransmissionData, Report = Report, diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs index aeb35bc788..e2f574e187 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs @@ -97,7 +97,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl AirdragData = dao.CreateAirdragData(vehicle.Components.AirdragInputData, vehicle), DriverData = driver, Aux = dao.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData), - AdvancedAux = dao.CreateAdvancedAuxData(vehicle.Components.AuxiliaryInputData), + BusAuxiliaries = dao.CreateAdvancedAuxData(vehicle.Components.AuxiliaryInputData), Retarder = dao.CreateRetarderData(vehicle.Components.RetarderInputData), PTO = ptoTransmissionData, Cycle = new DrivingCycleProxy(drivingCycle, cycle.Name), diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/AuxiliaryConfig.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/AuxiliaryConfig.cs index 696df4a5cf..07342d1844 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/AuxiliaryConfig.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/AuxiliaryConfig.cs @@ -12,6 +12,7 @@ using System; using Newtonsoft.Json; using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.Utils; namespace TUGraz.VectoCore.Models.BusAuxiliaries { [Serializable()] @@ -28,10 +29,10 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries { public ISSMInputs SSMInputs { get; internal set; } - public IActuationsMap ActuationsMap { get; internal set; } - - public string Cycle { get; internal set; } + //public IActuationsMap ActuationsMap { get; internal set; } + public IActuations Actuations { get; internal set; } + public IVehicleData VehicleData { get; internal set; } public IFuelConsumptionMap FuelMap { get; internal set; } @@ -235,4 +236,6 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries { } } + + } diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs index 45cefda3c5..db784ad843 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs @@ -189,12 +189,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC var run1TotalW = Run1.TotalW(environmentalTemperature, solar); var run2TotalW = Run2.TotalW(environmentalTemperature, solar); - var res = run1TotalW < 0 && run2TotalW < 0 - ? ventilation.VentilationOnDuringHeating && ventilation.VentilationDuringHeating == VentilationLevel.High - ? bc.HighVentPower - : ventilation.VentilationOnDuringHeating && ventilation.VentilationDuringHeating ==VentilationLevel.Low - ? bc.LowVentPower - : 0.SI<Watt>() + var res = run1TotalW < 0 && run2TotalW < 0 && ventilation.VentilationOnDuringHeating + ? bc.VentPower : 0.SI<Watt>(); return res; @@ -239,7 +235,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC return environmentalTemperature < gen.BoundaryConditions.TemperatureCoolingTurnsOff ? 0.SI<Watt>() - : gen.ACSystem.CompressorType.IsElectrical() + : gen.ACSystem.HVACCompressorType.IsElectrical() ? 0.SI<Watt>() : run1TotalW > 0 && run2TotalW > 0 ? VectoMath.Min(run1TotalW, run2TotalW) @@ -262,7 +258,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC var run2TotalW = Run2.TotalW(environmentalTemperature, solar); return environmentalTemperature < gen.BoundaryConditions.TemperatureCoolingTurnsOff ? 0.SI<Watt>() - : gen.ACSystem.CompressorType.IsElectrical() + : gen.ACSystem.HVACCompressorType.IsElectrical() ? run1TotalW > 0 && run2TotalW > 0 ? VectoMath.Min(run1TotalW, run2TotalW) : 0.SI<Watt>() @@ -288,12 +284,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC var run2TotalW = Run2.TotalW(environmentalTemperature, solar); return environmentalTemperature >= gen.BoundaryConditions.TemperatureCoolingTurnsOff && run1TotalW > 0 && - run2TotalW > 0 - ? gen.Ventilation.VentilationDuringAC && gen.Ventilation.VentilationDuringCooling == VentilationLevel.High - ? gen.BoundaryConditions.HighVentPower - : gen.Ventilation.VentilationDuringAC && gen.Ventilation.VentilationDuringCooling == VentilationLevel.Low - ? gen.BoundaryConditions.LowVentPower - : 0.SI<Watt>() + run2TotalW > 0 && gen.Ventilation.VentilationDuringAC + ? gen.BoundaryConditions.VentPower : 0.SI<Watt>(); } @@ -319,13 +311,9 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC return (environmentalTemperature < gen.BoundaryConditions.TemperatureCoolingTurnsOff && run1TotalW > 0 && run2TotalW > 0) || (run1TotalW > 0 && run2TotalW < 0) - ? gen.Ventilation.VentilationWhenBothHeatingAndACInactive && - gen.Ventilation.VentilationFlowSettingWhenHeatingAndACInactive == VentilationLevel.High - ? gen.BoundaryConditions.HighVentPower - : gen.Ventilation.VentilationWhenBothHeatingAndACInactive && - gen.Ventilation.VentilationFlowSettingWhenHeatingAndACInactive == VentilationLevel.Low - ? gen.BoundaryConditions.LowVentPower - : 0.SI<Watt>() + ? gen.Ventilation.VentilationWhenBothHeatingAndACInactive + ? gen.BoundaryConditions.VentPower + : 0.SI<Watt>() : 0.SI<Watt>(); } @@ -386,7 +374,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC // Math.Max(If(gen.AC_CompressorType.ToLower() = "mechanical", tl.CValueVariation, 0), // -gen.BC_MaxPossibleBenefitFromTechnologyList)) - if (gen.ACSystem.CompressorType.IsElectrical()) { + if (gen.ACSystem.HVACCompressorType.IsElectrical()) { return 0; } @@ -408,7 +396,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC // Dim C43 As Double = gen.BC_MaxPossibleBenefitFromTechnologyList // Dim C53 As string = gen.AC_CompressorType - if (gen.ACSystem.CompressorType.IsMechanical()) { + if (gen.ACSystem.HVACCompressorType.IsMechanical()) { return 0; } @@ -534,7 +522,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC var electricalWBaseCurrentResult = VectoMath.Min( - BaseCoolingW_ElectricalCoolingHeating(env.Temperature, env.Solar), genInputs.ACSystem.CompressorCapacity) / + BaseCoolingW_ElectricalCoolingHeating(env.Temperature, env.Solar), genInputs.ACSystem.HVACMaxCoolingPower) / genInputs.ACSystem.COP + BaseHeatingW_ElectricalVentilation(env.Temperature, env.Solar) + BaseCoolingW_ElectricalVentilation(env.Temperature, env.Solar) + BaseVentilationW_ElectricalVentilation(env.Temperature, env.Solar); @@ -553,7 +541,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC // Dim C59 = genInputs.AC_COP var MechanicalWBaseCurrentResult = VectoMath.Min( - BaseCoolingW_Mechanical(env.Temperature, env.Solar), genInputs.ACSystem.CompressorCapacity) / + BaseCoolingW_Mechanical(env.Temperature, env.Solar), genInputs.ACSystem.HVACMaxCoolingPower) / genInputs.ACSystem.COP; return MechanicalWBaseCurrentResult * env.Weighting; @@ -585,7 +573,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC var H94 = BaseCoolingW_ElectricalCoolingHeating(env.Temperature, env.Solar); var H100 = TechListAdjustedCoolingW_ElectricalCoolingHeating; - var C54 = genInputs.ACSystem.CompressorCapacity; + var C54 = genInputs.ACSystem.HVACMaxCoolingPower; var C59 = genInputs.ACSystem.COP; var I93 = BaseHeatingW_ElectricalVentilation(env.Temperature, env.Solar); @@ -607,7 +595,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC var F94 = BaseCoolingW_Mechanical(env.Temperature, env.Solar); var F100 = TechListAdjustedCoolingW_Mechanical; - var C54 = genInputs.ACSystem.CompressorCapacity; + var C54 = genInputs.ACSystem.HVACMaxCoolingPower; var C59 = genInputs.ACSystem.COP; var MechanicalWBaseAdjusted = (VectoMath.Min((F94 * (1 - F100)), C54) / C59); diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs index 2b7d6e234f..4dba035088 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs @@ -203,46 +203,46 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC } // C29 - ( L/H ) --- !! 1/h - public PerSecond HighVentilation { get; set; } + public PerSecond VentilationRate { get; set; } // C30 - ( L/H ) --- !! 1/h - public PerSecond LowVentilation { get; set; } + //public PerSecond LowVentilation { get; set; } // C31 - ( M3/H ) - public CubicMeterPerSecond HighVolumeExchange + public CubicMeterPerSecond VolumeExchange { get { // =D11*C29 - return BusVolume * HighVentilation; + return BusVolume * VentilationRate; } } // C32 - ( M3/H ) - public CubicMeterPerSecond LowVolumeExchange - { - get { - // =C30*D11 - return BusVolume * LowVentilation; - } - } + //public CubicMeterPerSecond LowVolumeExchange + //{ + // get { + // // =C30*D11 + // return BusVolume * LowVentilation; + // } + //} // C33 - ( W ) - public Watt HighVentPower + public Watt VentPower { get { // =C31*C35 - return HighVolumeExchange * SpecificVentilationPower; + return VolumeExchange * SpecificVentilationPower; } } // C34 - ( W ) - public Watt LowVentPower - { - get { - // =C32*C35 - return LowVolumeExchange * SpecificVentilationPower; - } - } + //public Watt LowVentPower + //{ + // get { + // // =C32*C35 + // return LowVolumeExchange * SpecificVentilationPower; + // } + //} // C35 - ( Wh/M3 ) public JoulePerCubicMeter SpecificVentilationPower { get; set; } @@ -299,16 +299,16 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC // C53 - "Continous/2-stage/3-stage/4-stage - public ACCompressorType CompressorType { get; set; } + public ACCompressorType HVACCompressorType { get; set; } // mechanical/electrical public string CompressorTypeDerived { - get { return CompressorType == ACCompressorType.Continuous ? "Electrical" : "Mechanical"; } + get { return HVACCompressorType == ACCompressorType.Continuous ? "Electrical" : "Mechanical"; } } // C54 - ( KW ) - public Watt CompressorCapacity { get; set; } + public Watt HVACMaxCoolingPower { get; set; } // C59 public double COP @@ -316,7 +316,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC get { var cop = 3.5; - switch (CompressorType) { + switch (HVACCompressorType) { case ACCompressorType.TwoStage: break; case ACCompressorType.ThreeStage: case ACCompressorType.FourStage: @@ -345,13 +345,13 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC public bool VentilationDuringAC { get; set; } // C65 - String high/low - public VentilationLevel VentilationFlowSettingWhenHeatingAndACInactive { get; set; } + //public VentilationLevel VentilationFlowSettingWhenHeatingAndACInactive { get; set; } - // C66 - String high/low - public VentilationLevel VentilationDuringHeating { get; set; } + //// C66 - String high/low + //public VentilationLevel VentilationDuringHeating { get; set; } - // C67 - String high/low - public VentilationLevel VentilationDuringCooling { get; set; } + //// C67 - String high/low + //public VentilationLevel VentilationDuringCooling { get; set; } // C70 - ( KW ) diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs index 181c3e28f5..b72931d963 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs @@ -73,7 +73,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC get { var mechAdjusted = SSMDisabled ? 0.SI<Watt>() : Calculate.MechanicalWBaseAdjusted; - if (CompressorCapacityInsufficientWarned == false && (mechAdjusted) / (1000 * SSMInputs.ACSystem.COP) > SSMInputs.ACSystem.CompressorCapacity) { + if (CompressorCapacityInsufficientWarned == false && (mechAdjusted) / (1000 * SSMInputs.ACSystem.COP) > SSMInputs.ACSystem.HVACMaxCoolingPower) { OnMessage(this, "HVAC SSM :AC-Compressor Capacity unable to service cooling, run continues as if capacity was sufficient.", AdvancedAuxiliaryMessageType.Warning); CompressorCapacityInsufficientWarned = true; } diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs index 338379d1bd..dfc07ee4bf 100644 --- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs @@ -40,6 +40,7 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.Reader.ComponentData; +using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC; using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumatics; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; @@ -178,19 +179,27 @@ namespace TUGraz.VectoCore.Models.Declaration } } - - //public static IPneumaticUserInputsConfig DefaultPneumaticUserConfig { get; } - - public static IHVACUserInputsConfig DefaultHVACUserConfig { get; } + public static void SetHVACParameters(SSMInputs ssmInputs, BusHVACSystemConfiguration hvacSystemConfig) + { + switch (hvacSystemConfig) { + case BusHVACSystemConfiguration.Unknown: break; + case BusHVACSystemConfiguration.Configuration1: + case BusHVACSystemConfiguration.Configuration2: + ssmInputs.VentilationRate = Constants.BusAuxiliaries.SteadyStateModel.LowVentilation; + break; + case BusHVACSystemConfiguration.Configuration3: + case BusHVACSystemConfiguration.Configuration4: + case BusHVACSystemConfiguration.Configuration5: + case BusHVACSystemConfiguration.Configuration6: + case BusHVACSystemConfiguration.Configuration7: + case BusHVACSystemConfiguration.Configuration8: + case BusHVACSystemConfiguration.Configuration9: + ssmInputs.VentilationRate = Constants.BusAuxiliaries.SteadyStateModel.HighVentilation; + break; + default: throw new ArgumentOutOfRangeException(nameof(hvacSystemConfig), hvacSystemConfig, null); + } + } - //public static IAuxiliaryConfig DefaultAuxiliaryConfig - //{ - // get { - // return busAuxConfig ?? (busAuxConfig = new AuxiliaryConfig( - // DefaultElectricUserConfig, DefaultPneumaticAuxConfig, DefaultPneumaticUserConfig, DefaultHVACUserConfig, - // SSMDefaultValues)); - // } - //} } public static class Driver diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index df525b09a0..d1b6a5ca25 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -273,7 +273,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl { var conventionalAux = CreateAuxiliaries(data, container); // TODO: MQ 2019-07-30 -- which fuel map for advanced auxiliaries?! - var busAux = new BusAuxiliariesAdapter(container, data.AdvancedAux, data.Cycle.Name, + var busAux = new BusAuxiliariesAdapter(container, data.BusAuxiliaries, data.Cycle.Name, data.VehicleData.TotalVehicleWeight, data.EngineData.Fuels[0].ConsumptionMap, data.EngineData.IdleSpeed, conventionalAux); return busAux; } diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs index 4cb7a43f3a..a23bf4436d 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs @@ -181,7 +181,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl addReportResult: _mode == ExecutionMode.Declaration ? addReportResult : null, writeEngineOnly: _engineOnlyMode, filter: GetModDataFilter(data)) { - WriteAdvancedAux = data.AdvancedAux != null, + WriteAdvancedAux = data.BusAuxiliaries != null, WriteModalResults = _mode != ExecutionMode.Declaration || WriteModalResults }; diff --git a/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs index 58ff6877aa..7767168125 100644 --- a/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs +++ b/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs @@ -190,8 +190,8 @@ namespace TUGraz.VectoCore.OutputData.FileIO retVal["BC_GFactor"] = ssmInputs.BoundaryConditions.GFactor; retVal["BC_HeatingBoundaryTemperature"] = ssmInputs.BoundaryConditions.HeatingBoundaryTemperature.AsDegCelsius; retVal["BC_CoolingBoundaryTemperature"] = ssmInputs.BoundaryConditions.CoolingBoundaryTemperature.AsDegCelsius; - retVal["BC_HighVentilation"] = ssmInputs.BoundaryConditions.HighVentilation.ConvertToPerHour().Value; - retVal["BC_lowVentilation"] = ssmInputs.BoundaryConditions.LowVentilation.ConvertToPerHour().Value; + retVal["BC_VentilationRate"] = ssmInputs.BoundaryConditions.VentilationRate.ConvertToPerHour().Value; + //retVal["BC_lowVentilation"] = ssmInputs.BoundaryConditions.LowVentilation.ConvertToPerHour().Value; retVal["BC_SpecificVentilationPower"] = ssmInputs.BoundaryConditions.SpecificVentilationPower.ConvertToWattHourPerCubicMeter().Value; retVal["BC_AuxHeaterEfficiency"] = ssmInputs.BoundaryConditions.AuxHeaterEfficiency; retVal["BC_GCVDieselOrHeatingOil"] = ssmInputs.BoundaryConditions.GCVDieselOrHeatingOil.ConvertToKiloWattHourPerKilogramm().Value; @@ -199,14 +199,14 @@ namespace TUGraz.VectoCore.OutputData.FileIO retVal["BC_MaxPossibleBenefitFromTechnologyList"] = ssmInputs.BoundaryConditions.MaxPossibleBenefitFromTechnologyList; retVal["EC_EnviromentalTemperature"] = ssmInputs.EnvironmentalConditions.DefaultConditions.Temperature.AsDegCelsius; retVal["EC_Solar"] = ssmInputs.EnvironmentalConditions.DefaultConditions.Solar.Value(); - retVal["AC_CompressorType"] = ssmInputs.ACSystem.CompressorType.ToString(); - retVal["AC_CompressorCapacitykW"] = ssmInputs.ACSystem.CompressorCapacity.ConvertToKiloWatt().Value; + retVal["AC_CompressorType"] = ssmInputs.ACSystem.HVACCompressorType.ToString(); + retVal["AC_CompressorCapacitykW"] = ssmInputs.ACSystem.HVACMaxCoolingPower.ConvertToKiloWatt().Value; retVal["VEN_VentilationOnDuringHeating"] = ssmInputs.Ventilation.VentilationOnDuringHeating; retVal["VEN_VentilationWhenBothHeatingAndACInactive"] = ssmInputs.Ventilation.VentilationWhenBothHeatingAndACInactive; retVal["VEN_VentilationDuringAC"] = ssmInputs.Ventilation.VentilationDuringAC; - retVal["VEN_VentilationFlowSettingWhenHeatingAndACInactive"] = ssmInputs.Ventilation.VentilationFlowSettingWhenHeatingAndACInactive; - retVal["VEN_VentilationDuringHeating"] = ssmInputs.Ventilation.VentilationDuringHeating; - retVal["VEN_VentilationDuringCooling"] = ssmInputs.Ventilation.VentilationDuringCooling; + //retVal["VEN_VentilationFlowSettingWhenHeatingAndACInactive"] = ssmInputs.Ventilation.VentilationFlowSettingWhenHeatingAndACInactive; + //retVal["VEN_VentilationDuringHeating"] = ssmInputs.Ventilation.VentilationDuringHeating; + //retVal["VEN_VentilationDuringCooling"] = ssmInputs.Ventilation.VentilationDuringCooling; retVal["AH_FuelFiredHeaterkW"] = ssmInputs.AuxHeater.FuelFiredHeaterPower.ConvertToKiloWatt().Value; retVal["AH_FuelEnergyToHeatToCoolant"] = ssmInputs.AuxHeater.FuelEnergyToHeatToCoolant; retVal["AH_CoolantHeatTransferredToAirCabinHeater"] = ssmInputs.AuxHeater.CoolantHeatTransferredToAirCabinHeater; diff --git a/VectoCore/VectoCore/Resources/Declaration/VAUXBus/SP-AxleFactor.csv b/VectoCore/VectoCore/Resources/Declaration/VAUXBus/SP-AxleFactor.csv new file mode 100644 index 0000000000..0f0af18bb6 --- /dev/null +++ b/VectoCore/VectoCore/Resources/Declaration/VAUXBus/SP-AxleFactor.csv @@ -0,0 +1,9 @@ +Technology , axle - Heavy Urban , axle - Urban , axle - Suburban , axle - Interurban , axle - Coach +Fixed displacement , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 +Fixed displacement with elec. control , 1.00 , 1.00 , 1.00 , 1.00 , 1.00 +Dual displacement with mech. control , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 +Dual displacement with elec. control , 0.85 , 0.85 , 0.85 , 0.85 , 0.85 +Variable displacement mech. controlled , 0.75 , 0.75 , 0.75 , 0.75 , 0.75 +Variable displacement elec. controlled , 0.60 , 0.60 , 0.60 , 0.60 , 0.60 +Electric driven pump , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 +Full electric steering gear , 0.10 , 0.10 , 0.10 , 0.10 , 0.10 \ No newline at end of file diff --git a/VectoCore/VectoCore/Utils/ProviderExtensions.cs b/VectoCore/VectoCore/Utils/ProviderExtensions.cs index 8394d613c4..3d5057bd5e 100644 --- a/VectoCore/VectoCore/Utils/ProviderExtensions.cs +++ b/VectoCore/VectoCore/Utils/ProviderExtensions.cs @@ -47,7 +47,7 @@ namespace TUGraz.VectoCore.Utils VectoRunData data) { // aux --> engine - if (data.AdvancedAux != null) { + if (data.BusAuxiliaries != null) { engine.Connect(PowertrainBuilder.CreateAdvancedAuxiliaries(data, container).Port()); } else { if (data.Aux != null) { diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index 2c8fea0e04..9ce0961b39 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -276,6 +276,7 @@ <Compile Include="InputData\Reader\DataObjectAdapter\IDeclarationDataAdapter.cs" /> <Compile Include="InputData\Reader\Impl\AbstractDeclarationVectoRunDataFactory.cs" /> <Compile Include="InputData\Reader\Impl\DeclarationModeBusVectoRunDataFactory.cs" /> + <Compile Include="Models\BusAuxiliaries\Actuations.cs" /> <Compile Include="Models\BusAuxiliaries\AdvancedAuxiliaries.cs" /> <Compile Include="Models\BusAuxiliaries\AuxiliaryConfig.cs" /> <Compile Include="Models\BusAuxiliaries\DownstreamModules\Impl\AbstractModule.cs" /> @@ -774,9 +775,6 @@ <EmbeddedResource Include="Resources\XSD\VectoMonitoring.xsd"> <SubType>Designer</SubType> </EmbeddedResource> - <EmbeddedResource Include="Resources\XSD\VectoDeclarationDefinitions.2.3_DF.xsd"> - <SubType>Designer</SubType> - </EmbeddedResource> <EmbeddedResource Include="Resources\XSD\VectoOutputCustomer.0.8.xsd"> <SubType>Designer</SubType> </EmbeddedResource> @@ -799,24 +797,20 @@ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <EmbeddedResource Include="Resources\Declaration\Buses\DefaultActuationsMap.APAC" /> - <EmbeddedResource Include="Resources\Declaration\Buses\DEFAULT_1-Cylinder_1-Stage_393ccm.ACMP" /> - <EmbeddedResource Include="Resources\Declaration\Buses\DEFAULT_2-Cylinder_1-Stage_650ccm.ACMP" /> - <EmbeddedResource Include="Resources\Declaration\Buses\DEFAULT_2-Cylinder_2-Stage_398ccm.ACMP" /> - <EmbeddedResource Include="Resources\Declaration\Buses\DEFAULT_3-Cylinder_2-Stage_598ccm.ACMP" /> <EmbeddedResource Include="Resources\Declaration\HeavyBusSegmentationTable.csv" /> <EmbeddedResource Include="Resources\Declaration\VACC\Bus.vacc" /> - <EmbeddedResource Include="Resources\XSD\VectoDeclarationDefinitions.2.4_Tyre.xsd"> - <SubType>Designer</SubType> - </EmbeddedResource> - <EmbeddedResource Include="Resources\XSD\VectoDeclarationDefinitions.2.5_Gearbox.xsd"> - <SubType>Designer</SubType> - </EmbeddedResource> <EmbeddedResource Include="Resources\XSD\VectoDeclarationDefinitions.2.6_Buses.xsd"> <SubType>Designer</SubType> </EmbeddedResource> <EmbeddedResource Include="Resources\Declaration\VAUXBus\SP-Axles.csv" /> - <EmbeddedResource Include="Resources\Declaration\VAUXBus\SP-AxleFactor.csv" /> - <EmbeddedResource Include="Resources\Declaration\VAUXBus\SP-TubingFactor.csv" /> + <EmbeddedResource Include="Resources\Declaration\VAUXBus\SP-Factors.csv" /> + <EmbeddedResource Include="Resources\Declaration\VAUXBus\DEFAULT_1-Cylinder_1-Stage_393ccm.ACMP" /> + <EmbeddedResource Include="Resources\Declaration\VAUXBus\DEFAULT_2-Cylinder_1-Stage_650ccm.ACMP" /> + <EmbeddedResource Include="Resources\Declaration\VAUXBus\DEFAULT_2-Cylinder_2-Stage_398ccm.ACMP" /> + <EmbeddedResource Include="Resources\Declaration\VAUXBus\DEFAULT_3-Cylinder_2-Stage_598ccm.ACMP" /> + <EmbeddedResource Include="Resources\XSD\VectoDeclarationDefinitions.2.3_DEV.xsd"> + <SubType>Designer</SubType> + </EmbeddedResource> <None Include="Utils\VectoVersionCore.tt"> <Generator>TextTemplatingFileGenerator</Generator> <LastGenOutput>VectoVersionCore.cs</LastGenOutput> diff --git a/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs b/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs index b1202355f3..678357f581 100644 --- a/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs +++ b/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs @@ -103,7 +103,7 @@ namespace TUGraz.VectoCore.Tests.Integration EngineData = engineData, SimulationType = SimulationType.DistanceCycle, Cycle = cycleData, - AdvancedAux = BusAuxiliaryInputData.ReadBusAuxiliaries(AdvancedAuxFile, vehicleData) + BusAuxiliaries = BusAuxiliaryInputData.ReadBusAuxiliaries(AdvancedAuxFile, vehicleData) }; container.RunData = runData; cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy())) @@ -116,7 +116,7 @@ namespace TUGraz.VectoCore.Tests.Integration .AddComponent(new Clutch(container, engineData)) .AddComponent(engine); - var aux = new BusAuxiliariesAdapter(container, runData.AdvancedAux, "Coach", + var aux = new BusAuxiliariesAdapter(container, runData.BusAuxiliaries, "Coach", vehicleData.TotalVehicleWeight, engineData.Fuels.First().ConsumptionMap, engineData.IdleSpeed); engine.Connect(aux.Port()); -- GitLab