Opened 10 years ago

Last modified 4 years ago

#2712 closed defect

Accessing connector array with dynamic index results in C code compile error — at Version 1

Reported by: Metello <metello@…> Owned by: Lennart Ochel
Priority: normal Milestone: 1.16.0
Component: Code Generation Version: 1.9.0Beta
Keywords: Cc:

Description (last modified by Martin Sjölund)

The simple model below results in bad C code generation (does not compile). It was tested with OpenModelica 1.9.0 (r17628).

The problem seems to be acessing a connector in an array of connections by an index integer variable that changes with time:

cValue = if condition then inConnections[index].value else 0;


model ConnectionArrayBug

  connector RealConn
    Real value;
  end RealConn;

  model ValueSource
    parameter Real value;
    RealConn connection;
  equation
    connection.value = value;
  end ValueSource;

  model BuggedModel
    parameter Integer nConn;
    RealConn inConnections[nConn];
  protected
    Boolean condition;
    Integer index;
    Real cValue;
  equation
    condition = true;
    index = if time > 0.5 then 1 else 2;
    cValue = if condition then inConnections[index].value else 0;
  end BuggedModel;

  ValueSource s1(value = 1);
  ValueSource s2(value = 2);
  BuggedModel m1(nConn = 2);

equation
  connect(s1.connection,m1.inConnections[1]);
  connect(s2.connection,m1.inConnections[2]);
end ConnectionArrayBug;

Change History (1)

comment:1 by Martin Sjölund, 10 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.