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

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

validation of run-data: limit max. speed for checking loss-maps up to...

validation of run-data: limit max. speed for checking loss-maps up to vehicle's design speed + ovespeed, limited by vehicle's max possible speed
parent 98004667
No related branches found
No related tags found
No related merge requests found
......@@ -200,6 +200,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
foreach (var loading in mission.Loadings) {
var simulationRunData = new VectoRunData {
Loading = loading.Key,
VehicleDesignSpeed = _segment.DesignSpeed,
VehicleData = _dao.CreateVehicleData(vehicle, mission, loading.Value),
AirdragData = _dao.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment),
EngineData = _engineData.Copy(), // a copy is necessary because every run has a different correction factor!
......
......@@ -49,11 +49,14 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
[CustomValidation(typeof(VectoRunData), "ValidateRunData")]
public class VectoRunData : SimulationComponentData
{
public VectoRunData()
{
Exempted = false;
}
public MeterPerSecond VehicleDesignSpeed { get; internal set; }
[ValidateObject]
public VehicleData VehicleData { get; internal set; }
......@@ -157,7 +160,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
private static ValidationResult CheckPowertrainLossMapsSize(VectoRunData runData, GearboxData gearboxData,
CombustionEngineData engineData)
{
var maxSpeed = 95.KMPHtoMeterPerSecond();
var axleGearData = runData.AxleGearData;
var angledriveData = runData.AngledriveData;
var hasAngleDrive = angledriveData != null && angledriveData.Angledrive != null;
......@@ -167,6 +170,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
var axlegearRatio = axleGearData != null ? axleGearData.AxleGear.Ratio : 1.0;
var dynamicTyreRadius = runData.VehicleData != null ? runData.VehicleData.DynamicTyreRadius : 0.0.SI<Meter>();
var vehicleMaxSpeed = runData.EngineData.FullLoadCurves[0].N95hSpeed /
runData.GearboxData.Gears[runData.GearboxData.Gears.Keys.Max()].Ratio / axlegearRatio /
angledriveRatio * dynamicTyreRadius;
var maxSpeed = VectoMath.Min(vehicleMaxSpeed, (runData.VehicleDesignSpeed ?? 90.KMPHtoMeterPerSecond()) + (runData.DriverData?.OverSpeedEcoRoll?.OverSpeed ?? 0.KMPHtoMeterPerSecond()));
if (gearboxData.Gears.Count + 1 != engineData.FullLoadCurves.Count) {
return
new ValidationResult(
......@@ -202,7 +210,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
}
private static ValidationResult CheckLossMapsEntries(KeyValuePair<uint, GearData> gear, PerSecond angularVelocity,
NewtonMeter inTorque, AngledriveData angledriveData, AxleGearData axleGearData, SI velocity)
NewtonMeter inTorque, AngledriveData angledriveData, AxleGearData axleGearData, MeterPerSecond velocity)
{
var hasAngleDrive = angledriveData != null && angledriveData.Angledrive != null;
var angledriveRatio = hasAngleDrive && angledriveData.Type == AngledriveType.SeparateAngledrive
......
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