Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 3ff05167 authored by Stefanos Doumpoulakis's avatar Stefanos Doumpoulakis
Browse files

bugfixes for pollutant input and output

parent 56ecfeda
No related branches found
No related tags found
No related merge requests found
...@@ -860,15 +860,17 @@ namespace TUGraz.VectoCore.InputData.Reader ...@@ -860,15 +860,17 @@ namespace TUGraz.VectoCore.InputData.Reader
FanElectricalPower = table.Columns.Contains(Fields.FanElectricalPower) FanElectricalPower = table.Columns.Contains(Fields.FanElectricalPower)
? row.ParseDouble(Fields.FanElectricalPower).SI<Watt>() ? row.ParseDouble(Fields.FanElectricalPower).SI<Watt>()
: null, : null,
CombustionEngineTorque = table.Columns.Contains(Fields.CombustionEngineTorque) CombustionEngineTorque = row.ParseDouble(Fields.CombustionEngineTorque).SI<NewtonMeter>(),
? row.ParseDouble(Fields.CombustionEngineTorque).SI<NewtonMeter>() CH4MassFlow = table.Columns.Contains(Fields.CH4MassFlow)
? (row.ParseDouble(Fields.CH4MassFlow) / GRAMS_PER_KILO).SI<KilogramPerSecond>()
: null, : null,
CH4MassFlow = (row.ParseDoubleOrGetDefault(Fields.CH4MassFlow) / GRAMS_PER_KILO).SI<KilogramPerSecond>(),
COMassFlow = (row.ParseDoubleOrGetDefault(Fields.COMassFlow) / 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>(), NOxMassFlow = (row.ParseDoubleOrGetDefault(Fields.NOxMassFlow) / GRAMS_PER_KILO).SI<KilogramPerSecond>(),
THCMassFlow = (row.ParseDoubleOrGetDefault(Fields.THCMassFlow) / 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(); }).ToArray();
......
...@@ -390,15 +390,23 @@ namespace TUGraz.VectoCore.OutputData ...@@ -390,15 +390,23 @@ namespace TUGraz.VectoCore.OutputData
return; return;
} }
foreach (var field in new[] { var fields = new List<string> {
Fields.POLLUTANT_CH4,
Fields.POLLUTANT_CO, Fields.POLLUTANT_CO,
Fields.POLLUTANT_NMHC,
Fields.POLLUTANT_NOX, Fields.POLLUTANT_NOX,
Fields.POLLUTANT_THC, Fields.POLLUTANT_THC,
Fields.POLLUTANT_CO2, Fields.POLLUTANT_CO2,
Fields.ENGINE_ENERGY_RATIO 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) { lock (Table) {
if (!Table.Columns.Contains(field)) { if (!Table.Columns.Contains(field)) {
Table.Columns.Add(field, typeof(ConvertedSI)); Table.Columns.Add(field, typeof(ConvertedSI));
...@@ -410,18 +418,26 @@ namespace TUGraz.VectoCore.OutputData ...@@ -410,18 +418,26 @@ namespace TUGraz.VectoCore.OutputData
.Where(x => x.Item1.CombustionEngineTorque.IsGreaterOrEqual(0)) .Where(x => x.Item1.CombustionEngineTorque.IsGreaterOrEqual(0))
.Sum(x => (x.Item1.EngineSpeed * x.Item1.CombustionEngineTorque) * (x.Item2.Time - x.Item1.Time)).ConvertToKiloWattHour(); .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(); if (runData.Cycle.Entries.First().CH4MassFlow != null) {
var CO = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.COMassFlow) * (x.Item2.Time - x.Item1.Time)).ConvertToGramm(); var CH4 = runData.Cycle.Entries.Pairwise().Sum(x => (x.Item1.CH4MassFlow) * (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(); row[Fields.POLLUTANT_CH4] = (ConvertedSI) (CH4 / energy).SI<Scalar>();
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();
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_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>(); 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>(); 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>(); row[Fields.POLLUTANT_CO2] = (ConvertedSI) (CO2 / energy).SI<Scalar>();
var simulatedEnergy = modData.TotalEngineWorkPositive().ConvertToKiloWattHour(); var simulatedEnergy = modData.TotalEngineWorkPositive().ConvertToKiloWattHour();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment