Opened 11 years ago
Closed 11 years ago
#2723 closed defect (fixed)
OM accepts invalid code
| Reported by: | massimo ceraolo | Owned by: | Per Östlund |
|---|---|---|---|
| Priority: | low | Milestone: | 1.9.1 |
| Component: | Frontend | Version: | trunk |
| Keywords: | Cc: |
Description
Modelica specifications 3.3 at section 9.3 say:
"Connect-equations cannot be used inside if-equations with non-parametric condition".
From this I understand that the following code is invalid:
model DynamicConnect
Modelica.Electrical.Analog.Basic.Resistor R1(R = 1), R2(R = 2), R3(R = 3);
Modelica.Electrical.Analog.Sources.ConstantVoltage E(V=10);
Modelica.Electrical.Analog.Basic.Ground G;
equation
connect(G.p, E.n);
connect(E.p, R1.p);
if time < 1 then
connect(R1.n, R2.p);
else
connect(R1.n, R3.p);
end if;
connect(R2.n, G.p);
connect(R3.n, G.p);
annotation(uses(Modelica(version = "3.2.1")));
end DynamicConnect;
OM accepts it, but gives as result a current through R1 equal to zero. If it had really done what the code says, it should have computed (as long as time<1s) a current through R1 equal to 3.33A
This is indeed what we get if we just use
model DynamicConnect
Modelica.Electrical.Analog.Basic.Resistor R1(R = 1), R2(R = 2), R3(R = 3);
Modelica.Electrical.Analog.Sources.ConstantVoltage E(V=10);
Modelica.Electrical.Analog.Basic.Ground G;
equation
connect(G.p, E.n);
connect(E.p, R1.p);
// if time < 1 then
connect(R1.n, R2.p);
// else
// connect(R1.n, R3.p);
// end if;
connect(R2.n, G.p);
connect(R3.n, G.p);
annotation(uses(Modelica(version = "3.2.1")));
end DynamicConnect;
Change History (2)
comment:1 by , 11 years ago
| Component: | Unknown → Frontend |
|---|---|
| Owner: | changed from to |
| Status: | new → assigned |
comment:2 by , 11 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.

Fixed in r21204.