From 17cd23d0a1f0a969a32f4fb8d6fdc6a4e9c2bb32 Mon Sep 17 00:00:00 2001
From: Michael Krisper <michael.krisper@tugraz.at>
Date: Wed, 11 Aug 2021 17:35:51 +0200
Subject: [PATCH] renamed ConvertToMegaJoulePerKilometer

---
 .../Utils/EnumerableExtensionMethods.cs       | 40 +++++++++++++++++++
 .../Utils/SIConvertExtensionMethods.cs        |  4 +-
 .../OutputData/FileIO/BusAuxWriter.cs         |  2 +-
 .../XMLManufacturerReportCompletedBus.cs      |  8 ++--
 4 files changed, 47 insertions(+), 7 deletions(-)

diff --git a/VectoCommon/VectoCommon/Utils/EnumerableExtensionMethods.cs b/VectoCommon/VectoCommon/Utils/EnumerableExtensionMethods.cs
index 71ce8990d5..f1d54bab94 100644
--- a/VectoCommon/VectoCommon/Utils/EnumerableExtensionMethods.cs
+++ b/VectoCommon/VectoCommon/Utils/EnumerableExtensionMethods.cs
@@ -61,6 +61,7 @@ namespace TUGraz.VectoCommon.Utils
 					return self.OrderBy(x => x).SequenceEqual(other.OrderBy(x => x));
 				}
 			}
+
 			return true;
 		}
 
@@ -148,11 +149,13 @@ namespace TUGraz.VectoCommon.Utils
 				if (!predicate(self[i]))
 					break;
 			}
+
 			if (i == 0) {
 				i = 1;
 			} else if (i == self.Length) {
 				i--;
 			}
+
 			return Tuple.Create(self[i - 1], self[i]);
 		}
 
@@ -173,6 +176,7 @@ namespace TUGraz.VectoCommon.Utils
 				if (!e.MoveNext()) {
 					throw new InvalidOperationException("Sequence is empty.");
 				}
+
 				var min = e.Current;
 				var minProjection = projectionToComparable(e.Current);
 
@@ -183,6 +187,7 @@ namespace TUGraz.VectoCommon.Utils
 						minProjection = currentProjection;
 					}
 				}
+
 				return min;
 			}
 		}
@@ -194,6 +199,7 @@ namespace TUGraz.VectoCommon.Utils
 				if (!e.MoveNext()) {
 					throw new InvalidOperationException("Sequence is empty.");
 				}
+
 				var max = e.Current;
 				var maxProjection = projectionToComparable(e.Current);
 
@@ -204,6 +210,7 @@ namespace TUGraz.VectoCommon.Utils
 						maxProjection = currentProjection;
 					}
 				}
+
 				return max;
 			}
 		}
@@ -240,5 +247,38 @@ namespace TUGraz.VectoCommon.Utils
 		{
 			return Enumerable.Repeat(element, count);
 		}
+
+		/// <summary>
+		/// Deconstruct an IEnumerable into individual variables. (Tuple Unpacking)
+		/// </summary>
+		/// <typeparam name="T"></typeparam>
+		/// <param name="values"></param>
+		/// <param name="item1"></param>
+		/// <param name="item2"></param>
+		/// <param name="item3"></param>
+		/// <param name="item4"></param>
+		/// <param name="item5"></param>
+		/// <param name="item6"></param>
+		/// <param name="item7"></param>
+		public static void Deconstruct<T>(this IEnumerable<T> values, out T item1, out T item2, 
+			out T item3, out T item4, out T item5, out T item6, out T item7)
+		{
+			using (var enumerator = values.GetEnumerator()) {
+				enumerator.MoveNext();
+				item1 = enumerator.Current;
+				enumerator.MoveNext();
+				item2 = enumerator.Current;
+				enumerator.MoveNext();
+				item3 = enumerator.Current;
+				enumerator.MoveNext();
+				item4 = enumerator.Current;
+				enumerator.MoveNext();
+				item5 = enumerator.Current;
+				enumerator.MoveNext();
+				item6 = enumerator.Current;
+				enumerator.MoveNext();
+				item7 = enumerator.Current;
+			}
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCommon/VectoCommon/Utils/SIConvertExtensionMethods.cs b/VectoCommon/VectoCommon/Utils/SIConvertExtensionMethods.cs
index 32bc88d9b6..1f950c20eb 100644
--- a/VectoCommon/VectoCommon/Utils/SIConvertExtensionMethods.cs
+++ b/VectoCommon/VectoCommon/Utils/SIConvertExtensionMethods.cs
@@ -237,7 +237,7 @@ namespace TUGraz.VectoCommon.Utils
 			return new ConvertedSI(value.Value() / Kilo / Kilo, "MJ/kg");
 		}
 
