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 067163b0 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

(cherry picked from commit b5ba8517)
parent f564a7d0
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