diff --git a/VectoCommon/VectoCommon/Utils/EnumerableExtensionMethods.cs b/VectoCommon/VectoCommon/Utils/EnumerableExtensionMethods.cs index 55a880f723ac31850b5c53c07f951ca08c57fae2..9e8cbcd88e8d662e93625a889e64edf2df43006d 100644 --- a/VectoCommon/VectoCommon/Utils/EnumerableExtensionMethods.cs +++ b/VectoCommon/VectoCommon/Utils/EnumerableExtensionMethods.cs @@ -209,7 +209,12 @@ namespace TUGraz.VectoCommon.Utils Func<TSource, IComparable> projectionToComparable) { using (var e = source.GetEnumerator()) { - if (!e.MoveNext()) { + if (!e.MoveNext()) + { + if (default(TSource) == null) + { + return default; + } throw new InvalidOperationException("Sequence is empty."); } @@ -229,10 +234,14 @@ namespace TUGraz.VectoCommon.Utils } public static TSource MaxBy<TSource>(this IEnumerable<TSource> source, - Func<TSource, IComparable> projectionToComparable) + Func<TSource, IComparable> projectionToComparable) { using (var e = source.GetEnumerator()) { - if (!e.MoveNext()) { + if (!e.MoveNext()) + { + if (default(TSource) == null) { + return default; + } throw new InvalidOperationException("Sequence is empty."); } diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs index eeccc904a30fe7b246689f0383063fdd86fd4d55..fcd55e6cfc96632db4ce300827fa589cc8faeef3 100644 --- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs @@ -272,7 +272,7 @@ namespace TUGraz.VectoCore.Models.Declaration case VectoSimulationJobType.ParallelHybridVehicle: case VectoSimulationJobType.EngineOnlySimulation: case VectoSimulationJobType.IHPC: - return vehicleData.Components?.EngineInputData?.RatedPowerDeclared ?? 0.SI<Watt>() + vehicleData.MaxNetPower1 ?? 0.SI<Watt>(); + return (vehicleData.Components?.EngineInputData?.RatedPowerDeclared ?? 0.SI<Watt>()) + (vehicleData.MaxNetPower1 ?? 0.SI<Watt>()); case VectoSimulationJobType.SerialHybridVehicle: case VectoSimulationJobType.BatteryElectricVehicle: case VectoSimulationJobType.IEPC_E: diff --git a/VectoCore/VectoCore/OutputData/SumDataFields.cs b/VectoCore/VectoCore/OutputData/SumDataFields.cs index 0e3ffc30fb2f72c874eb6f3cb6d16fa04c656dfe..bad26065485ef91b1d199048f19ff08d7b40adae 100644 --- a/VectoCore/VectoCore/OutputData/SumDataFields.cs +++ b/VectoCore/VectoCore/OutputData/SumDataFields.cs @@ -730,11 +730,11 @@ namespace TUGraz.VectoCore.OutputData { E_EM_LOSS_FORMAT, (r, m, em) => m.ElectricMotorLosses(em)?.ConvertToKiloWattHour() }, { E_EM_OFF_TIME_SHARE, (r, m, em) => (ConvertedSI)m.ElectricMotorOffTimeShare(em) }, { EM_RATED_POWER, (r, m, em) => DeclarationData.GetReferencePropulsionPower(r.VehicleData.InputData).ConvertToKiloWatt() }, - { EM_RATED_SPEED_HI, (r, m, em) => r.VehicleData.InputData.Components.ElectricMachines.Entries.First().ElectricMachine.VoltageLevels.MaxBy(v => v.VoltageLevel).ContinuousTorqueSpeed.AsRPM }, - { EM_RATED_SPEED_LO, (r, m, em) => r.VehicleData.InputData.Components.ElectricMachines.Entries.First().ElectricMachine.VoltageLevels.MinBy(v => v.VoltageLevel).ContinuousTorqueSpeed.AsRPM }, - { EM_RATED_TORQUE_LO, (r, m, em) => (ConvertedSI)r.VehicleData.InputData.Components.ElectricMachines.Entries.First().ElectricMachine.VoltageLevels.MaxBy(v => v.VoltageLevel).ContinuousTorque }, - { EM_RATED_TORQUE_HI, (r, m, em) => (ConvertedSI)r.VehicleData.InputData.Components.ElectricMachines.Entries.First().ElectricMachine.VoltageLevels.MinBy(v => v.VoltageLevel).ContinuousTorque }, - { EM_MOTOR_NUMBER, (r, m, em) => r.VehicleData.InputData.Components.ElectricMachines.Entries.First().Count }, + { EM_RATED_SPEED_HI, (r, m, em) => r.VehicleData.InputData.Components.ElectricMachines?.Entries.First().ElectricMachine.VoltageLevels.MaxBy(v => v.VoltageLevel)?.ContinuousTorqueSpeed.AsRPM ?? 0 }, + { EM_RATED_SPEED_LO, (r, m, em) => r.VehicleData.InputData.Components.ElectricMachines?.Entries.First().ElectricMachine.VoltageLevels.MinBy(v => v.VoltageLevel)?.ContinuousTorqueSpeed.AsRPM ?? 0 }, + { EM_RATED_TORQUE_LO, (r, m, em) => (ConvertedSI)r.VehicleData.InputData.Components.ElectricMachines?.Entries.First().ElectricMachine.VoltageLevels.MaxBy(v => v.VoltageLevel)?.ContinuousTorque ?? 0.SI<NewtonMeter>()}, + { EM_RATED_TORQUE_HI, (r, m, em) => (ConvertedSI)r.VehicleData.InputData.Components.ElectricMachines?.Entries.First().ElectricMachine.VoltageLevels.MinBy(v => v.VoltageLevel)?.ContinuousTorque ?? 0.SI<NewtonMeter>() }, + { EM_MOTOR_NUMBER, (r, m, em) => r.VehicleData.InputData.Components.ElectricMachines?.Entries.First().Count ?? 0 }, }; public static readonly Dictionary<string, WriteEmEntry> IEPCValue = new Dictionary<string, WriteEmEntry>() {