Opened 11 years ago
Last modified 11 years ago
#2849 accepted defect
Wrong flattening of "inner outer output" — at Version 1
| Reported by: | Bernhard Thiele | Owned by: | Adrian Pop |
|---|---|---|---|
| Priority: | high | Milestone: | Future |
| Component: | Frontend | Version: | trunk |
| Keywords: | inner outer | Cc: | Adrian Pop |
Description (last modified by )
In the following model (also attached) the inner variable v declared in model Test is assigned to in model B where it is declared as outer output. B is instantiated in A and A is instantiated in Test. In model A variable v is declared as inner outer output.
package Bug model B outer output Real v; equation v = time; end B; model A inner outer output Real v; Real y2; B b; equation y2 = v; end A; model Test inner Real v; Real y1; A a; equation y1 = v; end Test; end Bug;
The model flattens, but the generated system of equations is wrong (therefore, it doesn't simulate). The flattened Modelica is:
class Bug.Test Real v; Real y1; Real a.v; Real a.y2; equation a.v = time; a.y2 = v; y1 = v; end Bug.Test;
Note that the equality constraint between v and a.v is lost.
Adding an additional constraint, e.g., Real a.v = v would make the flattened code valid. Alternatively, a.v could be substituted by v everywhere.
Change History (2)
by , 11 years ago
| Attachment: | BugInnerOuterOutput.mo added |
|---|
comment:1 by , 11 years ago
| Cc: | added; removed |
|---|---|
| Description: | modified (diff) |
| Owner: | changed from to |
| Status: | new → accepted |
