Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

State solvability requirements for discrete-valued variables #2702

Merged
merged 2 commits into from
Nov 9, 2020

Conversation

henrikt-ma
Copy link
Collaborator

@henrikt-ma henrikt-ma commented Nov 2, 2020

According to phone meeting decision on #2639.

To make the section more readable with more variables and equations entering the picture, I've also reordered some variables and equations for a more coherent presentation.

I still wouldn't say that this solves #2639, since there is still no clarification regarding what tools are allowed to do avoid cycles between equations for discrete-valued variables.

Copy link
Collaborator

@HansOlsson HansOlsson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. One minor issue (not new) is that there is an important structure in f_z that we don't include. We could write it as:
0=if "event" then z-pre(z) else f_z(v, c);
or some variation of this, e.g.:
z=f_z(v, c);
with the internal structure:
z_i=if "triggered i" then f_zi(v, c) else pre(z_i);
or even:
z_i=if edge(m_...i) then f_zi(v, c) else pre(z_i)

The reasons to split it like this are:

  • Obvious that it is inactive during continuous integration.
  • Clear that the number of equations in f_z correspond to the size of z.

@henrikt-ma
Copy link
Collaborator Author

Looks good. One minor issue (not new) is that there is an important structure in f_z that we don't include. We could write it as:
0=if "event" then z-pre(z) else f_z(v, c);
or some variation of this, e.g.:
z=f_z(v, c);
with the internal structure:
z_i=if "triggered i" then f_zi(v, c) else pre(z_i);
or even:
z_i=if edge(m_...i) then f_zi(v, c) else pre(z_i)

The reasons to split it like this are:

  • Obvious that it is inactive during continuous integration.
  • Clear that the number of equations in f_z correspond to the size of z.

OK, now f_z is only used at events. I'm afraid it would be too much detail to partition z according to how different subsets of equations can be activated by different trigger conditions. I suspect that there are many more details of similar character that we are omitting.

@HansOlsson
Copy link
Collaborator

OK, now f_z is only used at events. I'm afraid it would be too much detail to partition z according to how different subsets of equations can be activated by different trigger conditions. I suspect that there are many more details of similar character that we are omitting.

Ok, looks good now.

@HansOlsson HansOlsson merged commit a478b27 into modelica:master Nov 9, 2020
@henrikt-ma henrikt-ma deleted the discrete-valued-solvability branch November 9, 2020 09:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants