From c661756eba8b52133105dfae3a2c00d76a93ae0f Mon Sep 17 00:00:00 2001 From: Michael Krisper <michael.krisper@tugraz.at> Date: Tue, 23 Aug 2016 16:53:55 +0200 Subject: [PATCH] CycleClutch: Corrected wrong switch statement. Now only underload is checked. --- .../SimulationComponent/Impl/CycleClutch.cs | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleClutch.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleClutch.cs index b481cb442f..85051e2bdd 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleClutch.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleClutch.cs @@ -29,7 +29,6 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ -using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; @@ -65,25 +64,21 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl var retVal = NextComponent.Request(absTime, dt, outTorque, angularVelocityIn, dryRun); if (dryRun) { return retVal; - } else { - retVal.Switch(). - Case<ResponseSuccess>(). - Case<ResponseUnderload>(r => { - var angularSpeed = SearchAlgorithm.Search(angularVelocityIn, r.Delta, - Constants.SimulationSettings.EngineIdlingSearchInterval, - getYValue: result => ((ResponseDryRun)result).DeltaDragLoad, - evaluateFunction: n => NextComponent.Request(absTime, dt, outTorque, n, true), - criterion: result => ((ResponseDryRun)result).DeltaDragLoad.Value()); - Log.Debug( - "Found operating point for idling in cycle clutch. absTime: {0}, dt: {1}, torque: {2}, angularSpeed: {3}", - absTime, dt, - outTorque, angularSpeed); - retVal = NextComponent.Request(absTime, dt, outTorque, angularSpeed); - }). - Default(r => { throw new UnexpectedResponseException("searching CycleClutch Idling point", r); }); + } - return retVal; + var r = retVal as ResponseUnderload; + if (r != null) { + var angularSpeed = SearchAlgorithm.Search(angularVelocityIn, r.Delta, + Constants.SimulationSettings.EngineIdlingSearchInterval, + getYValue: result => ((ResponseDryRun)result).DeltaDragLoad, + evaluateFunction: n => NextComponent.Request(absTime, dt, outTorque, n, true), + criterion: result => ((ResponseDryRun)result).DeltaDragLoad.Value()); + Log.Debug( + "Found operating point for idling in cycle clutch. absTime: {0}, dt: {1}, torque: {2}, angularSpeed: {3}", + absTime, dt, outTorque, angularSpeed); + retVal = NextComponent.Request(absTime, dt, outTorque, angularSpeed); } + return retVal; } } -- GitLab