From d76ea79ef12267aee293d63e8592dae2e2faa477 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <quaritsch@ivt.tugraz.at> Date: Fri, 23 Dec 2022 11:18:08 +0100 Subject: [PATCH] set ICE values and gearbox efficiency / axlegear efficiency only if the respective component is present in the powertrain --- .../OutputData/XML/XMLDeclarationReport.cs | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs index 59c0b8e48c..e35310450e 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs @@ -163,13 +163,15 @@ namespace TUGraz.VectoCore.OutputData.XML FullLoadPercentage = data.ICEMaxLoadTimeShare(); GearshiftCount = data.GearshiftCount(); - var entriesDriving = data.GetValues( - r => new { - dt = r.Field<Second>(ModalResultField.simulationInterval.GetName()), - v = r.Field<MeterPerSecond>(ModalResultField.v_act.GetName()), - nEng = r.Field<PerSecond>(ModalResultField.n_ice_avg.GetName()) - }).Where(x => x.v.IsGreater(0)).ToArray(); - if (entriesDriving.Length > 0) { + var entriesDriving = data.HasCombustionEngine + ? data.GetValues( + r => new { + dt = r.Field<Second>(ModalResultField.simulationInterval.GetName()), + v = r.Field<MeterPerSecond>(ModalResultField.v_act.GetName()), + nEng = r.Field<PerSecond>(ModalResultField.n_ice_avg.GetName()) + }).Where(x => x.v.IsGreater(0)).ToArray() + : null; + if (entriesDriving?.Length > 0) { var drivingTime = entriesDriving.Sum(x => x.dt); AverageDrivingSpeed = entriesDriving.Sum(x => x.v * x.dt) / drivingTime; @@ -196,16 +198,24 @@ namespace TUGraz.VectoCore.OutputData.XML DeclarationData.SetElectricRangesPEV(this, runData, data); } - var gbxOutSignal = runData.Retarder.Type == RetarderType.TransmissionOutputRetarder - ? ModalResultField.P_retarder_in - : (runData.AngledriveData == null ? ModalResultField.P_axle_in : ModalResultField.P_angle_in); - var eGbxIn = data.TimeIntegral<WattSecond>(ModalResultField.P_gbx_in, x => x > 0); - var eGbxOut = data.TimeIntegral<WattSecond>(gbxOutSignal, x => x > 0); - AverageGearboxEfficiency = eGbxOut / eGbxIn; + if (data.HasGearbox) { + var gbxOutSignal = runData.Retarder.Type == RetarderType.TransmissionOutputRetarder + ? ModalResultField.P_retarder_in + : (runData.AngledriveData == null ? ModalResultField.P_axle_in : ModalResultField.P_angle_in); + var eGbxIn = data.TimeIntegral<WattSecond>(ModalResultField.P_gbx_in, x => x > 0); + var eGbxOut = data.TimeIntegral<WattSecond>(gbxOutSignal, x => x > 0); + AverageGearboxEfficiency = eGbxOut / eGbxIn; + } else { + AverageGearboxEfficiency = double.NaN; + } - var eAxlIn = data.TimeIntegral<WattSecond>(ModalResultField.P_axle_in, x => x > 0); - var eAxlOut = data.TimeIntegral<WattSecond>(ModalResultField.P_brake_in, x => x > 0); - AverageAxlegearEfficiency = eAxlOut == null || eAxlIn == null ? double.NaN : eAxlOut / eAxlIn; + if (data.HasAxlegear) { + var eAxlIn = data.TimeIntegral<WattSecond>(ModalResultField.P_axle_in, x => x > 0); + var eAxlOut = data.TimeIntegral<WattSecond>(ModalResultField.P_brake_in, x => x > 0); + AverageAxlegearEfficiency = eAxlOut == null || eAxlIn == null ? double.NaN : eAxlOut / eAxlIn; + } else { + AverageAxlegearEfficiency = double.NaN; + } WeightingFactor = weightingFactor; -- GitLab