From 10cbab9c6a044e45e3179441f8f86b25ee7cc266 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Thu, 6 Aug 2020 16:21:12 +0200
Subject: [PATCH] implementing delta method for completed bus

---
 .../XML/XMLCustomerReportCompletedBus.cs      | 14 +++++-----
 .../XML/XMLManufacturerReportCompletedBus.cs  | 26 ++++++++++++++-----
 2 files changed, 27 insertions(+), 13 deletions(-)

diff --git a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReportCompletedBus.cs
index f3eeb85829..b4ac78bc02 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReportCompletedBus.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReportCompletedBus.cs
@@ -146,7 +146,9 @@ namespace TUGraz.VectoCore.OutputData.XML {
 
 		private XElement[] GetFuelConsumptionResults(XMLDeclarationReport.ResultEntry genericResult, XMLDeclarationReport.ResultEntry specificResult, IResult primaryResult)
 		{
-			var factor = specificResult.EnergyConsumptionTotal.Value() / genericResult.EnergyConsumptionTotal.Value();
+			var factor = XMLManufacturerReportCompletedBus.CalculateFactorMethodFactor(primaryResult, specificResult,
+					genericResult);
+			//var factor = specificResult.EnergyConsumptionTotal.Value() / genericResult.EnergyConsumptionTotal.Value();
 			var retVal = new List<XElement>();
 
 			var co2Sum = 0.SI<KilogramPerMeter>();
@@ -162,11 +164,11 @@ namespace TUGraz.VectoCore.OutputData.XML {
 						tns + XMLNames.Report_Results_FuelConsumption,
 						new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/km"),
 						fcMass.ConvertToGrammPerKiloMeter().ToMinSignificantDigits(3, 1)),
-					new XElement(
-						tns + XMLNames.Report_Results_FuelConsumption,
-						new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/t-km"),
-						(fcMass / specificResult.Payload)
-						.ConvertToGrammPerTonKilometer().ToMinSignificantDigits(3, 1)),
+					//new XElement(
+					//	tns + XMLNames.Report_Results_FuelConsumption,
+					//	new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/t-km"),
+					//	(fcMass / specificResult.Payload)
+					//	.ConvertToGrammPerTonKilometer().ToMinSignificantDigits(3, 1)),
 					specificResult.CargoVolume > 0
 						? new XElement(
 							tns + XMLNames.Report_Results_FuelConsumption,
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportCompletedBus.cs
index 0860b82c6c..b9be89ab2d 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportCompletedBus.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportCompletedBus.cs
@@ -206,13 +206,25 @@ namespace TUGraz.VectoCore.OutputData.XML {
 			);
 		}
 
+		protected internal static double CalculateFactorMethodFactor(IResult primaryResult,
+			XMLDeclarationReport.ResultEntry specific, XMLDeclarationReport.ResultEntry generic)
+		{
+            //return specific.EnergyConsumptionTotal.Value() / generic.EnergyConsumptionTotal.Value();
+			var energyConsumptionPrimary = primaryResult.EnergyConsumption.Sum(x => x.Value);
+			var energyConsumptionCompeted = energyConsumptionPrimary +
+											specific.EnergyConsumptionTotal / specific.Distance -
+											generic.EnergyConsumptionTotal / generic.Distance;
+			return energyConsumptionCompeted / energyConsumptionPrimary;
+		}
+
 		private XElement[] GetFuelConsumptionResults(XMLDeclarationReport.ResultEntry genericResult, XMLDeclarationReport.ResultEntry specificResult, IResult primaryResult)
 		{
-			var factor = specificResult.EnergyConsumptionTotal.Value() / genericResult.EnergyConsumptionTotal.Value();
+			var factor = CalculateFactorMethodFactor(primaryResult, specificResult, genericResult);
+			//var factor = specificResult.EnergyConsumptionTotal.Value() / genericResult.EnergyConsumptionTotal.Value();
 			var retVal = new List<XElement>();
 
 			var co2Sum = 0.SI<KilogramPerMeter>();
-			retVal.Add(new XElement(tns + "FuelConsumptionFactor", factor.ToMinSignificantDigits(4)));
+			//retVal.Add(new XElement(tns + "FuelConsumptionFactor", factor.ToMinSignificantDigits(4)));
 			foreach (var entry in primaryResult.EnergyConsumption) {
 				var fcEnergy = entry.Value * factor;  // J/m
 				var fuelData = FuelData.Instance().Lookup(entry.Key);
@@ -225,11 +237,11 @@ namespace TUGraz.VectoCore.OutputData.XML {
 						tns + XMLNames.Report_Results_FuelConsumption,
 						new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/km"),
 						fcMass.ConvertToGrammPerKiloMeter().ToMinSignificantDigits(3, 1)),
-					new XElement(
-						tns + XMLNames.Report_Results_FuelConsumption,
-						new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/t-km"),
-						(fcMass / specificResult.Payload)
-						.ConvertToGrammPerTonKilometer().ToMinSignificantDigits(3, 1)),
+					//new XElement(
+					//	tns + XMLNames.Report_Results_FuelConsumption,
+					//	new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/t-km"),
+					//	(fcMass / specificResult.Payload)
+					//	.ConvertToGrammPerTonKilometer().ToMinSignificantDigits(3, 1)),
 					specificResult.CargoVolume > 0
 						? new XElement(
 							tns + XMLNames.Report_Results_FuelConsumption,
-- 
GitLab