From 34977df03b4767ad6a41da7dcd2b9ebf9beb98df Mon Sep 17 00:00:00 2001 From: Michael Krisper <michael.krisper@tugraz.at> Date: Tue, 23 Aug 2016 16:46:28 +0200 Subject: [PATCH] CycleClutch: Added Search for Idling-Operating point if ResponseUnderload from Engine --- .../SimulationComponent/Impl/CycleClutch.cs | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleClutch.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleClutch.cs index 1a674c3138..b481cb442f 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleClutch.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CycleClutch.cs @@ -29,9 +29,13 @@ * 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; +using TUGraz.VectoCore.Models.Connector.Ports.Impl; using TUGraz.VectoCore.Models.Simulation; +using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { @@ -59,7 +63,27 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl } else { // disengaged -> clutch open var retVal = NextComponent.Request(absTime, dt, outTorque, angularVelocityIn, dryRun); - return retVal; + 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; + } } } -- GitLab