MATLAB: More about the Simulink algebraic loop solvers

algebraic loopnoisesolver

Dear all
The solvers that Simulink uses to break algebraic loops seem to be really efficient.
But I need to disable the automatic algebraic loop solver and to do it by myself (by adding a memory or a low pass filter etc.) because I want to keep track of what's happening inside my implementation. The problem is that without the Simulink solver my results are really noisy (numerical damped noise oscillating at the simulation frequency, like a ringing artifact) and I cannot tolerate the error induced by this noise.
So I want to know more about the solvers that Matlab uses (the idea behind them if Mathworks cannot reveal the code), I didn't find that much about them on the net…
Any other suggestions about how to solve algebraic loops would also be really helpful, thank you very much!
Jawhar

Best Answer

More information could be found on this link. What it says that it tries to run for some/few iterations to see if the loop can converge. If it does then good enough, but if it does not then it throws an error. It is then left to the user to add some delay/memory blocks to kind of break the loop.
Alternatively, you could set the diagnostics to error out when an algebraic loop is detected instead of giving a warning and attempting to continue forward. This will point you to the location where the loop is detected and you may then introduce some blocks manually.
Although, this link does mentions about LineSearch and TrustRegion as types of AlgebraicLoopSolver, I believe you will have to raise a query with the Technical Support to understand it better.