diff --git a/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs b/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs index 7a5d6405a81c66eff535f63ea05a86089b51f3f7..01e91b1b4aff9bfecb9c47762d4ec267f01365c4 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 cf6cd15d7597ae7f81409f7bd48bb034434c0d74..f0722ac6895b690273d162c6c00fd97d479f8683 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();