Opened 11 years ago

Closed 7 years ago

#2246 closed defect (worksforme)

Variable index model gives incorrect results

Reported by: casella Owned by: probably noone
Priority: high Milestone: 1.13.0
Component: Backend Version: trunk
Keywords: Cc:

Description (last modified by casella)

The following model

model foo
  Real x1, x2;
equation
  der(x1) = 2;
  if x1 < 1 then 
    der(x2) = 1;
  else
    x2 = 1;
  end if;
end foo;

simulated for one second gives as results x1 = 2*time (which is correct) and x2 = time, which is wrong for time > 0.5.

I understand an error should be generated at time = 0.5, or maybe right at compile time, unless we can handle variable structure systems, which we obviously can't (or can we?).

Change History (11)

comment:1 Changed 11 years ago by sjoelund.se

  • Description modified (diff)

comment:2 Changed 11 years ago by casella

  • Description modified (diff)

comment:3 Changed 11 years ago by sjoelund.se

  • Milestone changed from 1.9.0 to 1.9.1

Postponed until 1.9.1

comment:4 Changed 10 years ago by sjoelund.se

  • Milestone changed from 1.9.1 to 1.9.2

This ticket was not closed for 1.9.1, which has now been released. It was batch modified for milestone 1.9.2 (but maybe an empty milestone was more appropriate; feel free to change it).

comment:5 Changed 10 years ago by sjoelund.se

  • Milestone changed from 1.9.2 to 1.9.3

Milestone changed to 1.9.3 since 1.9.2 was released.

comment:6 Changed 9 years ago by sjoelund.se

  • Milestone changed from 1.9.3 to 1.9.4

Moved to new milestone 1.9.4

comment:7 Changed 9 years ago by sjoelund.se

  • Milestone changed from 1.9.4 to 1.9.5

Milestone pushed to 1.9.5

comment:8 Changed 9 years ago by sjoelund.se

  • Milestone changed from 1.9.5 to 1.10.0

Milestone renamed

comment:9 Changed 8 years ago by sjoelund.se

  • Milestone changed from 1.10.0 to 1.11.0

Ticket retargeted after milestone closed

comment:10 Changed 8 years ago by sjoelund.se

  • Milestone changed from 1.11.0 to 1.12.0

Milestone moved to 1.12.0 due to 1.11.0 already being released.

comment:11 Changed 7 years ago by casella

  • Milestone changed from 1.12.0 to 1.13.0
  • Resolution set to worksforme
  • Status changed from new to closed

As of v1.13.0-dev-155-g68350e9, the simulation stops at time = 0.5. There, the debugger shows that it is not possible to solve

if x1 < 1.0 then $DER.x2 - 1.0 else x2 - 1.0 = 0

for der(x2), which I think points out clearly enough what is the root cause of the problem.

Note: See TracTickets for help on using tickets.