diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/AuxiliaryDataAdapter.cs index abfed569a0e8d6e5899cc08752f8462ba2248190..3e4a5665085c3054c4c6fc90ff0e2bb0ce7ab3b6 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 39890058678b8caaec4a9bc4a63823d1a9db06ad..c0ced7d6d3f0cf8ea0dd184dc11f0cface4b093f 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 600af83d1905cf64858e87908c650b557d106afb..0c4043daa56939d94cab46faeb54e970590aa59c 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 135c3cc1ac6b0eda117aa212e6b20c9bc491b762..294ca3afafad50f5de4e9cc818ffcb1f59a74f78 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 d3a36831e8e86371c024df1f93c8a078231aacc1..af5074b444e046d5db11ca43eafa2d6cb1f22988 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 e3a2ca416a5298d3282f3fde0f8ee7b1b9508a30..f90aa85611c7fedaf0c928db485bde3b3c881026 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 63936a6e75db0743bccd8296836d3c0c2a25776f..3f3b671781d5874bc0a313940508fbfb223c79cd 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) =>