You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Give a warning for underconstrained variables forced to 0
@oxinabox noticed that the following MSL test
https://github.com/SciML/ModelingToolkitStandardLibrary.jl/blob/0f0fae138fe202140a4862eccaaac734051dc44f/test/Mechanical/translational.jl
has a test that depends on an underconstrained variable (either
`free.f` or `acc.f` may be set to an arbitrary value without
affecting the dynamics of the system). Our structural singularity
removal logic detects these situations and chooses one variable
arbitrarily to set to 0. However, it does so silently, so users
are unaware that they likely have a modeling bug. This PR adds
a warning when this happens. For example, the above mentioned
test now gives:
```
┌ Warning: The model is under-constrained. Variable acc₊flange₊f(t) was arbitrarily chosen to be set to 0. This may indicate a model bug!
└ @ ModelingToolkit ~/.julia/dev/ModelingToolkit/src/systems/alias_elimination.jl:54
```
This is styled as an overridable callback, so higher level modeling
frameworks that use MTK as a library can hook into this to give
more domain-specific errors if desired.
0 commit comments