From 4d6b70888474bd22d039d90739a4e5c2d5d93e6e Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Thu, 2 Apr 2020 11:09:17 +0200 Subject: [PATCH] added technology info for bus aux (ES, HVAC, PS); move door drive technology from aux to vehicle --- VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb | 2 +- VECTO/Input Files/Engine.vb | 1 + VECTO/Input Files/Gearbox.vb | 1 + VECTO/Input Files/MockVehicleInputData.vb | 1 + VECTO/Input Files/Vehicle.vb | 1 + .../Mocks/AlternatorMapMock.vb | 6 +++++ .../Mocks/CompressorMapMock.vb | 6 +++++ .../AveragePneumaticLoadDemandTests.vb | 22 +++++++++---------- .../UnitTests/CompressorMapTests.vb | 20 ++++++++--------- .../BusHVACSystemConfiguration.cs | 9 ++++++++ .../BusAuxiliaries/IAlternatorMap.cs | 3 +++ .../BusAuxiliaries/ICompressorMap.cs | 2 ++ .../VectoCommon/BusAuxiliaries/ISSMInputs.cs | 9 +++++++- .../InputData/DeclarationInputData.cs | 3 ++- .../FileIO/JSON/BusAuxiliaryInputData.cs | 2 +- .../FileIO/JSON/JSONComponentInputData.cs | 4 ++++ .../InputData/FileIO/JSON/JSONVehicleData.cs | 3 +-- ...MLDeclarationBusAuxiliariesDataProvider.cs | 8 ------- .../XMLDeclarationVehicleDataProvider.cs | 11 ++++++++-- .../XMLEngineeringVehicleDataProvider.cs | 1 + .../ComponentData/CompressorMapReader.cs | 8 +++---- .../DeclarationDataAdapterPrimaryBus.cs | 5 +++-- .../DeclarationDataAdapterSingleBus.cs | 2 +- .../Impl/Electrics/AlternatorMap.cs | 8 ++++++- .../Impl/Electrics/CombinedAlternator.cs | 7 ++++++ .../Impl/Electrics/SimpleAlternator.cs | 2 ++ .../DownstreamModules/Impl/HVAC/SSMInputs.cs | 1 + .../Impl/Pneumatics/CompressorMap.cs | 6 ++++- .../OutputData/SummaryDataContainer.cs | 12 ++++++++-- .../Utils/MockDeclarationVehicleInputData.cs | 2 ++ 30 files changed, 120 insertions(+), 48 deletions(-) diff --git a/VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb b/VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb index da243091fc..404ba55f17 100644 --- a/VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb +++ b/VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb @@ -298,7 +298,7 @@ Public Class frmAuxiliaryConfig Dim comp As ICompressorMap Try - comp = CompressorMapReader.ReadFile(FilePathUtils.ResolveFilePath(aauxPath, txtCompressorMap.Text), 1.0) + comp = CompressorMapReader.ReadFile(FilePathUtils.ResolveFilePath(aauxPath, txtCompressorMap.Text), 1.0, "") 'comp.Initialise() ErrorProvider.SetError(txtCompressorMap, String.Empty) Catch ex As Exception diff --git a/VECTO/Input Files/Engine.vb b/VECTO/Input Files/Engine.vb index 8e87c3b3a6..9c94817eec 100644 --- a/VECTO/Input Files/Engine.vb +++ b/VECTO/Input Files/Engine.vb @@ -657,6 +657,7 @@ Public Class DummyVehicle Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight + Public ReadOnly Property DoorDriveTechnology As ConsumerTechnology Implements IVehicleDeclarationInputData.DoorDriveTechnology Public readonly Property Components As IVehicleComponentsDeclaration Implements IVehicleDeclarationInputData.Components get diff --git a/VECTO/Input Files/Gearbox.vb b/VECTO/Input Files/Gearbox.vb index 771b29b61e..1814870345 100644 --- a/VECTO/Input Files/Gearbox.vb +++ b/VECTO/Input Files/Gearbox.vb @@ -845,6 +845,7 @@ Public Class MockEngineeringVehicle Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight + Public ReadOnly Property DoorDriveTechnology As ConsumerTechnology Implements IVehicleDeclarationInputData.DoorDriveTechnology Public Property Components As IVehicleComponentsDeclaration Implements IVehicleDeclarationInputData.Components Public ReadOnly Property XMLSource As XmlNode Implements IVehicleDeclarationInputData.XMLSource diff --git a/VECTO/Input Files/MockVehicleInputData.vb b/VECTO/Input Files/MockVehicleInputData.vb index 1cca56259f..701d1c3d8c 100644 --- a/VECTO/Input Files/MockVehicleInputData.vb +++ b/VECTO/Input Files/MockVehicleInputData.vb @@ -49,6 +49,7 @@ Public Class MockVehicleInputData Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight + Public ReadOnly Property DoorDriveTechnology As ConsumerTechnology Implements IVehicleDeclarationInputData.DoorDriveTechnology Public Property Components As IVehicleComponentsDeclaration Implements IVehicleDeclarationInputData.Components Public ReadOnly Property XMLSource As XmlNode Implements IVehicleDeclarationInputData.XMLSource End Class \ No newline at end of file diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb index 828418783b..f828420273 100644 --- a/VECTO/Input Files/Vehicle.vb +++ b/VECTO/Input Files/Vehicle.vb @@ -427,6 +427,7 @@ Public Class Vehicle Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight + Public ReadOnly Property DoorDriveTechnology As ConsumerTechnology Implements IVehicleDeclarationInputData.DoorDriveTechnology Public ReadOnly Property IVehicleEngineeringInputData_Components As IVehicleComponentsEngineering Implements IVehicleEngineeringInputData.Components get diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/AlternatorMapMock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/AlternatorMapMock.vb index 9742a349e1..dfa0194b82 100644 --- a/VECTOAux/VectoAuxiliariesTests/Mocks/AlternatorMapMock.vb +++ b/VECTOAux/VectoAuxiliariesTests/Mocks/AlternatorMapMock.vb @@ -21,6 +21,12 @@ Namespace Mocks Return 0.0 End Function + Public ReadOnly Property Technologies As IList(Of String) Implements IAlternatorMap.Technologies + get + Return New List(Of string) + End Get + End Property + public ReadOnly property Source As String Implements IAlternatorMap.Source get Return "" diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb index 03ce403cbe..ad762131d3 100644 --- a/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb +++ b/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb @@ -27,6 +27,12 @@ Namespace Mocks Return 0.01.SI(Unit.SI.Watt.Per.Liter.Per.Hour).Cast (Of JoulePerNormLiter) End Function + Public ReadOnly Property Technology As String Implements ICompressorMap.Technology + get + Return "" + End Get + End Property + Public readonly property Source As String Implements ICompressorMap.Source get return "" diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb index 49bcc5ba19..baa50fd3d7 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb @@ -73,7 +73,7 @@ Namespace UnitTests Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission) - Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0) + Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "") Dim auxCfg = Utils.GetAuxTestConfig() @@ -93,7 +93,7 @@ Namespace UnitTests initialise() Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission) - Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0) + Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "") 'psCompressorMap.Initialise() @@ -117,7 +117,7 @@ Namespace UnitTests initialise() Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission) - Dim psCompressorMap =CompressorMapReader.ReadFile(_compressorMapPath, 1.0) + Dim psCompressorMap =CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "") 'psCompressorMap.Initialise() @@ -144,7 +144,7 @@ Namespace UnitTests _defaultInputConfig.CompressorGearEfficiency = 0.8 Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission) - Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0) + Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "") 'psCompressorMap.Initialise() @@ -166,7 +166,7 @@ Namespace UnitTests initialise() Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission) - Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0) + Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "") 'psCompressorMap.Initialise() @@ -195,7 +195,7 @@ Namespace UnitTests _defaultInputConfig.SmartRegeneration = False Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission) - Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0) + Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "") 'psCompressorMap.Initialise() @@ -222,7 +222,7 @@ Namespace UnitTests '_defaultInputConfig.RetarderBrake = False Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.None) - Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0) + Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "") 'psCompressorMap.Initialise() @@ -250,7 +250,7 @@ Namespace UnitTests _defaultInputConfig.KneelingHeight = 100.SI(Unit.si.Milli.Meter).Cast (Of Meter) Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission) - Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0) + Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "") 'psCompressorMap.Initialise() @@ -275,7 +275,7 @@ Namespace UnitTests _defaultInputConfig.AirSuspensionControl = ConsumerTechnology.Mechanically Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission) - Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0) + Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "") 'psCompressorMap.Initialise() @@ -302,7 +302,7 @@ Namespace UnitTests _defaultInputConfig.AdBlueDosing = ConsumerTechnology.Pneumatically Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission) - Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0) + Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "") 'psCompressorMap.Initialise() @@ -329,7 +329,7 @@ Namespace UnitTests _defaultInputConfig.Doors = ConsumerTechnology.Electrically Dim psAuxConfig = New DeclarationDataAdapterPrimaryBus().CreatePneumaticAuxConfig(RetarderType.LossesIncludedInTransmission) - Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0) + Dim psCompressorMap = CompressorMapReader.ReadFile(_compressorMapPath, 1.0, "") Dim auxConfig As IAuxiliaryConfig = GetAuxConfig(psAuxConfig) diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/CompressorMapTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/CompressorMapTests.vb index dd6ad116e5..f2a8cdc1af 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/CompressorMapTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/CompressorMapTests.vb @@ -23,7 +23,7 @@ Namespace UnitTests Private Function GetInitialiseMap() As ICompressorMap Dim path As String = GOODMAP - Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0) + Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0, "") 'target.Initialise() Return target End Function @@ -39,7 +39,7 @@ Namespace UnitTests Public Sub CreateNewCompressorMapInstanceTest() Dim pat As String = "test" Assert.That(Sub() - Dim target As ICompressorMap = CompressorMapReader.ReadFile(pat, 1.0) + Dim target As ICompressorMap = CompressorMapReader.ReadFile(pat, 1.0, "") end sub, throws.instanceof(of Vectoexception)) End Sub @@ -56,7 +56,7 @@ Namespace UnitTests 'Dim target As ICompressorMap = CompressorMapReader.ReadFile(path) Assert.That(sub() - dim tmp = CompressorMapReader.ReadFile(path, 1.0) + dim tmp = CompressorMapReader.ReadFile(path, 1.0, "") end sub, Throws.InstanceOf (of VectoException)) End Sub @@ -65,7 +65,7 @@ Namespace UnitTests Dim path As String = INVALIDNUMBEROFCOLUMNS Assert.That(Sub() - Dim target = CompressorMapReader.ReadFile(path, 1.0) + Dim target = CompressorMapReader.ReadFile(path, 1.0, "") End Sub, Throws.InstanceOf (Of VectoException)) End Sub @@ -74,7 +74,7 @@ Namespace UnitTests Dim path As String = INVALIDRPMMAP Assert.That(Sub() - Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0) + Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0, "") End Sub, Throws.InstanceOf (Of VectoException)) End Sub @@ -83,7 +83,7 @@ Namespace UnitTests Dim path As String = INVALIDFLOWRATEMAP Assert.That(Sub() - Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0) + Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0, "") End Sub, Throws.InstanceOf (Of VectoException)) End Sub @@ -92,7 +92,7 @@ Namespace UnitTests Dim path As String = INVALIDPOWERCOMPRESSORONMAP Assert.That(Sub() - Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0) + Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0, "") End Sub, Throws.InstanceOf (Of VectoException)) End Sub @@ -101,7 +101,7 @@ Namespace UnitTests Dim path As String = INVALIDPOWERCOMPRESSOROFFMAP Assert.That(Sub() - Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0) + Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0, "") End Sub, Throws.InstanceOf (Of VectoException)) End Sub @@ -110,7 +110,7 @@ Namespace UnitTests Dim path As String = INSSUFICIENTROWSMAP Assert.That(Sub() - Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0) + Dim target As ICompressorMap = CompressorMapReader.ReadFile(path, 1.0, "") End Sub, Throws.InstanceOf (Of VectoException)) End Sub @@ -153,7 +153,7 @@ Namespace UnitTests <Test()> Public Sub InterpMiddle() - Dim target As ICompressorMap = CompressorMapReader.ReadFile(GOODMAP, 1.0) + Dim target As ICompressorMap = CompressorMapReader.ReadFile(GOODMAP, 1.0, "") 'Assert.IsTrue(target.Initialise()) Dim actual = target.Interpolate(1750.RPMtoRad()).FlowRate diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs b/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs index c0309ba539..e40f28a280 100644 --- a/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs +++ b/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs @@ -23,5 +23,14 @@ namespace TUGraz.VectoCommon.BusAuxiliaries { { return (Prefix + text).ParseEnum<BusHVACSystemConfiguration>(); } + + public static string GetName(this BusHVACSystemConfiguration auxCfg) + { + if (auxCfg == BusHVACSystemConfiguration.Unknown) { + return "unknonwn"; + } + + return auxCfg.ToString().Replace(Prefix, ""); + } } } \ No newline at end of file diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IAlternatorMap.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IAlternatorMap.cs index 08b7359015..748ac019dd 100644 --- a/VectoCommon/VectoCommon/BusAuxiliaries/IAlternatorMap.cs +++ b/VectoCommon/VectoCommon/BusAuxiliaries/IAlternatorMap.cs @@ -9,6 +9,7 @@ // // See the LICENSE.txt for the specific language governing permissions and limitations. +using System.Collections.Generic; using TUGraz.VectoCommon.Utils; namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.Electrics @@ -25,6 +26,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.El /// <remarks></remarks> double GetEfficiency(PerSecond rpm, Ampere currentDemand); + IList<string> Technologies { get; } + string Source { get; } } } diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/ICompressorMap.cs b/VectoCommon/VectoCommon/BusAuxiliaries/ICompressorMap.cs index 7d8e132e17..dc45c9d954 100644 --- a/VectoCommon/VectoCommon/BusAuxiliaries/ICompressorMap.cs +++ b/VectoCommon/VectoCommon/BusAuxiliaries/ICompressorMap.cs @@ -52,6 +52,8 @@ namespace TUGraz.VectoCommon.BusAuxiliaries // Returns Average Power Demand Per Compressor Unit FlowRate JoulePerNormLiter GetAveragePowerDemandPerCompressorUnitFlowRate(); + string Technology { get; } + string Source { get; } } diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs index c5f46d8b7a..593ccda428 100644 --- a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs +++ b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs @@ -22,6 +22,8 @@ namespace TUGraz.VectoCommon.BusAuxiliaries IVentilation Ventilation { get; } IAuxHeater AuxHeater { get; } + + string HVACTechnology { get; } string Source { get; } } @@ -128,10 +130,15 @@ namespace TUGraz.VectoCommon.BusAuxiliaries case ACCompressorType.TwoStage: return "2-stage"; case ACCompressorType.ThreeStage: return "3-stage"; case ACCompressorType.FourStage: return "4-stage"; - default: return type.ToString(); + default: return type.ToString().ToLowerInvariant(); } } + public static string GetName(this ACCompressorType type) + { + return type.ToString(); + } + public static bool IsElectrical(this ACCompressorType type) { return type == ACCompressorType.Continuous; diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index a4c0b27b38..4212b3f8f8 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -182,6 +182,8 @@ namespace TUGraz.VectoCommon.InputData Meter EntranceHeight { get; } + ConsumerTechnology DoorDriveTechnology { get; } + // components IVehicleComponentsDeclaration Components { get; } @@ -736,7 +738,6 @@ namespace TUGraz.VectoCommon.InputData { ConsumerTechnology AirsuspensionControl { get; } ConsumerTechnology AdBlueDosing { get; } - ConsumerTechnology DoorDriveTechnology { get; } } public interface IHVACBusAuxiliariesDeclarationData diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs index 1ffff7ba75..f7c9d94272 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs @@ -152,7 +152,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON pneumaticUserInputsConfig.CompressorGearRatio = puData.GetEx<double>("CompressorGearRatio"); var file = puData.GetEx<string>("CompressorMap"); if (!string.IsNullOrWhiteSpace(file)) { - pneumaticUserInputsConfig.CompressorMap = CompressorMapReader.ReadFile(Path.Combine(baseDir, file), 1.0); + pneumaticUserInputsConfig.CompressorMap = CompressorMapReader.ReadFile(Path.Combine(baseDir, file), 1.0, ""); } pneumaticUserInputsConfig.Doors = ConsumerTechnologyHelper.Parse(puData.GetEx<string>("Doors")); pneumaticUserInputsConfig.KneelingHeight = diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs index 083d03a68d..33eda91bd1 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs @@ -249,6 +249,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public Meter Length { get { return VehicleData.Length; } } public Meter Width { get { return VehicleData.Width; } } public Meter EntranceHeight { get { return null; } } + public ConsumerTechnology DoorDriveTechnology + { + get { return VehicleData.DoorDriveTechnology; } + } IVehicleComponentsEngineering IVehicleEngineeringInputData.Components { diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs index 53cb71627c..4ee3e8ceca 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs @@ -196,8 +196,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON ConsumerTechnology.Unknown; } } - public virtual ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } } - #endregion @@ -373,6 +371,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } public virtual Meter EntranceHeight { get { return null; } } + public virtual ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } } 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 a949d1a3d6..c760303597 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs @@ -129,14 +129,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider } } - public virtual ConsumerTechnology DoorDriveTechnology - { - get { - return ConsumerTechnologyHelper.Parse( - GetString(new[] { XMLNames.BusAux_PneumaticSystem, XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology })); - } - } - #endregion #region Implementation of IPneumaticSupplyDeclarationData diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs index ea7c167071..e952fea85c 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs @@ -322,6 +322,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider get { return null; } } + public virtual ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } } + public virtual IVehicleComponentsDeclaration Components { get { return _components ?? (_components = ComponentReader.ComponentInputData); } @@ -858,9 +860,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider get { return GetDouble(XMLNames.Bus_EntranceHeight).SI<Meter>(); } } - public virtual string DoorDriveTechnology + public override ConsumerTechnology DoorDriveTechnology { - get { return GetString(XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology); } + get { return ConsumerTechnologyHelper.Parse(GetString(XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology)); } } @@ -998,6 +1000,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public Meter EntranceHeight { get; } + public virtual ConsumerTechnology DoorDriveTechnology + { + get { return ConsumerTechnology.Unknown; } + } + public IVehicleComponentsDeclaration Components { get { return _components ?? (_components = ComponentReader.ComponentInputData); } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs index 0734e05b54..77f01061df 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs @@ -174,6 +174,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; } } IVehicleComponentsDeclaration IVehicleDeclarationInputData.Components { diff --git a/VectoCore/VectoCore/InputData/Reader/ComponentData/CompressorMapReader.cs b/VectoCore/VectoCore/InputData/Reader/ComponentData/CompressorMapReader.cs index 4d8654de10..93e7c02fdd 100644 --- a/VectoCore/VectoCore/InputData/Reader/ComponentData/CompressorMapReader.cs +++ b/VectoCore/VectoCore/InputData/Reader/ComponentData/CompressorMapReader.cs @@ -14,14 +14,14 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData { public static readonly string[] Header = new[] { Fields.RPM, Fields.FlowRate, Fields.PowerOn, Fields.PowerOff }; - public static ICompressorMap ReadFile(string filename, double dragCurveFactorClutch) + public static ICompressorMap ReadFile(string filename, double dragCurveFactorClutch, string technology) { - return new CompressorMap(Create(VectoCSVFile.Read(filename), dragCurveFactorClutch), Path.GetFullPath(filename)); + return new CompressorMap(Create(VectoCSVFile.Read(filename), dragCurveFactorClutch), technology, Path.GetFullPath(filename)); } - public static ICompressorMap ReadStream(Stream stream, double dragCurveFactorClutch, string source = null) + public static ICompressorMap ReadStream(Stream stream, double dragCurveFactorClutch, string technology, string source = null) { - return new CompressorMap(Create(VectoCSVFile.ReadStream(stream), dragCurveFactorClutch), source); + return new CompressorMap(Create(VectoCSVFile.ReadStream(stream), dragCurveFactorClutch), technology, source); } public static IList<CompressorMapValues> Create(DataTable data, double dragCurveFactorClutch) diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs index 5812c91ea9..691e6fa943 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs @@ -102,7 +102,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter SmartElectrical = busAux.ElectricSupply.SmartElectrics, AverageCurrentDemandInclBaseLoad = currentDemand.Item1, AverageCurrentDemandWithoutBaseLoad = currentDemand.Item2, - AlternatorMap = new SimpleAlternator(CalculateAlternatorEfficiency(busAux.ElectricSupply.Alternators)), + AlternatorMap = new SimpleAlternator(CalculateAlternatorEfficiency(busAux.ElectricSupply.Alternators)) {Technologies = busAux.ElectricSupply.Alternators.Select(x => x.Technology).ToList()}, PowerNetVoltage = Constants.BusAuxiliaries.ElectricSystem.PowernetVoltage, StoredEnergyEfficiency = Constants.BusAuxiliaries.ElectricSystem.StoredEnergyEfficiency, ResultCardIdle = new DummyResultCard(), @@ -231,7 +231,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter } return CompressorMapReader.ReadStream( - RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".VAUXBus." + resource), dragCurveFactorClutch); + RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".VAUXBus." + resource), dragCurveFactorClutch, $"{compressorSize} - {clutchType}"); } public virtual ISSMInputs CreateSSMModelParameters(IBusAuxiliariesDeclarationData busAuxInputData, Mission mission, IFuelProperties heatingFuel, LoadingType loadingType) @@ -284,6 +284,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter HVACMaxCoolingPower = coolingPower.Item1 + coolingPower.Item2, HVACCompressorType = busParams.HVACCompressorType, // use passenger compartment + HVACTechnology = string.Format("{0} ({1})", busParams.HVACConfiguration.GetName(), string.Join(", ", new[] {busParams.HVACCompressorType.GetName(), ACCompressorType.None.GetName()})), COP = DeclarationData.BusAuxiliaries.CalculateCOP( coolingPower.Item1, ACCompressorType.None, coolingPower.Item2, busParams.HVACCompressorType, busParams.FloorType), diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs index 57338aeffb..6e7977cc42 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs @@ -114,7 +114,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter IVehicleDeclarationInputData vehicleData, Mission mission) { var retVal = base.GetPneumaticUserConfig(vehicleData, mission); - retVal.Doors = CompletedVehicle.Components.BusAuxiliaries.PneumaticConsumers.DoorDriveTechnology; + retVal.Doors = CompletedVehicle.DoorDriveTechnology; retVal.KneelingHeight = VectoMath.Max(0.SI<Meter>(), CompletedVehicle.EntranceHeight - Constants.BusParameters.EntranceHeight); return retVal; } diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/AlternatorMap.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/AlternatorMap.cs index 31fc8df7e0..9defeccb84 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/AlternatorMap.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/AlternatorMap.cs @@ -233,7 +233,13 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric return GetValue(rpm, currentDemand); } - + public IList<string> Technologies + { + get { + return new List<string>(); + } + } + // Public Events public event AuxiliaryEventEventHandler AuxiliaryEvent; diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/CombinedAlternator.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/CombinedAlternator.cs index 7edecd1a7b..37cae3b8b0 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/CombinedAlternator.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/CombinedAlternator.cs @@ -63,6 +63,13 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric return alternatorMapValues; } + public IList<string> Technologies + { + get { + return new List<string>(); + } + } + protected void Initialise(IList<ICombinedAlternatorMapRow> map) { diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/SimpleAlternator.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/SimpleAlternator.cs index 81732e9172..d5cefea066 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/SimpleAlternator.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/SimpleAlternator.cs @@ -23,6 +23,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric return _efficiency; } + public IList<string> Technologies { get; set; } + public string Source { get { return null; } } #endregion diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs index fbf2327de6..b4b9f6b310 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs @@ -184,6 +184,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC } public ISSMTechnologyBenefits Technologies { get; set; } + public string HVACTechnology { get; set; } #endregion } diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/CompressorMap.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/CompressorMap.cs index 388a49c61f..0f199a22fe 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/CompressorMap.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/CompressorMap.cs @@ -52,11 +52,13 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumati /// ''' Creates a new instance of the CompressorMap class /// ''' </summary> /// <param name="entries"></param> + /// <param name="technology"></param> /// <param name="source"></param> /// ''' <remarks></remarks> - public CompressorMap(IList<CompressorMapValues> entries, string source) + public CompressorMap(IList<CompressorMapValues> entries, string technology, string source) { Source = source; + Technology = technology; Entries = entries; var powerDividedByFlowRateSum = 0.0.SI<JoulePerNormLiter>(); foreach (var entry in Entries) { @@ -67,6 +69,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumati _averagePowerDemandPerCompressorUnitFlowRateLitresperSec = (powerDividedByFlowRateSum / Entries.Count); } + public string Technology { get; } + public string Source { get; } diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index afec34e08d..e312866f40 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -700,7 +700,7 @@ namespace TUGraz.VectoCore.OutputData WriteAxlegearData(runData.AxleGearData, row); - WriteAuxTechnologies(runData.Aux, row); + WriteAuxTechnologies(runData.Aux, runData.BusAuxiliaries, row); WriteAxleWheelsData(runData.VehicleData.AxleData, row); @@ -804,7 +804,7 @@ namespace TUGraz.VectoCore.OutputData : data.CertificationNumber; } - private void WriteAuxTechnologies(IEnumerable<VectoRunData.AuxData> auxData, DataRow row) + private void WriteAuxTechnologies(IEnumerable<VectoRunData.AuxData> auxData, IAuxiliaryConfig busAux, DataRow row) { foreach (var aux in auxData) { if (aux.ID == Constants.Auxiliaries.IDs.PTOConsumer || aux.ID == Constants.Auxiliaries.IDs.PTOTransmission) { @@ -822,6 +822,14 @@ namespace TUGraz.VectoCore.OutputData row[colName] = aux.Technology == null ? "" : string.Join("; ", aux.Technology); } + + if (busAux == null) { + return; + } + + row[string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.HeatingVentilationAirCondition)] = busAux.SSMInputs.HVACTechnology; + row[string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.ElectricSystem)] = string.Join("/", busAux.ElectricalUserInputsConfig.AlternatorMap.Technologies); + row[string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.PneumaticSystem)] = busAux.PneumaticUserInputsConfig.CompressorMap.Technology; } private static void WriteAngledriveData(AngledriveData data, DataRow row) diff --git a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs index e92696fac9..59ef46fd90 100644 --- a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs +++ b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs @@ -55,6 +55,7 @@ namespace TUGraz.VectoCore.Tests.Utils { public Meter Length { get; set; } public Meter Width { get; set; } public Meter EntranceHeight { get; } + public ConsumerTechnology DoorDriveTechnology { get; } public IVehicleComponentsDeclaration Components { get { return this; } } public XmlNode XMLSource { get; } @@ -106,6 +107,7 @@ namespace TUGraz.VectoCore.Tests.Utils { public Meter Length { get; set; } public Meter Width { get; set; } public Meter EntranceHeight { get; } + public ConsumerTechnology DoorDriveTechnology { get; } public Watt MaxNetPower2 { get; } public string RegisteredClass { get; set; } public int NuberOfPassengersUpperDeck { get; set; } -- GitLab