From 8d328387014a87c9550d446bfc9ac8dfc5f4a7f2 Mon Sep 17 00:00:00 2001 From: "VKMTHD\\haraldmartini" <harald.martini@student.tugraz.at> Date: Wed, 28 Sep 2022 14:42:03 +0200 Subject: [PATCH] added P_aux_el to modal data container --- .../AuxiliaryDataAdapter.cs | 17 ++++++++--------- .../Models/Simulation/Data/ModalResult.cs | 12 ++++++++---- .../Models/Simulation/Data/ModalResultField.cs | 7 ++++++- .../Impl/Auxiliaries/Conditioning.cs | 3 +++ .../Impl/Auxiliaries/ElectricAuxiliaries.cs | 9 ++++++--- .../SimulationComponent/Impl/EngineAuxiliary.cs | 6 +++--- .../VectoCore/OutputData/ModalDataContainer.cs | 10 ++++++++++ 7 files changed, 44 insertions(+), 20 deletions(-) diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs index abfed569a0..3e4a566508 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs @@ -194,6 +194,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen DemandType = AuxiliaryDemandType.Dynamic, ID = Constants.Auxiliaries.IDs.Cond, ConnectToREESS = true, + PowerDemandElectric = DeclarationData.Conditioning.LookupPowerDemand(hdv, mission), }; auxDataList.Add(aux); @@ -305,22 +306,20 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen ID = Constants.Auxiliaries.IDs.SteeringPump_el, PowerDemandElectric = powerDemand.electricPumps * alternatorEfficiency, PowerDemandMech = powerDemand.electricPumps, - - //PowerDemandElectricDataBusFunc = (db, mech) => { - // if (db.VehicleInfo.VehicleStopped) { - // return 0.SI<Watt>(); - // } else { - // return powerDemand.electricPumps; - // } - //}, MissionType = mission, }; - auxDataList.Add(spElectric); + + if (jobType.IsOneOf(VectoSimulationJobType.ConventionalVehicle, VectoSimulationJobType.EngineOnlySimulation)) { + //For a conventional vehicle the electric steering pump power demand is added to the power demand of the mechanical steering pumpss spElectric.ConnectToREESS = false; + spMech.PowerDemandMech += spElectric.PowerDemandMech; + } else { + //For a vehicle with REESS the electric part of the steering pump power demand is treated as separate component + auxDataList.Add(spElectric); } } diff --git a/VectoCore/VectoCore/Models/Simulation/Data/ModalResult.cs b/VectoCore/VectoCore/Models/Simulation/Data/ModalResult.cs index 3989005867..c0ced7d6d3 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/ModalResult.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/ModalResult.cs @@ -309,6 +309,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Data ModalResultField.P_Aux_el_HV, }; + public static readonly ModalResultField[] ElectricAuxiliarySignals = { + ModalResultField.P_aux_el, + }; + // ------------------------------------------------------------------------------------ public static readonly ModalResultField[] HybridControllerSignals = { ModalResultField.HybridStrategyScore, @@ -413,15 +417,15 @@ namespace TUGraz.VectoCore.Models.Simulation.Data break; case IDCDCConverter _: CreateColumns(DCDCConverterSignals); break; - case ElectricAuxiliaries elAux: - CreateElectricAuxColumns(elAux); + case ElectricAuxiliaries _: + CreateElectricAuxColumns(); break; } } - private void CreateElectricAuxColumns(ElectricAuxiliaries elAux) + private void CreateElectricAuxColumns() { - + CreateColumns(ElectricAuxiliarySignals); } private void CreateBatteryColumns(VectoRunData vectoRunData) diff --git a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs index 600af83d19..0c4043daa5 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs @@ -110,10 +110,15 @@ namespace TUGraz.VectoCore.Models.Simulation.Data [ModalResultField(typeof(SI), name: "P_ice_inertia", caption: "P_ice_inertia [kW]", outputFactor: 1e-3)] P_ice_inertia, /// <summary> - /// [kW] Total auxiliary power demand . + /// [kW] Total mechanic auxiliary power demand . /// </summary> [ModalResultField(typeof(SI), caption: "P_aux_mech [kW]", outputFactor: 1e-3)] P_aux_mech, + /// <summary> + /// [kW] Total electric auxiliary power demand . + /// </summary> + [ModalResultField(typeof(SI), caption: "P_aux_el [kW]", outputFactor: 1e-3)] P_aux_el, + /// <summary> /// [kW] Total auxiliary power demand . /// </summary> diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Auxiliaries/Conditioning.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Auxiliaries/Conditioning.cs index 135c3cc1ac..294ca3afaf 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Auxiliaries/Conditioning.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Auxiliaries/Conditioning.cs @@ -40,6 +40,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl.Auxiliaries throw new VectoException($"Invalid {nameof(condAuxData)}: ID must be {Constants.Auxiliaries.IDs.Cond}"); } + if (condAuxData.PowerDemandElectric == null) { + throw new VectoException($"No electric powerdemand set for {condAuxData.ID}"); + } electricPowerDemand = condAuxData.PowerDemandElectric; AuxID = condAuxData.ID; } diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Auxiliaries/ElectricAuxiliaries.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Auxiliaries/ElectricAuxiliaries.cs index d3a36831e8..af5074b444 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Auxiliaries/ElectricAuxiliaries.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Auxiliaries/ElectricAuxiliaries.cs @@ -114,12 +114,15 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl protected override void DoWriteModalResults(Second time, Second simulationInterval, IModalDataContainer container) { + var sum = 0.SI<Watt>(); foreach (var aux in _auxData) { - - container[_auxColumnName[aux.Key]] = _powerDemands[aux.Key]; - + var pd = _powerDemands[aux.Key]; + container[_auxColumnName[aux.Key]] = pd; + } + + container[ModalResultField.P_aux_el] = sum; } protected override void DoCommitSimulationStep(Second time, Second simulationInterval) diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/EngineAuxiliary.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/EngineAuxiliary.cs index e3a2ca416a..f90aa85611 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/EngineAuxiliary.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/EngineAuxiliary.cs @@ -149,12 +149,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl Constants.Auxiliaries.IDs.Fan, Constants.Auxiliaries.IDs.PTOConsumer, Constants.Auxiliaries.IDs.PTOTransmission, - Constants.Auxiliaries.IDs.ENG_AUX_MECH_FAN, - Constants.Auxiliaries.IDs.ENG_AUX_MECH_STP + Constants.Auxiliaries.IDs.ENGMode_AUX_MECH_FAN, + Constants.Auxiliaries.IDs.ENGMode_AUX_MECH_STP }; var auxiliarieIgnoredDuringDrive = new[] { Constants.Auxiliaries.IDs.Fan, - Constants.Auxiliaries.IDs.ENG_AUX_MECH_FAN + Constants.Auxiliaries.IDs.ENGMode_AUX_MECH_FAN }; var powerDemands = new Dictionary<string, Watt>(Auxiliaries.Count); var engineOffDemand = 0.SI<Watt>(); diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs index 63936a6e75..3f3b671781 100644 --- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs @@ -663,6 +663,7 @@ namespace TUGraz.VectoCore.OutputData ModalResultField.P_clutch_out, // Aux ModalResultField.P_aux_mech, + ModalResultField.P_aux_el, ModalResultField.P_Aux_el_HV, // Gbx ModalResultField.P_gbx_in, @@ -829,6 +830,10 @@ namespace TUGraz.VectoCore.OutputData ModalResultField.P_clutch_out, }.Select(x => x.GetName())); } + + if (HasElectricAuxiliaries) { + dataColumns.Add(ModalResultField.P_aux_el.GetName()); + } dataColumns.AddRange( new[] { ModalResultField.P_aux_mech, @@ -904,6 +909,11 @@ namespace TUGraz.VectoCore.OutputData return dataColumns; } + public bool HasElectricAuxiliaries + { + get => _runData.Aux.Any(aux => aux.ConnectToREESS); + } + public IEnumerable<T> GetValues<T>(DataColumn col) => GetValues(x => x.Field<T>(col)); public IEnumerable<T> GetValues<T>(Func<DataRow, T> selectorFunc) => -- GitLab