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

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

adding fallback search in case the interpolate search finds an invalid ICE operating point

parent 26453e40
No related branches found
No related tags found
No related merge requests found
......@@ -696,6 +696,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
var tmp = TestGenSet.ElectricMotor.Request(absTime, dt, 0.SI<NewtonMeter>(), iceSpeed, true) as ResponseDryRun;
delta = tmp.DeltaFullLoad;
}
var origIceSpeed = iceSpeed;
iceSpeed = SearchAlgorithm.Search(iceSpeed, delta, iceSpeed * 0.01,
getYValue: r => {
var dryRun = r as ResponseDryRun;
......@@ -713,6 +715,28 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
return searchFullLoad ? dryRun.DeltaFullLoad.Value() : dryRun.DeltaDragLoad.Value();
},
searcher: this);
if (!iceSpeed.IsBetween(DataBus.EngineInfo.EngineIdleSpeed, DataBus.EngineInfo.EngineN95hSpeed)) {
iceSpeed = SearchAlgorithm.Search(origIceSpeed, delta, origIceSpeed * 0.01,
getYValue: r => {
var dryRun = r as ResponseDryRun;
return searchFullLoad ? dryRun.DeltaFullLoad : dryRun.DeltaDragLoad;
},
evaluateFunction: x => {
var tmp = TestGenSet.ElectricMotor.Request(absTime, dt, 0.SI<NewtonMeter>(), x, true);
tmpEmTqDt = tqDt?.LimitTo(tmp.ElectricMotor.MaxDriveTorque ?? 0.SI<NewtonMeter>(),
tmp.ElectricMotor.MaxRecuperationTorque ?? 0.SI<NewtonMeter>());
TestGenSet.ElectricMotorCtl.EMTorque = tmpEmTqDt;
return TestGenSet.ElectricMotor.Request(absTime, dt, 0.SI<NewtonMeter>(), x, true);
},
criterion: r => {
var dryRun = r as ResponseDryRun;
return searchFullLoad ? dryRun.DeltaFullLoad.Value() : dryRun.DeltaDragLoad.Value();
},
searcher: this, forceLineSearch: true);
}
if (!iceSpeed.IsBetween(DataBus.EngineInfo.EngineIdleSpeed, DataBus.EngineInfo.EngineN95hSpeed)) {
throw new VectoException("failed to find ICE speed for GenSet");
}
emTqDt = tmpEmTqDt;
TestGenSet.ElectricMotorCtl.EMTorque = emTqDt;
var r1 = TestGenSet.ElectricMotor.Request(absTime, dt, 0.SI<NewtonMeter>(), iceSpeed);
......
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