From 3ff0516789b209bf3393fcbf08fb5ad78cfe4fb1 Mon Sep 17 00:00:00 2001 From: Stefanos Doumpoulakis <dubulak@gmail.com> Date: Fri, 16 Sep 2022 16:04:17 +0300 Subject: [PATCH] bugfixes for pollutant input and output --- .../Reader/DrivingCycleDataReader.cs | 12 +++--- .../OutputData/SummaryDataContainer.cs | 40 +++++++++++++------ 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs b/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs index 7a5d6405a8..01e91b1b4a 100644 --- a/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs +++ b/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs @@ -860,15 +860,17 @@ namespace TUGraz.VectoCore.InputData.Reader FanElectricalPower = table.Columns.Contains(Fields.FanElectricalPower) ? row.ParseDouble(Fields.FanElectricalPower).SI<Watt>() : null, - CombustionEngineTorque = table.Columns.Contains(Fields.CombustionEngineTorque) - ? row.ParseDouble(Fields.CombustionEngineTorque).SI<NewtonMeter>() + CombustionEngineTorque = row.ParseDouble(Fields.CombustionEngineTorque).SI<NewtonMeter>(), + CH4MassFlow = table.Columns.Contains(Fields.CH4MassFlow) + ? (row.ParseDouble(Fields.CH4MassFlow) / GRAMS_PER_KILO).SI<KilogramPerSecond>() : null, - CH4MassFlow = (row.ParseDoubleOrGetDefault(Fields.CH4MassFlow) / GRAMS_PER_KILO).SI<KilogramPerSecond>(), COMassFlow = (row.ParseDoubleOrGetDefault(Fields.COMassFlow) / GRAMS_PER_KILO).SI<KilogramPerSecond>(), - NMHCMassFlow = (row.ParseDoubleOrGetDefault(Fields.NMHCMassFlow) / GRAMS_PER_KILO).SI<KilogramPerSecond>(), + NMHCMassFlow = table.Columns.Contains(Fields.NMHCMassFlow) + ? (row.ParseDoubleOrGetDefault(Fields.NMHCMassFlow) / GRAMS_PER_KILO).SI<KilogramPerSecond>() + : null, NOxMassFlow = (row.ParseDoubleOrGetDefault(Fields.NOxMassFlow) / GRAMS_PER_KILO).SI<KilogramPerSecond>(), THCMassFlow = (row.ParseDoubleOrGetDefault(Fields.THCMassFlow) / GRAMS_PER_KILO).SI<KilogramPerSecond>(), - CO2MassFlow = (row.ParseDoubleOrGetDefault(Fields.CO2MassFlow) / GRAMS_PER_KILO).SI<KilogramPerSecond>(), + CO2MassFlow = (row.ParseDoubleOrGetDefault(Fields.CO2MassFlow) / GRAMS_PER_KILO).SI<KilogramPerSecond>() }; }).ToArray(); diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index cf6cd15d75..f0722ac689 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -390,15 +390,23 @@ namespace TUGraz.VectoCore.OutputData return; } - foreach (var field in new[] { - Fields.POLLUTANT_CH4, + var fields = new List<string> { Fields.POLLUTANT_CO, - Fields.POLLUTANT_NMHC, Fields.POLLUTANT_NOX, Fields.POLLUTANT_THC, Fields.POLLUTANT_CO2, Fields.ENGINE_ENERGY_RATIO - }) { + }; + + if (runData.Cycle.Entries.First().CH4MassFlow != null) { + fields.Add(Fields.POLLUTANT_CH4); + } + + if (runData.Cycle.Entries.First().NMHCMassFlow != null) { + fields.Add(Fields.POLLUTANT_NMHC); + } + + foreach (var field in fields) { lock (Table) { if (!Table.Columns.Contains(field)) { Table.Columns.Add(field, typeof(ConvertedSI)); @@ -410,18 +418,26 @@ namespace TUGraz.VectoCore.OutputData .Where(x => x.Item1.CombustionEngineTorque.IsGreaterOrEqual(0)) .Sum(x => (x.Item1.EngineSpeed * x.Item1.CombustionEngineTorque) * (x.Item2.Time - x.Item1.Time)).ConvertToKiloWattHour(); - var CH4 = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.CH4MassFlow) * (x.Item2.Time - x.Item1.Time)).ConvertToGramm(); - var CO = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.COMassFlow) * (x.Item2.Time - x.Item1.Time)).ConvertToGramm(); - var NMHC = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.NMHCMassFlow) * (x.Item2.Time - x.Item1.Time)).ConvertToGramm(); - var NOx = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.NOxMassFlow) * (x.Item2.Time - x.Item1.Time)).ConvertToGramm(); - var THC = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.THCMassFlow) * (x.Item2.Time - x.Item1.Time)).ConvertToGramm(); - var CO2 = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.CO2MassFlow) * (x.Item2.Time - x.Item1.Time)).ConvertToGramm(); + if (runData.Cycle.Entries.First().CH4MassFlow != null) { + var CH4 = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.CH4MassFlow) * (x.Item2.Time - x.Item1.Time)).ConvertToGramm(); + row[Fields.POLLUTANT_CH4] = (ConvertedSI) (CH4 / energy).SI<Scalar>(); + } - row[Fields.POLLUTANT_CH4] = (ConvertedSI) (CH4 / energy).SI<Scalar>(); + var CO = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.COMassFlow) * (x.Item2.Time - x.Item1.Time)).ConvertToGramm(); row[Fields.POLLUTANT_CO] = (ConvertedSI) (CO / energy).SI<Scalar>(); - row[Fields.POLLUTANT_NMHC] = (ConvertedSI) (NMHC / energy).SI<Scalar>(); + + if (runData.Cycle.Entries.First().NMHCMassFlow != null) { + var NMHC = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.NMHCMassFlow) * (x.Item2.Time - x.Item1.Time)).ConvertToGramm(); + row[Fields.POLLUTANT_NMHC] = (ConvertedSI) (NMHC / energy).SI<Scalar>(); + } + + var NOx = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.NOxMassFlow) * (x.Item2.Time - x.Item1.Time)).ConvertToGramm(); row[Fields.POLLUTANT_NOX] = (ConvertedSI) (NOx / energy).SI<Scalar>(); + + var THC = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.THCMassFlow) * (x.Item2.Time - x.Item1.Time)).ConvertToGramm(); row[Fields.POLLUTANT_THC] = (ConvertedSI) (THC / energy).SI<Scalar>(); + + var CO2 = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.CO2MassFlow) * (x.Item2.Time - x.Item1.Time)).ConvertToGramm(); row[Fields.POLLUTANT_CO2] = (ConvertedSI) (CO2 / energy).SI<Scalar>(); var simulatedEnergy = modData.TotalEngineWorkPositive().ConvertToKiloWattHour(); -- GitLab