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

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

Merge pull request #794 in VECTO/vecto-sim from ~EMQUARIMA/vecto-sim:ReleaseCandidates/v3.3.4.1686 to ReleaseCandidates/v3.3.4.1686

* commit '1f88d62c':
  bugfix: Increasing number of iterations to find operating point
  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
parents f564a7d0 1f88d62c
Branches
Tags
No related merge requests found
...@@ -200,6 +200,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl ...@@ -200,6 +200,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
foreach (var loading in mission.Loadings) { foreach (var loading in mission.Loadings) {
var simulationRunData = new VectoRunData { var simulationRunData = new VectoRunData {
Loading = loading.Key, Loading = loading.Key,
VehicleDesignSpeed = _segment.DesignSpeed,
VehicleData = _dao.CreateVehicleData(vehicle, mission, loading.Value), VehicleData = _dao.CreateVehicleData(vehicle, mission, loading.Value),
AirdragData = _dao.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment), AirdragData = _dao.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment),
EngineData = _engineData.Copy(), // a copy is necessary because every run has a different correction factor! 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 ...@@ -49,11 +49,14 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
[CustomValidation(typeof(VectoRunData), "ValidateRunData")] [CustomValidation(typeof(VectoRunData), "ValidateRunData")]
public class VectoRunData : SimulationComponentData public class VectoRunData : SimulationComponentData
{ {
public VectoRunData() public VectoRunData()
{ {
Exempted = false; Exempted = false;
} }
public MeterPerSecond VehicleDesignSpeed { get; internal set; }
[ValidateObject] [ValidateObject]
public VehicleData VehicleData { get; internal set; } public VehicleData VehicleData { get; internal set; }
...@@ -157,7 +160,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data ...@@ -157,7 +160,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
private static ValidationResult CheckPowertrainLossMapsSize(VectoRunData runData, GearboxData gearboxData, private static ValidationResult CheckPowertrainLossMapsSize(VectoRunData runData, GearboxData gearboxData,
CombustionEngineData engineData) CombustionEngineData engineData)
{ {
var maxSpeed = 95.KMPHtoMeterPerSecond();
var axleGearData = runData.AxleGearData; var axleGearData = runData.AxleGearData;
var angledriveData = runData.AngledriveData; var angledriveData = runData.AngledriveData;
var hasAngleDrive = angledriveData != null && angledriveData.Angledrive != null; var hasAngleDrive = angledriveData != null && angledriveData.Angledrive != null;
...@@ -167,6 +170,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Data ...@@ -167,6 +170,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
var axlegearRatio = axleGearData != null ? axleGearData.AxleGear.Ratio : 1.0; var axlegearRatio = axleGearData != null ? axleGearData.AxleGear.Ratio : 1.0;
var dynamicTyreRadius = runData.VehicleData != null ? runData.VehicleData.DynamicTyreRadius : 0.0.SI<Meter>(); 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) { if (gearboxData.Gears.Count + 1 != engineData.FullLoadCurves.Count) {
return return
new ValidationResult( new ValidationResult(
...@@ -202,7 +210,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data ...@@ -202,7 +210,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
} }
private static ValidationResult CheckLossMapsEntries(KeyValuePair<uint, GearData> gear, PerSecond angularVelocity, 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 hasAngleDrive = angledriveData != null && angledriveData.Angledrive != null;
var angledriveRatio = hasAngleDrive && angledriveData.Type == AngledriveType.SeparateAngledrive var angledriveRatio = hasAngleDrive && angledriveData.Type == AngledriveType.SeparateAngledrive
......
...@@ -132,7 +132,7 @@ namespace TUGraz.VectoCore.Utils ...@@ -132,7 +132,7 @@ namespace TUGraz.VectoCore.Utils
log.Debug("Log Disabled during LineSearch."); log.Debug("Log Disabled during LineSearch.");
LogManager.DisableLogging(); LogManager.DisableLogging();
try { try {
for (var count = 1; count < 100; count++, iterationCount++) { for (var count = 1; count < 150; count++, iterationCount++) {
if (origY.Sign() != y.Sign()) { if (origY.Sign() != y.Sign()) {
intervalFactor = 0.5; intervalFactor = 0.5;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment