Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit f260fdab authored by Markus QUARITSCH's avatar Markus QUARITSCH
Browse files

Pull request #943: Develop

Merge in VECTO/vecto-sim from develop to master

* commit 'de356182':
  new VECTO Release
  bugfix in gearbox GUI: torque limits must not be null (MockVehicle, used for creating gearbox data in validation)
  update xml schema version 2.3 with bugfixes
  fix testdata in VTP tests: adding missing columns, renaming columns
  added more si-conversion tests
  using SI units in VTP results, use convertTo... methods to write values in VTP Report added testcases for unit conversion
  bugfix: added missing CO2 from PEMS
  bugfix: corrected CO2 and fuel consumption in VTP report
  updated torque signal names in VTP cycle according to 2nd amendment
parents c55afb5f de356182
No related branches found
No related tags found
No related merge requests found
Showing
with 337 additions and 142 deletions
No preview for this file type
File added
File added
No preview for this file type
No preview for this file type
...@@ -2,6 +2,17 @@ ...@@ -2,6 +2,17 @@
**VECTO-3.3.14** **VECTO-3.3.14**
***Build 3011 (2023-03-31) OFFICIAL RELEASE***
- Bugfixes (compared to 3.3.14.2981)
* [VECTO-1719] - Missing CO2 values per fuel in the VTP report
* [VECTO-1720] - Torque signal names in the VTP vdri need to be updated
* [VECTO-1730] - VTP - CO2 from PEMS input and reporting
* [VECTO-1732] - Unit of CO2 figures in VTP report
* [VECTO-1733] - Update XML Schema v2.3 with the latest bugfixes
* [VECTO-1736] - Gearbox GUI error
***Build 2981 (2023-03-01) RELEASE CANDIDATE*** ***Build 2981 (2023-03-01) RELEASE CANDIDATE***
- Bugfixes - Bugfixes
......
...@@ -8291,6 +8291,20 @@ contact <a href="mailto:vecto@jrc.ec.europa.eu">vecto@jrc.ec.europa.eu</a>.</p> ...@@ -8291,6 +8291,20 @@ contact <a href="mailto:vecto@jrc.ec.europa.eu">vecto@jrc.ec.europa.eu</a>.</p>
<section id="changelog" class="level1"> <section id="changelog" class="level1">
<h1>Changelog</h1> <h1>Changelog</h1>
<p><strong>VECTO-3.3.14</strong></p> <p><strong>VECTO-3.3.14</strong></p>
<p><strong><em>Build 3011 (2023-03-31) OFFICIAL
RELEASE</em></strong></p>
<ul>
<li>Bugfixes (compared to 3.3.14.2981)
<ul>
<li>[VECTO-1719] - Missing CO2 values per fuel in the VTP report</li>
<li>[VECTO-1720] - Torque signal names in the VTP vdri need to be
updated</li>
<li>[VECTO-1730] - VTP - CO2 from PEMS input and reporting</li>
<li>[VECTO-1732] - Unit of CO2 figures in VTP report</li>
<li>[VECTO-1733] - Update XML Schema v2.3 with the latest bugfixes</li>
<li>[VECTO-1736] - Gearbox GUI error</li>
</ul></li>
</ul>
<p><strong><em>Build 2981 (2023-03-01) RELEASE <p><strong><em>Build 2981 (2023-03-01) RELEASE
CANDIDATE</em></strong></p> CANDIDATE</em></strong></p>
<ul> <ul>
File added
...@@ -646,7 +646,11 @@ Public Class MockEngineeringVehicle ...@@ -646,7 +646,11 @@ Public Class MockEngineeringVehicle
Public Property AxleConfiguration As AxleConfiguration Implements IVehicleDeclarationInputData.AxleConfiguration Public Property AxleConfiguration As AxleConfiguration Implements IVehicleDeclarationInputData.AxleConfiguration
Public Property CurbMassChassis As Kilogram Implements IVehicleDeclarationInputData.CurbMassChassis Public Property CurbMassChassis As Kilogram Implements IVehicleDeclarationInputData.CurbMassChassis
Public Property GrossVehicleMassRating As Kilogram Implements IVehicleDeclarationInputData.GrossVehicleMassRating Public Property GrossVehicleMassRating As Kilogram Implements IVehicleDeclarationInputData.GrossVehicleMassRating
Public Property TorqueLimits As IList(Of ITorqueLimitInputData) Implements IVehicleDeclarationInputData.TorqueLimits Public readonly Property TorqueLimits As IList(Of ITorqueLimitInputData) Implements IVehicleDeclarationInputData.TorqueLimits
get
Return new List(Of ITorqueLimitInputData)
End Get
End Property
Public Property ManufacturerAddress As String Implements IVehicleDeclarationInputData.ManufacturerAddress Public Property ManufacturerAddress As String Implements IVehicleDeclarationInputData.ManufacturerAddress
Public Property EngineIdleSpeed As PerSecond Implements IVehicleDeclarationInputData.EngineIdleSpeed Public Property EngineIdleSpeed As PerSecond Implements IVehicleDeclarationInputData.EngineIdleSpeed
Public Property VocationalVehicle As Boolean Implements IVehicleDeclarationInputData.VocationalVehicle Public Property VocationalVehicle As Boolean Implements IVehicleDeclarationInputData.VocationalVehicle
......
...@@ -30,5 +30,5 @@ ...@@ -30,5 +30,5 @@
*/ */
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("3.3.14.2981")] [assembly: AssemblyVersion("3.3.14.3011")]
[assembly: AssemblyFileVersion("3.3.14.2981")] [assembly: AssemblyFileVersion("3.3.14.3011")]
\ No newline at end of file \ No newline at end of file
...@@ -598,18 +598,33 @@ namespace TUGraz.VectoCommon.Utils ...@@ -598,18 +598,33 @@ namespace TUGraz.VectoCommon.Utils
return SIBase<Watt>.Create(wattSecond.Val / second.Value()); return SIBase<Watt>.Create(wattSecond.Val / second.Value());
} }
public static PerWattSecond operator /(double val, WattSecond wattSecond)
{
return SIBase<PerWattSecond>.Create(val / wattSecond.Value());
}
public static Kilogram operator *(WattSecond ws, KilogramPerWattSecond kpws) public static Kilogram operator *(WattSecond ws, KilogramPerWattSecond kpws)
{ {
return SIBase<Kilogram>.Create(ws.Val * kpws.Value()); return SIBase<Kilogram>.Create(ws.Val * kpws.Value());
} }
} }
public class PerWattSecond : SIBase<PerWattSecond>
{
private static readonly int[] Units = { -1, -2, 2, 0, 0, 0, 0 };
[DebuggerHidden]
private PerWattSecond(double val) : base(val, Units) { }
}
public class WattSecondPerCubicMeter : SIBase<WattSecondPerCubicMeter> public class WattSecondPerCubicMeter : SIBase<WattSecondPerCubicMeter>
{ {
private static readonly int[] Units = { 1, -1, -2, 0, 0, 0, 0 }; private static readonly int[] Units = { 1, -1, -2, 0, 0, 0, 0 };
[DebuggerHidden] [DebuggerHidden]
private WattSecondPerCubicMeter(double val) : base(val, Units) { } private WattSecondPerCubicMeter(double val) : base(val, Units) { }
public override string UnitString { get { return "Ws"; } }
} }
public class WattPerKelvinSquareMeter : SIBase<WattPerKelvinSquareMeter> public class WattPerKelvinSquareMeter : SIBase<WattPerKelvinSquareMeter>
...@@ -831,6 +846,11 @@ namespace TUGraz.VectoCommon.Utils ...@@ -831,6 +846,11 @@ namespace TUGraz.VectoCommon.Utils
return SIBase<MeterPerSecond>.Create(perSecond.Val * meter.Value()); return SIBase<MeterPerSecond>.Create(perSecond.Val * meter.Value());
} }
public static Scalar operator *(PerSecond perSecond, Second sec)
{
return SIBase<Scalar>.Create(perSecond.Val * sec.Value());
}
public double AsRPM public double AsRPM
{ {
get { return Val * 60 / (2 * Math.PI); } get { return Val * 60 / (2 * Math.PI); }
......
...@@ -181,10 +181,20 @@ namespace TUGraz.VectoCommon.Utils ...@@ -181,10 +181,20 @@ namespace TUGraz.VectoCommon.Utils
} }
public static ConvertedSI ConvertToPerKiloWattHour(this PerWattSecond value)
{
return new ConvertedSI(value.Value() * 3600e3, "#/kWh");
}
public static ConvertedSI ConvertToGramPerKiloWattHour(this KilogramPerWattSecond value) public static ConvertedSI ConvertToGramPerKiloWattHour(this KilogramPerWattSecond value)
{ {
return new ConvertedSI(value.Value() * 3600e6, "g/kWh"); return new ConvertedSI(value.Value() * 3600e6, "g/kWh");
} }
public static ConvertedSI ConvertToMilliGramPerKiloWattHour(this KilogramPerWattSecond value)
{
return new ConvertedSI(value.Value() * 3600e9, "mg/kWh");
}
public static ConvertedSI ConvertToKiloWattHour(this WattSecond value) public static ConvertedSI ConvertToKiloWattHour(this WattSecond value)
{ {
return new ConvertedSI(value.Value() / Kilo / SecondsPerHour, "kWh"); return new ConvertedSI(value.Value() / Kilo / SecondsPerHour, "kWh");
......
...@@ -30,5 +30,5 @@ ...@@ -30,5 +30,5 @@
*/ */
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("1.2.1.2981")] [assembly: AssemblyVersion("1.2.1.3011")]
[assembly: AssemblyFileVersion("1.2.1.2981")] [assembly: AssemblyFileVersion("1.2.1.3011")]
...@@ -30,5 +30,5 @@ ...@@ -30,5 +30,5 @@
*/ */
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("3.3.14.2981")] [assembly: AssemblyVersion("3.3.14.3011")]
[assembly: AssemblyFileVersion("3.3.14.2981")] [assembly: AssemblyFileVersion("3.3.14.3011")]
\ No newline at end of file \ No newline at end of file
...@@ -42,7 +42,6 @@ namespace TUGraz.VectoCore.Configuration ...@@ -42,7 +42,6 @@ namespace TUGraz.VectoCore.Configuration
public const double RPMToRad = 2 * Math.PI / 60; public const double RPMToRad = 2 * Math.PI / 60;
public const double Kilo = 1000; public const double Kilo = 1000;
public const double MeterPerSecondToKMH = 3.6; public const double MeterPerSecondToKMH = 3.6;
public const int GramsToMilligrams = 1000;
public const int Mega = 1000000; public const int Mega = 1000000;
public static class Auxiliaries public static class Auxiliaries
......
...@@ -346,8 +346,8 @@ namespace TUGraz.VectoCore.InputData.Reader ...@@ -346,8 +346,8 @@ namespace TUGraz.VectoCore.InputData.Reader
public const string EngineSpeed = "n"; public const string EngineSpeed = "n";
public const string EngineSpeedSuffix = "n_eng"; public const string EngineSpeedSuffix = "n_eng";
public const string FanSpeed = "n_fan"; public const string FanSpeed = "n_fan";
public const string WheelTorqueLeft = "tq_left"; public const string WheelTorqueLeft = "tq_wh_left";
public const string WheelTorqueRight = "tq_right"; public const string WheelTorqueRight = "tq_wh_right";
public const string WheelSpeedLeft = "n_wh_left"; public const string WheelSpeedLeft = "n_wh_left";
public const string WheelSpeedRight = "n_wh_right"; public const string WheelSpeedRight = "n_wh_right";
public const string FuelConsumption = "fc"; public const string FuelConsumption = "fc";
...@@ -369,6 +369,7 @@ namespace TUGraz.VectoCore.InputData.Reader ...@@ -369,6 +369,7 @@ namespace TUGraz.VectoCore.InputData.Reader
public const string NOxMassFlow = "NOx"; public const string NOxMassFlow = "NOx";
public const string THCMassFlow = "THC"; public const string THCMassFlow = "THC";
public const string PMNumberFlow = "PN"; public const string PMNumberFlow = "PN";
public const string CO2MassFlow = "CO2";
} }
#region DataParser #region DataParser
...@@ -889,7 +890,8 @@ namespace TUGraz.VectoCore.InputData.Reader ...@@ -889,7 +890,8 @@ namespace TUGraz.VectoCore.InputData.Reader
THCMassFlow = table.Columns.Contains(Fields.THCMassFlow) THCMassFlow = table.Columns.Contains(Fields.THCMassFlow)
? row.ParseDouble(Fields.THCMassFlow).SI(Unit.SI.Gramm.Per.Second).Cast<KilogramPerSecond>() ? row.ParseDouble(Fields.THCMassFlow).SI(Unit.SI.Gramm.Per.Second).Cast<KilogramPerSecond>()
: null, : null,
PMNumberFlow = row.ParseDouble(Fields.PMNumberFlow).SI<PerSecond>() PMNumberFlow = row.ParseDouble(Fields.PMNumberFlow).SI<PerSecond>(),
CO2MassFlow = row.ParseDouble(Fields.CO2MassFlow).SI(Unit.SI.Gramm.Per.Second).Cast<KilogramPerSecond>()
}; };
}).ToArray(); }).ToArray();
...@@ -909,7 +911,8 @@ namespace TUGraz.VectoCore.InputData.Reader ...@@ -909,7 +911,8 @@ namespace TUGraz.VectoCore.InputData.Reader
Fields.CombustionEngineTorque, Fields.CombustionEngineTorque,
Fields.COMassFlow, Fields.COMassFlow,
Fields.NOxMassFlow, Fields.NOxMassFlow,
Fields.PMNumberFlow Fields.PMNumberFlow,
Fields.CO2MassFlow
}; };
var allowedCols = new[] { var allowedCols = new[] {
...@@ -930,7 +933,8 @@ namespace TUGraz.VectoCore.InputData.Reader ...@@ -930,7 +933,8 @@ namespace TUGraz.VectoCore.InputData.Reader
Fields.NMHCMassFlow, Fields.NMHCMassFlow,
Fields.NOxMassFlow, Fields.NOxMassFlow,
Fields.THCMassFlow, Fields.THCMassFlow,
Fields.PMNumberFlow Fields.PMNumberFlow,
Fields.CO2MassFlow
}.Concat(EnumHelper.GetValues<FuelType>().Select(x => "fc_" + x.ToXMLFormat())); }.Concat(EnumHelper.GetValues<FuelType>().Select(x => "fc_" + x.ToXMLFormat()));
const bool allowAux = true; const bool allowAux = true;
......
...@@ -153,6 +153,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data ...@@ -153,6 +153,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
NOxMassFlow = entry.NOxMassFlow; NOxMassFlow = entry.NOxMassFlow;
THCMassFlow = entry.THCMassFlow; THCMassFlow = entry.THCMassFlow;
PMNumberFlow = entry.PMNumberFlow; PMNumberFlow = entry.PMNumberFlow;
CO2MassFlow = entry.CO2MassFlow;
} }
/// <summary> /// <summary>
...@@ -273,6 +274,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data ...@@ -273,6 +274,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
public KilogramPerSecond THCMassFlow; public KilogramPerSecond THCMassFlow;
public KilogramPerSecond CO2MassFlow;
public PerSecond PMNumberFlow; public PerSecond PMNumberFlow;
// required for VTP Mode (validation of cycle data in declaration mode) // required for VTP Mode (validation of cycle data in declaration mode)
......
This diff is collapsed.
...@@ -30,5 +30,5 @@ ...@@ -30,5 +30,5 @@
*/ */
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("3.3.14.2981")] [assembly: AssemblyVersion("3.3.14.3011")]
[assembly: AssemblyFileVersion("3.3.14.2981")] [assembly: AssemblyFileVersion("3.3.14.3011")]
...@@ -213,6 +213,15 @@ ...@@ -213,6 +213,15 @@
</xs:element> </xs:element>
<xs:element name="VTP"> <xs:element name="VTP">
<xs:complexType> <xs:complexType>
<xs:sequence>
<xs:element name="TotalEmissions" type="VTPEmissionsType"/>
<xs:element name="Emissions" type="VTPEmissionsType" maxOccurs="2"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="VTPEmissionsType">
<xs:sequence> <xs:sequence>
<xs:element name="Measured"> <xs:element name="Measured">
<xs:complexType> <xs:complexType>
...@@ -242,9 +251,13 @@ ...@@ -242,9 +251,13 @@
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
</xs:complexType> <xs:attribute name="fuelType">
</xs:element> <xs:simpleType>
</xs:sequence> <xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType> </xs:complexType>
<xs:complexType name="PositiveEngineWorkType"> <xs:complexType name="PositiveEngineWorkType">
<xs:sequence> <xs:sequence>
...@@ -369,7 +382,7 @@ ...@@ -369,7 +382,7 @@
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
<xs:attribute name="fuelType" use="required"> <xs:attribute name="fuelType">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:minLength value="1"/> <xs:minLength value="1"/>
...@@ -476,7 +489,8 @@ ...@@ -476,7 +489,8 @@
</xs:simpleContent> </xs:simpleContent>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="FuelConsumption" type="FuelConsumptionResultType" maxOccurs="unbounded"/> <xs:element name="FuelConsumption" type="FuelConsumptionResultType" maxOccurs="2"/>
<xs:element name="TotalFuelConsumption" type="FuelConsumptionResultType"/>
<xs:element name="CO2" type="CO2ResultType"/> <xs:element name="CO2" type="CO2ResultType"/>
<xs:element name="C_VTP" type="xs:double"/> <xs:element name="C_VTP" type="xs:double"/>
<xs:element name="Pollutants"> <xs:element name="Pollutants">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment