From 5b77b8df8259991bb04587562742004eaa2e305e Mon Sep 17 00:00:00 2001 From: "VKMTHD\\franzjosefkober" <franz.josef.kober@ivt.tugraz.at> Date: Wed, 3 Mar 2021 18:13:09 +0100 Subject: [PATCH] added additional bus auxiliaries interface properties --- .../VectoCommon/BusAuxiliaries/ISSMInputs.cs | 85 +++++++++++++++++++ .../InputData/DeclarationInputData.cs | 30 +++++-- .../Resources/XMLNames.Designer.cs | 63 ++++++++++++++ .../VectoCommon/Resources/XMLNames.resx | 21 +++++ .../FileIO/JSON/JSONComponentInputData.cs | 5 +- .../InputData/FileIO/JSON/JSONSubComponent.cs | 13 ++- .../InputData/FileIO/JSON/JSONVehicleData.cs | 5 +- ...MLDeclarationBusAuxiliariesDataProvider.cs | 55 ++++++++++++ .../XMLDeclarationVehicleDataProvider.cs | 11 +-- .../XMLEngineeringVehicleDataProvider.cs | 10 +-- .../Reader/Impl/CombinedBusAuxiliaries.cs | 7 ++ .../XML/XMLMultistageBusInputTest.cs | 8 +- 12 files changed, 280 insertions(+), 33 deletions(-) diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs index cb7d34a106..52434649c8 100644 --- a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs +++ b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs @@ -186,4 +186,89 @@ namespace TUGraz.VectoCommon.BusAuxiliaries double FuelEnergyToHeatToCoolant { get; } double CoolantHeatTransferredToAirCabinHeater { get; } } + + + public enum HeatPumpType + { + none, + R_744, + non_R_744_2_stage, + non_R_744_3_stage, + non_R_744_4_stage, + non_R_744_continuous + } + + public static class HeatPumpTypeHelper + { + private const string NONE = "none"; + private const string R_744 = "R-744"; + private const string NON_R_744_2_STAGE = "non R-744 2-stage"; + private const string NON_R_744_3_STAGE = "non R-744 3-stage"; + private const string NON_R_744_4_STAGE = "non R-744 4-stage"; + private const string NON_R_744_CONTINUOUS = "non R-744 continuous"; + + public static HeatPumpType? Parse(string parse) + { + switch (parse) + { + case NONE: return HeatPumpType.none; + case R_744: return HeatPumpType.R_744; + case NON_R_744_2_STAGE: return HeatPumpType.non_R_744_2_stage; + case NON_R_744_3_STAGE: return HeatPumpType.non_R_744_3_stage; + case NON_R_744_4_STAGE: return HeatPumpType.non_R_744_4_stage; + case NON_R_744_CONTINUOUS: return HeatPumpType.non_R_744_continuous; + default: return null; + } + } + + public static string GetLabel(this HeatPumpType type) + { + switch (type) { + case HeatPumpType.none: return NONE; + case HeatPumpType.R_744: return R_744; + case HeatPumpType.non_R_744_2_stage: return NON_R_744_2_STAGE; + case HeatPumpType.non_R_744_3_stage: return NON_R_744_3_STAGE; + case HeatPumpType.non_R_744_4_stage: return NON_R_744_4_STAGE; + case HeatPumpType.non_R_744_continuous: return NON_R_744_CONTINUOUS; + default: return null; + } + } + } + + + public enum HeatPumpMode + { + heating, + heating_and_cooling, + cooling + } + + public static class HeatPumpModeHelper + { + private const string HEATING = "heating"; + private const string HEATING_AND_COOLING = "heating_and_cooling"; + private const string COOLING = "cooling"; + + public static HeatPumpMode? Parse(string parse) + { + switch (parse) + { + case HEATING: return HeatPumpMode.heating; + case HEATING_AND_COOLING: return HeatPumpMode.heating_and_cooling; + case COOLING: return HeatPumpMode.cooling; + default: return null; + } + } + + public static string GetLabel(this HeatPumpMode type) + { + switch (type) + { + case HeatPumpMode.heating: return HEATING; + case HeatPumpMode.heating_and_cooling: return HEATING_AND_COOLING; + case HeatPumpMode.cooling: return COOLING; + default: return null; + } + } + } } diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index 99bdd3c652..f5601dd153 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -862,22 +862,36 @@ namespace TUGraz.VectoCommon.InputData { BusHVACSystemConfiguration SystemConfiguration { get; } - ACCompressorType CompressorTypeDriver { get; } - ACCompressorType CompressorTypePassenger { get; } + HeatPumpType? HeatPumpTypeDriverCompartment { get; } + + HeatPumpMode? HeatPumpModeDriverCompartment { get; } + + HeatPumpType? HeatPumpTypePassengerCompartment { get; } + + HeatPumpMode? HeatPumpModePassengerCompartment { get; } + + ACCompressorType CompressorTypeDriver { get; }// + ACCompressorType CompressorTypePassenger { get; }// Watt AuxHeaterPower { get; } bool DoubleGlazing { get; } - bool HeatPump { get; } + bool HeatPump { get; } // + + bool AdjustableAuxiliaryHeater { get; } - bool AdjustableCoolantThermostat { get; } + bool SeparateAirDistributionDucts { get; } - bool AdjustableAuxiliaryHeater { get; } + bool WaterElectricHeater { get; } - bool EngineWasteGasHeatExchanger { get; } + bool AirElectricHeater { get; } - bool SeparateAirDistributionDucts { get; } + bool OtherHeatingTechnology { get; } + + bool AdjustableCoolantThermostat { get; } + + bool EngineWasteGasHeatExchanger { get; } } @@ -940,7 +954,7 @@ namespace TUGraz.VectoCommon.InputData case nameof(StateOfCompletion.completed): return StateOfCompletion.completed; default: - return StateOfCompletion.unknown; + throw new ArgumentOutOfRangeException(); } } } diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs index c18e66c5e5..c67d405baf 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs +++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs @@ -447,6 +447,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to AirElectricHeater. + /// </summary> + public static string Bus_AirElectricHeater { + get { + return ResourceManager.GetString("Bus_AirElectricHeater", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to AirsuspensionControl. /// </summary> @@ -573,6 +582,42 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to HeatPumpModeDriverCompartment. + /// </summary> + public static string Bus_HeatPumpModeDriver { + get { + return ResourceManager.GetString("Bus_HeatPumpModeDriver", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to HeatPumpModePassengerCompartment. + /// </summary> + public static string Bus_HeatPumpModePassenger { + get { + return ResourceManager.GetString("Bus_HeatPumpModePassenger", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to HeatPumpTypeDriverCompartment. + /// </summary> + public static string Bus_HeatPumpTypeDriver { + get { + return ResourceManager.GetString("Bus_HeatPumpTypeDriver", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to HeatPumpTypePassengerCompartment. + /// </summary> + public static string Bus_HeatPumpTypePassenger { + get { + return ResourceManager.GetString("Bus_HeatPumpTypePassenger", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to HeightIntegratedBody. /// </summary> @@ -636,6 +681,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to OtherHeatingTechnology. + /// </summary> + public static string Bus_OtherHeatingTechnology { + get { + return ResourceManager.GetString("Bus_OtherHeatingTechnology", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to PassengerAC. /// </summary> @@ -771,6 +825,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to WaterElectricHeater. + /// </summary> + public static string Bus_WaterElectricHeater { + get { + return ResourceManager.GetString("Bus_WaterElectricHeater", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to ElectricSystem. /// </summary> diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx index e7eaa42680..b8eaad1e3a 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.resx +++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx @@ -1398,4 +1398,25 @@ <data name="Bus_StateOfCompletion" xml:space="preserve"> <value>StateOfCompletion</value> </data> + <data name="Bus_AirElectricHeater" xml:space="preserve"> + <value>AirElectricHeater</value> + </data> + <data name="Bus_HeatPumpModeDriver" xml:space="preserve"> + <value>HeatPumpModeDriverCompartment</value> + </data> + <data name="Bus_HeatPumpModePassenger" xml:space="preserve"> + <value>HeatPumpModePassengerCompartment</value> + </data> + <data name="Bus_HeatPumpTypeDriver" xml:space="preserve"> + <value>HeatPumpTypeDriverCompartment</value> + </data> + <data name="Bus_HeatPumpTypePassenger" xml:space="preserve"> + <value>HeatPumpTypePassengerCompartment</value> + </data> + <data name="Bus_OtherHeatingTechnology" xml:space="preserve"> + <value>OtherHeatingTechnology</value> + </data> + <data name="Bus_WaterElectricHeater" xml:space="preserve"> + <value>WaterElectricHeater</value> + </data> </root> \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs index 27ba8c49b4..d1071c5435 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs @@ -340,10 +340,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON get { return VehicleData.DoorDriveTechnology; } } - public StateOfCompletion StateOfCompletion - { - get { return StateOfCompletion.unknown; } - } + public StateOfCompletion StateOfCompletion { get; } IVehicleComponentsEngineering IVehicleEngineeringInputData.Components { diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs index 43941ecb2e..fe721e9a55 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs @@ -631,17 +631,24 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region Implementation of IHVACBusAuxiliariesDeclarationData public virtual BusHVACSystemConfiguration SystemConfiguration { get; set; } - public virtual ACCompressorType CompressorTypeDriver { get { return ACCompressorType.Unknown; } } + public virtual HeatPumpType? HeatPumpTypeDriverCompartment { get { return null; } } + public virtual HeatPumpMode? HeatPumpModeDriverCompartment { get { return null; } } + public virtual HeatPumpType? HeatPumpTypePassengerCompartment { get{ return null; } } + public virtual HeatPumpMode? HeatPumpModePassengerCompartment { get { return null; } } + public virtual ACCompressorType CompressorTypeDriver { get { return ACCompressorType.Unknown; } } public virtual ACCompressorType CompressorTypePassenger { get { return ACCompressorType.Unknown; } } public virtual Watt AuxHeaterPower { get { return null; } } public virtual bool DoubleGlazing { get { return false; } } public virtual bool HeatPump { get { return false; } } - public virtual bool AdjustableCoolantThermostat { get { return Body["Aux"]?["HVAC"]?.GetEx<bool>("AdjustableCoolantThermostat") ?? false; } } + public bool OtherHeatingTechnology { get; } + public virtual bool AdjustableCoolantThermostat { get { return Body["Aux"]?["HVAC"]?.GetEx<bool>("AdjustableCoolantThermostat") ?? false; } } public virtual bool AdjustableAuxiliaryHeater { get { return false; } } public virtual bool EngineWasteGasHeatExchanger { get { return Body["Aux"]?["HVAC"]?.GetEx<bool>("EngineWasteGasHeatExchanger") ?? false; } } public virtual bool SeparateAirDistributionDucts { get { return false; } } + public virtual bool WaterElectricHeater { get; } + public virtual bool AirElectricHeater { get; } - #endregion + #endregion } diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs index fd97e27524..b857b8ab92 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs @@ -321,10 +321,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public virtual Meter EntranceHeight { get { return null; } } public virtual ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } } - public virtual StateOfCompletion StateOfCompletion - { - get { return StateOfCompletion.unknown; } - } + public virtual StateOfCompletion StateOfCompletion { get; } IVehicleComponentsEngineering IVehicleEngineeringInputData.Components { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs index f5761a1115..3bc719b2a5 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs @@ -168,6 +168,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider get { return BusHVACSystemConfiguration.Unknown; } } + public virtual HeatPumpType? HeatPumpTypeDriverCompartment { get { return null; } } + public virtual HeatPumpMode? HeatPumpModeDriverCompartment { get { return null; } } + public virtual HeatPumpType? HeatPumpTypePassengerCompartment { get { return null; } } + public virtual HeatPumpMode? HeatPumpModePassengerCompartment { get { return null; } } + public virtual ACCompressorType CompressorTypeDriver { get { return ACCompressorType.None; } @@ -193,6 +198,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider get { return false; } } + public virtual bool OtherHeatingTechnology + { + get { return false; } + } + public virtual bool AdjustableCoolantThermostat { get { return GetBool(new[] { "HVAC", "AdjustableCoolantThermostat" }); } @@ -213,6 +223,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider get { return false; } } + public virtual bool WaterElectricHeater + { + get { return false; } + } + public virtual bool AirElectricHeater + { + get { return false; } + } + #endregion } @@ -323,5 +342,41 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public XMLDeclarationCompleteBusAuxiliariesDataProviderV28(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } + + + public override HeatPumpType? HeatPumpTypeDriverCompartment + { + get { return HeatPumpTypeHelper.Parse(GetString(XMLNames.Bus_HeatPumpTypeDriver)); } + } + + public override HeatPumpMode? HeatPumpModeDriverCompartment + { + get { return HeatPumpModeHelper.Parse(GetString(XMLNames.Bus_HeatPumpModeDriver)); } + } + + public override HeatPumpType? HeatPumpTypePassengerCompartment + { + get { return HeatPumpTypeHelper.Parse(GetString(XMLNames.Bus_HeatPumpTypePassenger)); } + } + + public override HeatPumpMode? HeatPumpModePassengerCompartment + { + get { return HeatPumpModeHelper.Parse(GetString(XMLNames.Bus_HeatPumpModePassenger)); } + } + + public override bool WaterElectricHeater + { + get { return GetBool(XMLNames.Bus_WaterElectricHeater); } + } + + public override bool AirElectricHeater + { + get { return GetBool(XMLNames.Bus_AirElectricHeater); } + } + + public override bool OtherHeatingTechnology + { + get { return GetBool(XMLNames.Bus_OtherHeatingTechnology); } + } } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs index 24c582df8a..20e9863570 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs @@ -330,10 +330,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } } - public virtual StateOfCompletion StateOfCompletion - { - get { return StateOfCompletion.unknown; } - } + public virtual StateOfCompletion StateOfCompletion { get; } public virtual IVehicleComponentsDeclaration Components { @@ -1041,10 +1038,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider get { return ConsumerTechnology.Unknown; } } - public StateOfCompletion StateOfCompletion - { - get { return StateOfCompletion.unknown; } - } + public StateOfCompletion StateOfCompletion { get; } + public IVehicleComponentsDeclaration Components { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs index 27a8eced7d..cd1dc4d1d0 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs @@ -129,7 +129,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider get { return false; } } - public virtual bool AirdragModifiedMultistage { get; } + public virtual bool AirdragModifiedMultistage + { + get { return false; } + } public TankSystem? TankSystem { @@ -178,10 +181,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider public virtual Meter Width { get { return null; } } public virtual Meter EntranceHeight { get { return null; } } public ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } } - public virtual StateOfCompletion StateOfCompletion - { - get { return StateOfCompletion.unknown; } - } + public virtual StateOfCompletion StateOfCompletion { get; } IVehicleComponentsDeclaration IVehicleDeclarationInputData.Components { diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/CombinedBusAuxiliaries.cs b/VectoCore/VectoCore/InputData/Reader/Impl/CombinedBusAuxiliaries.cs index 4fde30d1ad..ae858ca918 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/CombinedBusAuxiliaries.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/CombinedBusAuxiliaries.cs @@ -74,15 +74,22 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { #region Implementation of IHVACBusAuxiliariesDeclarationData public BusHVACSystemConfiguration SystemConfiguration { get; } + public HeatPumpType? HeatPumpTypeDriverCompartment { get; } + public HeatPumpMode? HeatPumpModeDriverCompartment { get; } + public HeatPumpType? HeatPumpTypePassengerCompartment { get; } + public HeatPumpMode? HeatPumpModePassengerCompartment { get; } public ACCompressorType CompressorTypeDriver { get; } public ACCompressorType CompressorTypePassenger { get; } public Watt AuxHeaterPower { get; } public bool DoubleGlazing { get; } public bool HeatPump { get; } + public bool OtherHeatingTechnology { get; } public bool AdjustableCoolantThermostat { get; } public bool AdjustableAuxiliaryHeater { get; } public bool EngineWasteGasHeatExchanger { get; } public bool SeparateAirDistributionDucts { get; } + public bool WaterElectricHeater { get; } + public bool AirElectricHeater { get; } #endregion } diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputTest.cs index 1229c746df..a9cd67da5c 100644 --- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputTest.cs @@ -84,7 +84,6 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual("Vecto AirDrag x.y", airdrag.AppVersion); Assert.AreEqual(6.34, airdrag.AirDragArea.Value()); } - private void TestAuxiliariesComponent(IBusAuxiliariesDeclarationData busAux) { @@ -104,10 +103,17 @@ namespace TUGraz.VectoCore.Tests.XML private void TestHVACComponent(IHVACBusAuxiliariesDeclarationData hvacAux) { Assert.AreEqual(BusHVACSystemConfiguration.Configuration0, hvacAux.SystemConfiguration); + Assert.AreEqual(HeatPumpType.none, hvacAux.HeatPumpTypeDriverCompartment); + Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpModeDriverCompartment); + Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpTypePassengerCompartment); + Assert.AreEqual(HeatPumpMode.cooling, hvacAux.HeatPumpModePassengerCompartment); Assert.AreEqual(50, hvacAux.AuxHeaterPower.Value()); Assert.AreEqual(false, hvacAux.DoubleGlazing); Assert.AreEqual(true, hvacAux.AdjustableAuxiliaryHeater); Assert.AreEqual(false, hvacAux.SeparateAirDistributionDucts); + Assert.AreEqual(true, hvacAux.WaterElectricHeater); + Assert.AreEqual(false, hvacAux.AirElectricHeater); + Assert.AreEqual(false, hvacAux.OtherHeatingTechnology); } } } -- GitLab