-		public static ConvertedSI ConvertToKiloWattHourPerKilogramm(this JoulePerKilogramm value)
+		public static ConvertedSI ConvertToKiloWattHourPerKilogram(this JoulePerKilogramm value)
 		{
 			return new ConvertedSI(value.Value() / SecondsPerHour / Kilo, "kWh/kg");
 		}
@@ -252,7 +252,7 @@ namespace TUGraz.VectoCommon.Utils
 			return new ConvertedSI(nlps.Value() * 60.0, "Nl/min");
 		}
 
-		public static ConvertedSI ConvertToMegaJouleperKilometer(this JoulePerMeter jpm)
+		public static ConvertedSI ConvertToMegaJoulePerKilometer(this JoulePerMeter jpm)
 		{
 			return new ConvertedSI(jpm.Value() * 1e-3, "MJ/km");
 		}
diff --git a/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs
index 080b18fbda..0e3fbe7f3d 100644
--- a/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs
+++ b/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs
@@ -192,7 +192,7 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 			//retVal["BC_lowVentilation"] = ssmInputs.BoundaryConditions.LowVentilation.ConvertToPerHour().Value;
 			retVal["BC_SpecificVentilationPower"] = ssmInputs.BoundaryConditions.SpecificVentilationPower.ConvertToWattHourPerCubicMeter().Value;
 			retVal["BC_AuxHeaterEfficiency"] = ssmInputs.BoundaryConditions.AuxHeaterEfficiency;
-			retVal["BC_GCVDieselOrHeatingOil"] = ssmInputs.BoundaryConditions.GCVDieselOrHeatingOil.ConvertToKiloWattHourPerKilogramm().Value;
+			retVal["BC_GCVDieselOrHeatingOil"] = ssmInputs.BoundaryConditions.GCVDieselOrHeatingOil.ConvertToKiloWattHourPerKilogram().Value;
 			retVal["BC_MaxTemperatureDeltaForLowFloorBusses"] = ssmInputs.BoundaryConditions.MaxTemperatureDeltaForLowFloorBusses.AsDegCelsius;
 			retVal["BC_MaxPossibleBenefitFromTechnologyList"] = ssmInputs.BoundaryConditions.MaxPossibleBenefitFromTechnologyList;
 			retVal["BC_UValue"] = ssmInputs.BoundaryConditions.UValue.Value();
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs
index bec09199c0..3d23982088 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs
@@ -259,23 +259,23 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport
 					new XElement(
 						tns + XMLNames.Report_Results_FuelConsumption,
 						new XAttribute(XMLNames.Report_Results_Unit_Attr, "MJ/km"),
-						fcEnergy.ConvertToMegaJouleperKilometer().ToMinSignificantDigits(3, 1)),
+						fcEnergy.ConvertToMegaJoulePerKilometer().ToMinSignificantDigits(3, 1)),
 					new XElement(
 						tns + XMLNames.Report_Results_FuelConsumption,
 						new XAttribute(XMLNames.Report_Results_Unit_Attr, "MJ/t-km"),
-						(fcEnergy.ConvertToMegaJouleperKilometer() / specificResult.Payload.ConvertToTon())
+						(fcEnergy.ConvertToMegaJoulePerKilometer() / specificResult.Payload.ConvertToTon())
 						.ToMinSignificantDigits(3, 1)),
 					specificResult.CargoVolume > 0
 						? new XElement(
 							tns + XMLNames.Report_Results_FuelConsumption,
 							new XAttribute(XMLNames.Report_Results_Unit_Attr, "MJ/m³-km"),
-							(fcEnergy.ConvertToMegaJouleperKilometer() / specificResult.CargoVolume.Value()).ToMinSignificantDigits(3, 1))
+							(fcEnergy.ConvertToMegaJoulePerKilometer() / specificResult.CargoVolume.Value()).ToMinSignificantDigits(3, 1))
 						: null,
 					specificResult.PassengerCount.HasValue && specificResult.PassengerCount.Value > 0
 						? new XElement(
 							tns + XMLNames.Report_Results_FuelConsumption,
 							new XAttribute(XMLNames.Report_Results_Unit_Attr, "MJ/p-km"),
-							(fcEnergy.ConvertToMegaJouleperKilometer() / specificResult.PassengerCount.Value).ToMinSignificantDigits(3, 1))
+							(fcEnergy.ConvertToMegaJoulePerKilometer() / specificResult.PassengerCount.Value).ToMinSignificantDigits(3, 1))
 						: null
 				);
 				if (fuelData.FuelDensity != null) {
-- 
GitLab