diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleClutch.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleClutch.cs index b481cb442f055cef45005f14652e1dd171c9270b..85051e2bddda30ee0aa642db37374926a837d19b 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; } }