Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit e9900af1 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

Merge pull request #489 in VECTO/vecto-sim from...

Merge pull request #489 in VECTO/vecto-sim from ~EMQUARIMA/vecto-sim:bugfix/VECTO-551-average-tyre-rrc-not-in-customer to master

* commit '83968360':
  formatting xml output
  update resource file
  computing average rolling resistance
  adapt output schema to include AverageRRC
  move strings to resource, add averageRRC to customer report
parents 757c400d 83968360
No related branches found
No related tags found
No related merge requests found
This diff is collapsed.
......@@ -770,5 +770,128 @@
</data>
<data name="Component_CertificationNumber" xml:space="preserve">
<value>CertificationNumber</value>
</data>
<data name="Report_Results_FuelConsumption" xml:space="preserve">
<value>FuelConsumption</value>
</data>
<data name="Report_Results_CO2" xml:space="preserve">
<value>CO2</value>
</data>
<data name="Report_Results_Unit_Attr" xml:space="preserve">
<value>unit</value>
</data>
<data name="Report_Vehicle_VehicleGroup" xml:space="preserve">
<value>VehicleGroup</value>
</data>
<data name="Report_Input_Signature" xml:space="preserve">
<value>InputDataSignature</value>
</data>
<data name="Report_GetGearbox_GearsCount" xml:space="preserve">
<value>GearsCount</value>
</data>
<data name="Report_Gearbox_TransmissionRatioFinalGear" xml:space="preserve">
<value>TransmissionRatioFinalGear</value>
</data>
<data name="Report_Component_CertificationMethod" xml:space="preserve">
<value>CertificationMethod</value>
</data>
<data name="Report_Component_CertificationNumber" xml:space="preserve">
<value>CertificationNumber</value>
</data>
<data name="Report_AirDrag_CdxA" xml:space="preserve">
<value>CdxA</value>
</data>
<data name="Report_Tyre_TyreDimension" xml:space="preserve">
<value>TyreDimension</value>
</data>
<data name="Report_Tyre_TyreCertificationNumber" xml:space="preserve">
<value>TyreCertificationNumber</value>
</data>
<data name="Report_Tyre_TyreRRCDeclared" xml:space="preserve">
<value>TyreRRCDeclared</value>
</data>
<data name="Report_Result_Mission" xml:space="preserve">
<value>Mission</value>
</data>
<data name="Report_Result_Result" xml:space="preserve">
<value>Result</value>
</data>
<data name="Report_Result_Status_Attr" xml:space="preserve">
<value>status</value>
</data>
<data name="Report_ApplicationInfo_ApplicationInformation" xml:space="preserve">
<value>ApplicationInformation</value>
</data>
<data name="Report_ApplicationInfo_SimulationToolVersion" xml:space="preserve">
<value>SimulationToolVersion</value>
</data>
<data name="Report_ApplicationInfo_Date" xml:space="preserve">
<value>Date</value>
</data>
<data name="Report_ResultEntry_Distance" xml:space="preserve">
<value>Distance</value>
</data>
<data name="Report_ResultEntry_SimulationParameters" xml:space="preserve">
<value>SimulationParameters</value>
</data>
<data name="Report_ResultEntry_TotalVehicleMass" xml:space="preserve">
<value>TotalVehicleMass</value>
</data>
<data name="Report_ResultEntry_Payload" xml:space="preserve">
<value>Payload</value>
</data>
<data name="Report_ResultEntry_FuelType" xml:space="preserve">
<value>FuelType</value>
</data>
<data name="Report_ResultEntry_VehiclePerformance" xml:space="preserve">
<value>VehiclePerformance</value>
</data>
<data name="Report_ResultEntry_AverageSpeed" xml:space="preserve">
<value>AverageSpeed</value>
</data>
<data name="Report_ResultEntry_MinSpeed" xml:space="preserve">
<value>MinSpeed</value>
</data>
<data name="Report_ResultEntry_MaxSpeed" xml:space="preserve">
<value>MaxSpeed</value>
</data>
<data name="Report_ResultEntry_MaxDeceleration" xml:space="preserve">
<value>MaxDeceleration</value>
</data>
<data name="Report_ResultEntry_MaxAcceleration" xml:space="preserve">
<value>MaxAcceleration</value>
</data>
<data name="Report_ResultEntry_FullLoadDrivingtimePercentage" xml:space="preserve">
<value>FullLoadDrivingtimePercentage</value>
</data>
<data name="Report_ResultEntry_GearshiftCount" xml:space="preserve">
<value>GearshiftCount</value>
</data>
<data name="Report_Results_Error" xml:space="preserve">
<value>Error</value>
</data>
<data name="Report_Results_ErrorDetails" xml:space="preserve">
<value>ErrorDetails</value>
</data>
<data name="Report_Vehicle_EngineRatedPower" xml:space="preserve">
<value>EngineRatedPower</value>
</data>
<data name="Report_Vehicle_EngineDisplacement" xml:space="preserve">
<value>EngineDisplacement</value>
</data>
<data name="Report_Vehicle_Retarder" xml:space="preserve">
<value>Retarder</value>
</data>
<data name="Report_Vehicle_AxleRatio" xml:space="preserve">
<value>AxleRatio</value>
</data>
<data name="Report_Vehicle_AverageRRC" xml:space="preserve">
<value>AverageRRC</value>
</data>
<data name="Report_Vehicle_TransmissionCertificationMethod" xml:space="preserve">
<value>TransmissionMainCertificationMethod</value>
</data>
<data name="Report_Result_Status" xml:space="preserve">
<value>Status</value>
</data>
</root>
\ No newline at end of file
......@@ -89,6 +89,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
private KilogramSquareMeter _wheelsInertia;
private double? _totalRollResistanceCoefficient;
private double? _rollResistanceCoefficientWithoutTrailer;
private double? _averageRollingResistanceTruck;
public List<Axle> AxleData
{
......@@ -194,6 +195,16 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
get { return (CurbWeight ?? 0.SI<Kilogram>()) + (BodyAndTrailerWeight ?? 0.SI<Kilogram>()); }
}
public double AverageRollingResistanceTruck
{
get {
if (_averageRollingResistanceTruck == null) {
ComputeRollResistanceAndReducedMassWheels();
}
return _averageRollingResistanceTruck.GetValueOrDefault();
}
}
protected void ComputeRollResistanceAndReducedMassWheels()
{
if (TotalVehicleWeight == 0.SI<Kilogram>()) {
......@@ -207,7 +218,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
var rrc = 0.0.SI<Scalar>();
var rrcVehicle = 0.0.SI<Scalar>();
var averageRRC = 0.0;
var vehicleWheels = 0;
var wheelsInertia = 0.0.SI<KilogramSquareMeter>();
var vehicleWeightShare = 0.0;
foreach (var axle in _axleData) {
......@@ -219,16 +231,18 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
var rrcShare = axle.AxleWeightShare * axle.RollResistanceCoefficient *
Math.Pow(baseValue, Physics.RollResistanceExponent - 1);
if (axle.AxleType != AxleType.Trailer) {
rrcVehicle += rrcShare;
vehicleWeightShare += axle.AxleWeightShare;
averageRRC += axle.RollResistanceCoefficient * nrWheels;
vehicleWheels += nrWheels;
}
rrc += rrcShare;
wheelsInertia += nrWheels * axle.Inertia;
}
RollResistanceCoefficientWithoutTrailer = rrcVehicle / vehicleWeightShare;
TotalRollResistanceCoefficient = rrc;
_averageRollingResistanceTruck = averageRRC / vehicleWheels;
WheelsInertia = wheelsInertia;
}
......
......@@ -75,19 +75,22 @@ namespace TUGraz.VectoCore.OutputData.XML
new XElement(tns + XMLNames.Component_ManufacturerAddress, modelData.VehicleData.ManufacturerAddress),
new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN),
new XElement(tns + XMLNames.Vehicle_LegislativeClass, modelData.VehicleData.LegislativeClass.ToXMLFormat()),
new XElement(tns + "VehicleGroup", modelData.VehicleData.VehicleClass.GetClassNumber()),
new XElement(tns + XMLNames.Report_Vehicle_VehicleGroup, modelData.VehicleData.VehicleClass.GetClassNumber()),
new XElement(tns + XMLNames.Vehicle_AxleConfiguration, modelData.VehicleData.AxleConfiguration.GetName()),
new XElement(tns + XMLNames.Vehicle_GrossVehicleMass, modelData.VehicleData.GrossVehicleWeight.ToXMLFormat(0)),
new XElement(tns + XMLNames.Vehicle_CurbMassChassis, modelData.VehicleData.CurbWeight.ToXMLFormat(0)),
new XElement(tns + "EngineRatedPower", modelData.EngineData.RatedPowerDeclared.ToXMLFormat(0)),
new XElement(tns + "EngineDisplacement",
new XElement(tns + XMLNames.Report_Vehicle_EngineRatedPower, modelData.EngineData.RatedPowerDeclared.ToXMLFormat(0)),
new XElement(tns + XMLNames.Report_Vehicle_EngineDisplacement,
modelData.EngineData.Displacement.ConvertTo().Cubic.Centi.Meter.ToXMLFormat(0)),
new XElement(tns + XMLNames.Engine_FuelType, modelData.EngineData.FuelType.ToXMLFormat()),
new XElement(tns + "TransmissionMainCertificationMethod", modelData.GearboxData.CertificationMethod.ToXMLFormat()),
new XElement(tns + XMLNames.Report_Vehicle_TransmissionCertificationMethod,
modelData.GearboxData.CertificationMethod.ToXMLFormat()),
new XElement(tns + XMLNames.Gearbox_TransmissionType, modelData.GearboxData.Type.ToXMLFormat()),
new XElement(tns + "GearsCount", modelData.GearboxData.Gears.Count),
new XElement(tns + "Retarder", modelData.Retarder.Type.IsDedicatedComponent()),
new XElement(tns + "AxleRatio", modelData.AxleGearData.AxleGear.Ratio.ToXMLFormat(3))
new XElement(tns + XMLNames.Report_GetGearbox_GearsCount, modelData.GearboxData.Gears.Count),
new XElement(tns + XMLNames.Report_Vehicle_Retarder, modelData.Retarder.Type.IsDedicatedComponent()),
new XElement(tns + XMLNames.Report_Vehicle_AxleRatio, modelData.AxleGearData.AxleGear.Ratio.ToXMLFormat(3)),
new XElement(tns + XMLNames.Report_Vehicle_AverageRRC,
modelData.VehicleData.AverageRollingResistanceTruck.ToXMLFormat(6))
);
InputDataIntegrity = new XElement(tns + "InputDataSignature",
modelData.InputDataHash == null ? CreateDummySig() : new XElement(modelData.InputDataHash));
......@@ -107,9 +110,10 @@ namespace TUGraz.VectoCore.OutputData.XML
{
foreach (var resultEntry in entry.ModData) {
allSuccess &= resultEntry.Value.Status == VectoRun.Status.Success;
Results.Add(new XElement(tns + "Result",
new XAttribute("status", resultEntry.Value.Status == VectoRun.Status.Success ? "success" : "error"),
new XElement(tns + "Mission", entry.Mission.ToXMLFormat()),
Results.Add(new XElement(tns + XMLNames.Report_Result_Result,
new XAttribute(XMLNames.Report_Result_Status_Attr,
resultEntry.Value.Status == VectoRun.Status.Success ? "success" : "error"),
new XElement(tns + XMLNames.Report_Result_Mission, entry.Mission.ToXMLFormat()),
GetResults(resultEntry)));
}
}
......@@ -145,9 +149,10 @@ namespace TUGraz.VectoCore.OutputData.XML
private XElement GetApplicationInfo()
{
var vectodll = Assembly.LoadFrom(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "VectoCore.dll")).GetName();
return new XElement(tns + "ApplicationInformation",
new XElement(tns + "SimulationToolVersion", vectodll.Version),
new XElement(tns + "Date", XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)));
return new XElement(tns + XMLNames.Report_ApplicationInfo_ApplicationInformation,
new XElement(tns + XMLNames.Report_ApplicationInfo_SimulationToolVersion, vectodll.Version),
new XElement(tns + XMLNames.Report_ApplicationInfo_Date,
XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)));
}
public void GenerateReport(XElement resultSignature)
......@@ -155,7 +160,7 @@ namespace TUGraz.VectoCore.OutputData.XML
var xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
var retVal = new XDocument();
var results = new XElement(Results);
results.AddFirst(new XElement(tns + "Status", allSuccess ? "success" : "error"));
results.AddFirst(new XElement(tns + XMLNames.Report_Result_Status, allSuccess ? "success" : "error"));
var vehicle = new XElement(VehiclePart);
vehicle.Add(InputDataIntegrity);
retVal.Add(new XElement(tns + "VectoCustomerInformation",
......
......@@ -36,6 +36,7 @@ using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Resources;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.Simulation.Data;
......@@ -173,14 +174,17 @@ namespace TUGraz.VectoCore.OutputData.XML
{
var fuel = FuelData.Instance().Lookup(result.FuelType);
var retVal = new List<XElement> {
new XElement(tns + "FuelConsumption", new XAttribute("unit", "g/km"),
new XElement(tns + XMLNames.Report_Results_FuelConsumption,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/km"),
(result.FuelConsumptionTotal.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter).Value()
.ToMinSignificantDigits(3, 1)),
new XElement(tns + "FuelConsumption", new XAttribute("unit", "g/t-km"),
new XElement(tns + XMLNames.Report_Results_FuelConsumption,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/t-km"),
(result.FuelConsumptionTotal.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter /
result.Payload.ConvertTo().Ton).Value().ToMinSignificantDigits(3, 1)),
result.CargoVolume > 0
? new XElement(tns + "FuelConsumption", new XAttribute("unit", "g/m³-km"),
? new XElement(tns + XMLNames.Report_Results_FuelConsumption,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/m³-km"),
(result.FuelConsumptionTotal.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter / result.CargoVolume)
.Value
().ToMinSignificantDigits(3, 1))
......@@ -188,38 +192,46 @@ namespace TUGraz.VectoCore.OutputData.XML
};
//FC
if (fullOutput) {
retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "MJ/km"),
retVal.Add(new XElement(tns + XMLNames.Report_Results_FuelConsumption,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "MJ/km"),
(result.EnergyConsumptionTotal / result.Distance.ConvertTo().Kilo.Meter / 1e6).Value().ToMinSignificantDigits(3, 1)));
retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "MJ/t-km"),
retVal.Add(new XElement(tns + XMLNames.Report_Results_FuelConsumption,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "MJ/t-km"),
(result.EnergyConsumptionTotal / result.Distance.ConvertTo().Kilo.Meter / result.Payload.ConvertTo().Ton / 1e6)
.Value().ToMinSignificantDigits(3, 1)));
if (result.CargoVolume > 0) {
retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "MJ/m³-km"),
retVal.Add(new XElement(tns + XMLNames.Report_Results_FuelConsumption,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "MJ/m³-km"),
(result.EnergyConsumptionTotal / result.Distance.ConvertTo().Kilo.Meter / result.CargoVolume / 1e6).Value()
.ToMinSignificantDigits(3, 1)));
}
}
if (fuel.FuelDensity != null) {
retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "l/100km"),
retVal.Add(new XElement(tns + XMLNames.Report_Results_FuelConsumption,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "l/100km"),
(result.FuelConsumptionTotal.ConvertTo().Gramm / fuel.FuelDensity / result.Distance.ConvertTo().Kilo.Meter * 100)
.Value().ToMinSignificantDigits(3, 1)));
retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "l/t-km"),
retVal.Add(new XElement(tns + XMLNames.Report_Results_FuelConsumption,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "l/t-km"),
(result.FuelConsumptionTotal.ConvertTo().Gramm / fuel.FuelDensity / result.Distance.ConvertTo().Kilo.Meter /
result.Payload.ConvertTo().Ton).Value().ToMinSignificantDigits(3, 1)));
if (result.CargoVolume > 0) {
retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "l/m³-km"),
retVal.Add(new XElement(tns + XMLNames.Report_Results_FuelConsumption,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "l/m³-km"),
(result.FuelConsumptionTotal.ConvertTo().Gramm / fuel.FuelDensity / result.Distance.ConvertTo().Kilo.Meter /
result.CargoVolume).Value().ToMinSignificantDigits(3, 1)));
}
}
//CO2
retVal.Add(new XElement(tns + "CO2", new XAttribute("unit", "g/km"),
retVal.Add(new XElement(tns + XMLNames.Report_Results_CO2, new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/km"),
(result.CO2Total.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter).Value().ToMinSignificantDigits(3, 1)));
retVal.Add(new XElement(tns + "CO2", new XAttribute("unit", "g/t-km"),
retVal.Add(new XElement(tns + XMLNames.Report_Results_CO2,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/t-km"),
(result.CO2Total.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter /
result.Payload.ConvertTo().Ton).Value().ToMinSignificantDigits(3, 1)));
if (result.CargoVolume > 0) {
retVal.Add(new XElement(tns + "CO2", new XAttribute("unit", "g/m³-km"),
retVal.Add(new XElement(tns + XMLNames.Report_Results_CO2,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/m³-km"),
(result.CO2Total.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter / result.CargoVolume).Value()
.ToMinSignificantDigits(3, 1)));
}
......
......@@ -74,7 +74,7 @@ namespace TUGraz.VectoCore.OutputData.XML
VehiclePart.Add(
new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN),
new XElement(tns + XMLNames.Vehicle_LegislativeClass, modelData.VehicleData.LegislativeClass.ToXMLFormat()),
new XElement(tns + "VehicleGroup", modelData.VehicleData.VehicleClass.GetClassNumber()),
new XElement(tns + XMLNames.Report_Vehicle_VehicleGroup, modelData.VehicleData.VehicleClass.GetClassNumber()),
new XElement(tns + XMLNames.Vehicle_AxleConfiguration, modelData.VehicleData.AxleConfiguration.GetName()),
new XElement(tns + XMLNames.Vehicle_GrossVehicleMass, modelData.VehicleData.GrossVehicleWeight.ToXMLFormat(0)),
new XElement(tns + XMLNames.Vehicle_CurbMassChassis, modelData.VehicleData.CurbWeight.ToXMLFormat(0)),
......@@ -92,7 +92,7 @@ namespace TUGraz.VectoCore.OutputData.XML
GetAuxiliariesDescription(modelData.Aux)
)
);
InputDataIntegrity = new XElement(tns + "InputDataSignature",
InputDataIntegrity = new XElement(tns + XMLNames.Report_Input_Signature,
modelData.InputDataHash == null ? CreateDummySig() : new XElement(modelData.InputDataHash));
}
......@@ -141,8 +141,9 @@ namespace TUGraz.VectoCore.OutputData.XML
return new XElement(tns + XMLNames.Component_Gearbox,
GetCommonDescription(gearboxData),
new XElement(tns + XMLNames.Gearbox_TransmissionType, gearboxData.Type.ToXMLFormat()),
new XElement(tns + "GearsCount", gearboxData.Gears.Count),
new XElement(tns + "TransmissionRatioFinalGear", gearboxData.Gears.Last().Value.Ratio.ToXMLFormat(3))
new XElement(tns + XMLNames.Report_GetGearbox_GearsCount, gearboxData.Gears.Count),
new XElement(tns + XMLNames.Report_Gearbox_TransmissionRatioFinalGear,
gearboxData.Gears.Last().Value.Ratio.ToXMLFormat(3))
);
}
......@@ -184,16 +185,16 @@ namespace TUGraz.VectoCore.OutputData.XML
{
if (airdragData.CertificationMethod == CertificationMethod.StandardValues) {
return new XElement(tns + XMLNames.Component_AirDrag,
new XElement(tns + "CertificationMethod", airdragData.CertificationMethod.ToXMLFormat()),
new XElement(tns + "CdxA", airdragData.DeclaredAirdragArea.ToXMLFormat(2))
new XElement(tns + XMLNames.Report_Component_CertificationMethod, airdragData.CertificationMethod.ToXMLFormat()),
new XElement(tns + XMLNames.Report_AirDrag_CdxA, airdragData.DeclaredAirdragArea.ToXMLFormat(2))
);
}
return new XElement(tns + XMLNames.Component_AirDrag,
new XElement(tns + XMLNames.Component_Model, airdragData.ModelName),
new XElement(tns + "CertificationMethod", airdragData.CertificationMethod.ToXMLFormat()),
new XElement(tns + "CertificationNumber", airdragData.CertificationNumber),
new XElement(tns + XMLNames.Report_Component_CertificationMethod, airdragData.CertificationMethod.ToXMLFormat()),
new XElement(tns + XMLNames.Report_Component_CertificationNumber, airdragData.CertificationNumber),
new XElement(tns + XMLNames.DI_Signature_Reference_DigestValue, airdragData.DigestValueInput),
new XElement(tns + "CdxA", airdragData.DeclaredAirdragArea.ToXMLFormat(2))
new XElement(tns + XMLNames.Report_AirDrag_CdxA, airdragData.DeclaredAirdragArea.ToXMLFormat(2))
);
}
......@@ -215,9 +216,9 @@ namespace TUGraz.VectoCore.OutputData.XML
{
return new XElement(tns + XMLNames.AxleWheels_Axles_Axle,
new XAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, i),
new XElement(tns + "TyreDimension", axle.WheelsDimension),
new XElement(tns + "TyreCertificationNumber", axle.CertificationNumber),
new XElement(tns + "TyreRRCDeclared", axle.RollResistanceCoefficient.ToXMLFormat(4)),
new XElement(tns + XMLNames.Report_Tyre_TyreDimension, axle.WheelsDimension),
new XElement(tns + XMLNames.Report_Tyre_TyreCertificationNumber, axle.CertificationNumber),
new XElement(tns + XMLNames.Report_Tyre_TyreRRCDeclared, axle.RollResistanceCoefficient.ToXMLFormat(4)),
new XElement(tns + XMLNames.AxleWheels_Axles_Axle_TwinTyres, axle.TwinTyres));
}
......@@ -246,7 +247,7 @@ namespace TUGraz.VectoCore.OutputData.XML
{
return new object[] {
new XElement(tns + XMLNames.Component_Model, data.ModelName),
new XElement(tns + "CertificationNumber", data.CertificationNumber),
new XElement(tns + XMLNames.Report_Component_CertificationNumber, data.CertificationNumber),
new XElement(tns + XMLNames.DI_Signature_Reference_DigestValue, data.DigestValueInput)
};
}
......@@ -255,10 +256,10 @@ namespace TUGraz.VectoCore.OutputData.XML
{
return new object[] {
new XElement(tns + XMLNames.Component_Model, data.ModelName),
new XElement(tns + "CertificationMethod", data.CertificationMethod.ToXMLFormat()),
new XElement(tns + XMLNames.Report_Component_CertificationMethod, data.CertificationMethod.ToXMLFormat()),
data.CertificationMethod == CertificationMethod.StandardValues
? null
: new XElement(tns + "CertificationNumber", data.CertificationNumber),
: new XElement(tns + XMLNames.Report_Component_CertificationNumber, data.CertificationNumber),
new XElement(tns + XMLNames.DI_Signature_Reference_DigestValue, data.DigestValueInput)
};
}
......@@ -268,9 +269,10 @@ namespace TUGraz.VectoCore.OutputData.XML
{
foreach (var resultEntry in entry.ModData) {
allSuccess &= resultEntry.Value.Status == VectoRun.Status.Success;
Results.Add(new XElement(tns + "Result",
new XAttribute("status", resultEntry.Value.Status == VectoRun.Status.Success?"success" : "error"),
new XElement(tns + "Mission", entry.Mission.ToXMLFormat()),
Results.Add(new XElement(tns + XMLNames.Report_Result_Result,
new XAttribute(XMLNames.Report_Result_Status_Attr,
resultEntry.Value.Status == VectoRun.Status.Success ? "success" : "error"),
new XElement(tns + XMLNames.Report_Result_Mission, entry.Mission.ToXMLFormat()),
GetResults(resultEntry)));
}
}
......@@ -286,8 +288,8 @@ namespace TUGraz.VectoCore.OutputData.XML
case VectoRun.Status.Canceled:
case VectoRun.Status.Aborted:
return new object[] {
new XElement(tns+"Error", resultEntry.Value.Error),
new XElement(tns+"ErrorDetails", resultEntry.Value.StackTrace),
new XElement(tns + XMLNames.Report_Results_Error, resultEntry.Value.Error),
new XElement(tns + XMLNames.Report_Results_ErrorDetails, resultEntry.Value.StackTrace),
};
default:
throw new ArgumentOutOfRangeException();
......@@ -297,20 +299,29 @@ namespace TUGraz.VectoCore.OutputData.XML
private object[] GetSuccessResultEntry(XMLDeclarationReport.ResultEntry result)
{
return new object[] {
new XElement(tns + "Distance", new XAttribute("unit", "km"), result.Distance.ConvertTo().Kilo.Meter.ToXMLFormat(3)),
new XElement(tns + "SimulationParameters",
new XElement(tns + "TotalVehicleMass", new XAttribute("unit", "kg"), result.TotalVehicleWeight.ToXMLFormat(0)),
new XElement(tns + "Payload", new XAttribute("unit", "kg"), result.Payload.ToXMLFormat(0)),
new XElement(tns + "FuelType", result.FuelType.ToXMLFormat())
new XElement(tns + XMLNames.Report_ResultEntry_Distance, new XAttribute(XMLNames.Report_Results_Unit_Attr, "km"),
result.Distance.ConvertTo().Kilo.Meter.ToXMLFormat(3)),
new XElement(tns + XMLNames.Report_ResultEntry_SimulationParameters,
new XElement(tns + XMLNames.Report_ResultEntry_TotalVehicleMass,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "kg"), result.TotalVehicleWeight.ToXMLFormat(0)),
new XElement(tns + XMLNames.Report_ResultEntry_Payload, new XAttribute(XMLNames.Report_Results_Unit_Attr, "kg"),
result.Payload.ToXMLFormat(0)),
new XElement(tns + XMLNames.Report_ResultEntry_FuelType, result.FuelType.ToXMLFormat())
),
new XElement(tns + "VehiclePerformance",
new XElement(tns + "AverageSpeed", new XAttribute("unit", "km/h"), result.AverageSpeed.AsKmph.ToXMLFormat(1)),
new XElement(tns + "MinSpeed", new XAttribute("unit", "km/h"), result.MinSpeed.AsKmph.ToXMLFormat(1)),
new XElement(tns + "MaxSpeed", new XAttribute("unit", "km/h"), result.MaxSpeed.AsKmph.ToXMLFormat(1)),
new XElement(tns + "MaxDeceleration", new XAttribute("unit", "m/s²"), result.MaxDeceleration.ToXMLFormat(2)),
new XElement(tns + "MaxAcceleration", new XAttribute("unit", "m/s²"), result.MaxAcceleration.ToXMLFormat(2)),
new XElement(tns + "FullLoadDrivingtimePercentage", result.FullLoadPercentage.ToXMLFormat(2)),
new XElement(tns + "GearshiftCount", result.GearshiftCount.ToXMLFormat(0))
new XElement(tns + XMLNames.Report_ResultEntry_VehiclePerformance,
new XElement(tns + XMLNames.Report_ResultEntry_AverageSpeed,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "km/h"), result.AverageSpeed.AsKmph.ToXMLFormat(1)),
new XElement(tns + XMLNames.Report_ResultEntry_MinSpeed, new XAttribute(XMLNames.Report_Results_Unit_Attr, "km/h"),
result.MinSpeed.AsKmph.ToXMLFormat(1)),
new XElement(tns + XMLNames.Report_ResultEntry_MaxSpeed, new XAttribute(XMLNames.Report_Results_Unit_Attr, "km/h"),
result.MaxSpeed.AsKmph.ToXMLFormat(1)),
new XElement(tns + XMLNames.Report_ResultEntry_MaxDeceleration,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "m/s²"), result.MaxDeceleration.ToXMLFormat(2)),
new XElement(tns + XMLNames.Report_ResultEntry_MaxAcceleration,
new XAttribute(XMLNames.Report_Results_Unit_Attr, "m/s²"), result.MaxAcceleration.ToXMLFormat(2)),
new XElement(tns + XMLNames.Report_ResultEntry_FullLoadDrivingtimePercentage,
result.FullLoadPercentage.ToXMLFormat(2)),
new XElement(tns + XMLNames.Report_ResultEntry_GearshiftCount, result.GearshiftCount.ToXMLFormat(0))
),
//FC
XMLDeclarationReport.GetResults(result, tns, true).Cast<object>().ToArray()
......@@ -320,9 +331,10 @@ namespace TUGraz.VectoCore.OutputData.XML
private XElement GetApplicationInfo()
{
var vectodll = Assembly.LoadFrom(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "VectoCore.dll")).GetName();
return new XElement(tns + "ApplicationInformation",
new XElement(tns + "SimulationToolVersion", vectodll.Version),
new XElement(tns + "Date", XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)));
return new XElement(tns + XMLNames.Report_ApplicationInfo_ApplicationInformation,
new XElement(tns + XMLNames.Report_ApplicationInfo_SimulationToolVersion, vectodll.Version),
new XElement(tns + XMLNames.Report_ApplicationInfo_Date,
XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)));
}
public void GenerateReport()
......@@ -330,7 +342,7 @@ namespace TUGraz.VectoCore.OutputData.XML
var xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
var retVal = new XDocument();
var results = new XElement(Results);
results.AddFirst(new XElement(tns + "Status", allSuccess ? "success" : "error"));
results.AddFirst(new XElement(tns + XMLNames.Report_Result_Status, allSuccess ? "success" : "error"));
var vehicle = new XElement(VehiclePart);
vehicle.Add(InputDataIntegrity);
retVal.Add(new XElement(tns + "VectoOutput",
......
......@@ -187,6 +187,7 @@
<xs:documentation>P150</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AverageRRC" type="vdecdef:TyreRRCISOType"/>
<xs:element name="InputDataSignature" type="vdecdef:SignatureType"/>
</xs:sequence>
</xs:complexType>
......
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