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 94efed1e authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

adding sanity check that number of steered axles matches number of steering pumps

parent 6b888130
No related branches found
No related tags found
No related merge requests found
Showing with 44 additions and 9 deletions
......@@ -802,6 +802,12 @@ Public Class Vehicle
Public Property EcoRollReleaseLockupClutch As Boolean
Public ReadOnly Property NumSteeredAxles As Integer? Implements IAxlesDeclarationInputData.NumSteeredAxles
get
return nothing
End Get
End Property
Public ReadOnly Property IAxlesEngineeringInputData_DataSource As DataSource Implements IAxlesEngineeringInputData.DataSource
get
Return New DataSource() With {.SourceType = DataSourceType.JSONFile}
......
......@@ -201,6 +201,8 @@ namespace TUGraz.VectoCommon.InputData
/// cf. VECTO Input Parameters.xlsx
/// </summary>
IList<IAxleDeclarationInputData> AxlesDeclaration { get; }
int? NumSteeredAxles { get; }
}
public interface IAdvancedDriverAssistantSystemDeclarationInputData
......@@ -370,6 +372,8 @@ namespace TUGraz.VectoCommon.InputData
ITyreDeclarationInputData Tyre { get; }
bool Steered { get; }
DataSource DataSource { get; }
}
......
......@@ -388,6 +388,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
public virtual Watt MaxNetPower2 { get { return null; } }
public int? NumSteeredAxles => null;
IVehicleComponentsDeclaration IVehicleDeclarationInputData.Components
{
get { return this; }
......
......@@ -52,6 +52,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
protected ITyreDeclarationInputData _tyre;
protected bool? _twinTyre;
protected AxleType? _axleType;
private bool? _steered;
public XMLDeclarationAxleDataProviderV10(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile)
: base(componentNode, sourceFile)
......@@ -80,6 +81,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
get { return _tyre ?? (_tyre = Reader.Tyre); }
}
public bool Steered =>
_steered ?? (_steered = XmlConvert.ToBoolean(GetString(XMLNames.AxleWheels_Axles_Axle_Steered))).Value;
#endregion
......
......@@ -30,6 +30,7 @@
*/
using System.Collections.Generic;
using System.Linq;
using System.Xml;
using System.Xml.Linq;
using TUGraz.VectoCommon.Exceptions;
......@@ -48,7 +49,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
public const string XSD_TYPE = "AxleWheelsDataDeclarationType";
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);
protected IAxleDeclarationInputData[] _axles;
......@@ -67,7 +69,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
public virtual IList<IAxleDeclarationInputData> AxlesDeclaration
{
get {
get
{
if (_axles != null) {
return _axles;
}
......@@ -83,6 +86,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
if (axleNumber < 1 || axleNumber > _axles.Length) {
throw new VectoException("Axle #{0} exceeds axle count", axleNumber);
}
if (_axles[axleNumber - 1] != null) {
throw new VectoException("Axle #{0} defined multiple times!", axleNumber);
}
......@@ -94,6 +98,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
}
}
public int? NumSteeredAxles
{
get { return AxlesDeclaration.Count(x => x.Steered); }
}
#endregion
#region Implementation of IXMLResource
......
......@@ -422,7 +422,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
public IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxInputData,
MissionType mission, VehicleClass hvdClass)
MissionType mission, VehicleClass hvdClass, int? numSteeredAxles)
{
if (!auxInputData.SavedInDeclarationMode) {
WarnDeclarationMode("AuxiliariesData");
......@@ -453,6 +453,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
aux.ID = Constants.Auxiliaries.IDs.Fan;
break;
case AuxiliaryType.SteeringPump:
if (numSteeredAxles.HasValue && auxData.Technology.Count != numSteeredAxles.Value) {
throw new VectoException($"Number of steering pump technologies does not match number of steered axles ({numSteeredAxles.Value}, {auxData.Technology.Count})");
}
aux.PowerDemand = DeclarationData.SteeringPump.Lookup(mission, hvdClass, auxData.Technology);
aux.ID = Constants.Auxiliaries.IDs.SteeringPump;
break;
......
......@@ -253,7 +253,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
AxleGearData = _axlegearData,
AngledriveData = _angledriveData,
Aux = _dao.CreateAuxiliaryData(vehicle.Components.AuxiliaryInputData, mission.MissionType,
_segment.VehicleClass),
_segment.VehicleClass, vehicle.Components.AxleWheels.NumSteeredAxles),
Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()),
Retarder = _retarderData,
DriverData = _driverdata,
......
......@@ -100,7 +100,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
Dao.CreateAuxiliaryData(
JobInputData.Vehicle.Components.AuxiliaryInputData,
Segment.Missions.First().MissionType,
Segment.VehicleClass),
Segment.VehicleClass,
JobInputData.Vehicle.Components.AxleWheels.NumSteeredAxles),
};
powertrainConfig.VehicleData.VehicleClass = Segment.VehicleClass;
Report.InputDataHash = JobInputData.VectoJobHash;
......@@ -181,7 +182,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
runData.Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString());
runData.DriverData = Driverdata;
runData.Aux = Dao.CreateAuxiliaryData(
JobInputData.Vehicle.Components.AuxiliaryInputData, mission.MissionType, Segment.VehicleClass);
JobInputData.Vehicle.Components.AuxiliaryInputData, mission.MissionType, Segment.VehicleClass,
JobInputData.Vehicle.Components.AxleWheels.NumSteeredAxles);
runData.ExecutionMode = ExecutionMode.Declaration;
runData.SimulationType = SimulationType.DistanceCycle;
runData.Mission = mission;
......@@ -258,22 +260,23 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
protected virtual List<VectoRunData.AuxData> CreateVTPAuxData(IVehicleDeclarationInputData vehicle)
{
var numSteered = vehicle.Components.AxleWheels.NumSteeredAxles;
var auxRD = Dao.CreateAuxiliaryData(
vehicle.Components.AuxiliaryInputData, MissionType.RegionalDelivery, Segment.VehicleClass)
vehicle.Components.AuxiliaryInputData, MissionType.RegionalDelivery, Segment.VehicleClass, numSteered)
.ToList();
foreach (var entry in auxRD) {
entry.MissionType = MissionType.RegionalDelivery;
}
var auxLH = Dao.CreateAuxiliaryData(
vehicle.Components.AuxiliaryInputData, MissionType.LongHaul, Segment.VehicleClass)
vehicle.Components.AuxiliaryInputData, MissionType.LongHaul, Segment.VehicleClass, numSteered)
.ToList();
foreach (var entry in auxLH) {
entry.MissionType = MissionType.LongHaul;
}
var auxUD = Dao.CreateAuxiliaryData(
vehicle.Components.AuxiliaryInputData, MissionType.UrbanDelivery, Segment.VehicleClass)
vehicle.Components.AuxiliaryInputData, MissionType.UrbanDelivery, Segment.VehicleClass, numSteered)
.ToList();
foreach (var entry in auxUD) {
entry.MissionType = MissionType.UrbanDelivery;
......
......@@ -127,6 +127,7 @@
<Compile Include="Models\Declaration\DataAdapter\DeclarationDataAdapterTest_Class5.cs" />
<Compile Include="Models\Declaration\DataAdapter\DeclarationDataAdapterTest_Class2.cs" />
<Compile Include="Models\Declaration\DataAdapter\DeclarationDataAdapterTest_Class9.cs" />
<Compile Include="Models\Declaration\InputDataSanityChecks.cs" />
<Compile Include="Models\Declaration\ShiftPolygonTest.cs" />
<Compile Include="Models\SimulationComponentData\TorqueConverterDataTest.cs" />
<Compile Include="Models\SimulationComponentData\ValidationTest.cs" />
......@@ -3670,6 +3671,9 @@
<Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\vecto_vehicle-sample_exempted.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="TestData\Integration\DeclarationMode\SteeringPumpCount\Group5_EngineStopStart.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="TestData\Integration\ShiftStrategyV2\SampleVehicles\Rigid Truck_4x2_vehicle-class-1_EURO6_2018.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment