diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs index 069ba9ce5dc18c1dbca2ec4291a1da19585f461d..beaf772e130bce6d1269490155191fb3dd1bd379 100644 --- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs @@ -152,7 +152,7 @@ namespace TUGraz.VectoCore.OutputData { var accelerationTimeShare = data.Data.Rows.Cast<DataRow>() .Select(x => new { - a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc), + a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0), dt = x.Field<Second>((int)ModalResultField.simulationInterval) }) .Sum(x => x.a > 0.125 ? x.dt : 0.SI<Second>()).DefaultIfNull(0); @@ -163,7 +163,7 @@ namespace TUGraz.VectoCore.OutputData { var decelerationTimeShare = data.Data.Rows.Cast<DataRow>() .Select(x => new { - a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc), + a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0), dt = x.Field<Second>((int)ModalResultField.simulationInterval) }) .Sum(x => x.a < -0.125 ? x.dt : 0.SI<Second>()).DefaultIfNull(0); @@ -174,8 +174,8 @@ namespace TUGraz.VectoCore.OutputData { var cruiseTime = data.Data.Rows.Cast<DataRow>() .Select(x => new { - v = x.Field<MeterPerSecond>((int)ModalResultField.v_act), - a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc), + v = x.Field<MeterPerSecond>((int)ModalResultField.v_act).DefaultIfNull(0), + a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0), dt = x.Field<Second>((int)ModalResultField.simulationInterval) }) .Sum(x => x.v >= 0.1.KMPHtoMeterPerSecond() && x.a.IsBetween(-0.125, 0.125) ? x.dt : 0.SI<Second>()) @@ -187,7 +187,7 @@ namespace TUGraz.VectoCore.OutputData { var stopTime = data.Data.Rows.Cast<DataRow>() .Select(x => new { - v = x.Field<MeterPerSecond>((int)ModalResultField.v_act), + v = x.Field<MeterPerSecond>((int)ModalResultField.v_act).DefaultIfNull(0), dt = x.Field<Second>((int)ModalResultField.simulationInterval) }) .Sum(x => x.v < 0.1.KMPHtoMeterPerSecond() ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>(); diff --git a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs index 924c4a687e4d05658a51cf9e5d3d90e5e24abd4b..6cde9f97170a3fb13248a09b252d29fc62a4c41b 100644 --- a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs +++ b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs @@ -58,6 +58,7 @@ namespace TUGraz.VectoCore.Tests.Reports for (var i = 0; i < 499; i++) { modData[ModalResultField.simulationInterval] = 1.SI<Second>(); modData[ModalResultField.n_eng_avg] = 600.RPMtoRad(); + modData[ModalResultField.v_act] = 20.KMPHtoMeterPerSecond(); modData[ModalResultField.drivingBehavior] = DrivingBehavior.Driving; modData[ModalResultField.time] = i.SI<Second>(); modData[ModalResultField.dist] = i.SI<Meter>(); @@ -119,6 +120,7 @@ namespace TUGraz.VectoCore.Tests.Reports modData[ModalResultField.time] = i.SI<Second>(); modData[ModalResultField.dist] = i.SI<Meter>(); modData[ModalResultField.n_eng_avg] = 600.RPMtoRad(); + modData[ModalResultField.v_act] = 20.KMPHtoMeterPerSecond(); modData[ModalResultField.drivingBehavior] = DrivingBehavior.Driving; modData["FAN"] = powerDemand[i % powerDemand.Length]; modData[ModalResultField.P_air] = powerDemand[i % powerDemand.Length];