Skip to content

Navigation Menu

Sign in
Sign up

"strict" parameter in Limiters #3968

Answered by MartinOtter
dariomangoni asked this question in Q&A
Discussion options

In Modelica.Blocks.Nonlinear.Limiter/VariableLimiter/SlewRateLimiter, I noticed that:

  • the if strict branch has noEvents wrapping some conditions e.g. noEvent(if u > uMax then ...)
  • the else branch does not.

To me it should be exactly the opposite: I assume that the event generation is much stricter in catching any change in the condition.
Is there anyone that can explain me why is the opposite?

Thanks a lot,
Dario

You must be logged in to vote

In Modelica.Blocks.Nonlinear.Limiter/VariableLimiter/SlewRateLimiter, I noticed that:
* the if strict branch has noEvents wrapping some conditions e.g. noEvent(if u > uMax then ...)
* the else branch does not.
To me it should be exactly the opposite: I assume that the event generation is much stricter in catching any change in the condition. Is there anyone that can explain me why is the opposite?

The "strict" here means that it is guaranteed that the respective branch is only evaluated, if signaled by the condition.
E.g. if uMax == 1, the then branch in "if u > uMax then ..." is only evaluated if u > 1 (which is guaranteed by "noEvent(..)").
Instead, without a noEvent, it could be that...

Replies: 2 comments 1 reply

Comment options

I agree that the choice of terminology could have been better. The way to see it is, that in this case "strict" is just a name without an implied meaning of "being strict" but with the result that the noEvent operator is applied on the condition. Maybe @MartinOtter or @AHaumer can shed some light on the historical reason to call that switch "strict" and not something else.

You must be logged in to vote
0 replies
Comment options

In Modelica.Blocks.Nonlinear.Limiter/VariableLimiter/SlewRateLimiter, I noticed that:
* the if strict branch has noEvents wrapping some conditions e.g. noEvent(if u > uMax then ...)
* the else branch does not.
To me it should be exactly the opposite: I assume that the event generation is much stricter in catching any change in the condition. Is there anyone that can explain me why is the opposite?

The "strict" here means that it is guaranteed that the respective branch is only evaluated, if signaled by the condition.
E.g. if uMax == 1, the then branch in "if u > uMax then ..." is only evaluated if u > 1 (which is guaranteed by "noEvent(..)").
Instead, without a noEvent, it could be that the "then" branch is evaluated, even if u <= 1 (during the iteration to find the event instant within some tolerance).

In this view "strict = true, if strict limits with noEvent(..)" looks fine.

You must be logged in to vote
1 reply
Comment options

oh, I see... the specifications already tell this (to those that can read them). It's surely correct to have this flag in Advanced folder, as it is right now.
Thanks for the hint

Answer selected by dietmarw
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
L: Blocks Issue addresses Modelica.Blocks

AltStyle によって変換されたページ (->オリジナル) /