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