Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 408e2dc5 authored by Harald Martini's avatar Harald Martini
Browse files

added electric energy consumption to result

parent 6a1449e3
No related branches found
No related tags found
No related merge requests found
......@@ -1145,7 +1145,8 @@ namespace TUGraz.VectoCommon.InputData
ISimulationParameter SimulationParameter { get; }
Dictionary<FuelType, JoulePerMeter> EnergyConsumption { get; }
Dictionary<string, double> CO2 { get; }
JoulePerMeter ElectricEnergyConsumption { get; }
Dictionary<string, double> CO2 { get; }
OvcHevMode OvcMode { get; }
}
......
......@@ -13,21 +13,25 @@ using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
{
public class XMLDeclarationMultistagePrimaryVehicleBusResultsInputDataProviderV01 : AbstractXMLType, IXMLResultsInputData
public class XMLDeclarationMultistagePrimaryVehicleBusResultsInputDataProviderV01 : AbstractXMLType,
IXMLResultsInputData
{
public static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1;
public const string XSD_TYPE = "ResultsPrimaryVehicleType";
public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
public static readonly string QUALIFIED_XSD_TYPE =
XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
private XmlNode _resultsNode;
private IList<IResult> _results;
public XMLDeclarationMultistagePrimaryVehicleBusResultsInputDataProviderV01(XmlNode resultsNode) : base(resultsNode)
public XMLDeclarationMultistagePrimaryVehicleBusResultsInputDataProviderV01(XmlNode resultsNode) : base(
resultsNode)
{
_resultsNode = resultsNode;
}
public string Status => GetString(XMLNames.Bus_Status);
public IList<IResult> Results => _results ?? (_results = ReadResults());
......@@ -40,8 +44,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
var results = new List<IResult>();
foreach (XmlNode resultNode in _resultsNode.ChildNodes)
{
foreach (XmlNode resultNode in _resultsNode.ChildNodes) {
if (resultNode.LocalName == XMLNames.Report_Result_Result)
results.AddRange(GetResult(resultNode));
}
......@@ -63,52 +66,59 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
var retVal = new List<IResult>();
foreach (XmlNode node in ovcModes) {
var ovcMode = GetAttribute(node, XMLNames.Results_Report_OVCModeAttr).ParseEnum<OvcHevMode>();
var ovcEnergyConsumption = GetNodes(XMLNames.Report_Results_Fuel, node)
.Cast<XmlNode>().Select(x => new KeyValuePair<FuelType, JoulePerMeter>(
GetAttribute(x, XMLNames.Report_Results_Fuel_Type_Attr).ParseEnum<FuelType>(),
x.SelectSingleNode(
$".//*[local-name()='{XMLNames.Report_Result_EnergyConsumption}' and @unit='MJ/km']")?.InnerText
.ToDouble().SI(Unit.SI.Mega.Joule.Per.Kilo.Meter).Cast<JoulePerMeter>())).ToDictionary(x => x.Key, x => x.Value);
retVal.Add(new Result {
GetEnergyConsumption(node, out var ovcEnergyConsumption, out var ovcElectricEnergyConsumption);
retVal.Add(new Result {
ResultStatus = resultStatus,
Mission = mission,
VehicleGroup = VehicleClassHelper.Parse(vehicleGroup),
SimulationParameter = simulationParams,
EnergyConsumption = ovcEnergyConsumption,
ElectricEnergyConsumption = ovcElectricEnergyConsumption,
CO2 = new Dictionary<string, double>(),
OvcMode = ovcMode
});
}
return retVal;
}
var energyConsumption = GetNodes(XMLNames.Report_Results_Fuel, xmlNode)
.Cast<XmlNode>().Select(x => new KeyValuePair<FuelType, JoulePerMeter>(
GetAttribute(x, XMLNames.Report_Results_Fuel_Type_Attr).ParseEnum<FuelType>(),
x.SelectSingleNode(
$".//*[local-name()='{XMLNames.Report_Result_EnergyConsumption}' and @unit='MJ/km']")?.InnerText
.ToDouble().SI(Unit.SI.Mega.Joule.Per.Kilo.Meter).Cast<JoulePerMeter>())).ToDictionary(x => x.Key, x => x.Value);
return new List<IResult>() {
GetEnergyConsumption(xmlNode, out var energyConsumption, out var electricEnergyConsumption);
return new List<IResult>() {
new Result {
ResultStatus = resultStatus,
Mission = mission,
VehicleGroup = VehicleClassHelper.Parse(vehicleGroup),
SimulationParameter = simulationParams,
EnergyConsumption = energyConsumption,
CO2 = new Dictionary<string, double>(),
ElectricEnergyConsumption = electricEnergyConsumption,
CO2 = new Dictionary<string, double > (),
OvcMode = OvcHevMode.NotApplicable
}
};
}
private void GetEnergyConsumption(XmlNode xmlNode, out Dictionary<FuelType, JoulePerMeter> energyConsumption,
out JoulePerMeter electricEnergyConsumption)
{
energyConsumption = GetNodes(XMLNames.Report_Results_Fuel, xmlNode)
.Cast<XmlNode>().Select(x => new KeyValuePair<FuelType, JoulePerMeter>(
GetAttribute(x, XMLNames.Report_Results_Fuel_Type_Attr).ParseEnum<FuelType>(),
x.SelectSingleNode(
$".//*[local-name()='{XMLNames.Report_Result_EnergyConsumption}' and @unit='MJ/km']")?.InnerText
.ToDouble().SI(Unit.SI.Mega.Joule.Per.Kilo.Meter).Cast<JoulePerMeter>())).ToDictionary(x => x.Key, x => x.Value);
electricEnergyConsumption = GetNode(XMLNames.Report_ResultEntry_VIF_ElectricEnergyConsumption, xmlNode)
.SelectSingleNode(
$".//*[local-name()='{XMLNames.Report_Result_EnergyConsumption}' and @unit='MJ/km']")?.InnerText
.ToDouble().SI(Unit.SI.Mega.Joule.Per.Kilo.Meter).Cast<JoulePerMeter>();
}
private ISimulationParameter GetSimulationParameter(XmlNode xmlNode)
{
return new SimulationParameter
{
TotalVehicleMass = GetString(XMLNames.Report_ResultEntry_TotalVehicleMass, xmlNode).ToDouble().SI<Kilogram>(),
return new SimulationParameter {
TotalVehicleMass = GetString(XMLNames.Report_ResultEntry_TotalVehicleMass, xmlNode).ToDouble()
.SI<Kilogram>(),
Payload = GetString(XMLNames.Report_Result_Payload, xmlNode).ToDouble().SI<Kilogram>(),
PassengerCount = GetString(XMLNames.Bus_PassengerCount, xmlNode).ToDouble(),
//FuelMode = GetString(XMLNames.Report_Result_FuelMode, xmlNode)
......
......@@ -276,6 +276,7 @@ namespace TUGraz.VectoCore.InputData.Impl
public MissionType Mission { get; internal set; }
public ISimulationParameter SimulationParameter { get; internal set; }
public Dictionary<FuelType, JoulePerMeter> EnergyConsumption { get; set; }
public JoulePerMeter ElectricEnergyConsumption { get; set; }
public Dictionary<string, double> CO2 { get; set; }
public OvcHevMode OvcMode { get; set; }
}
......
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