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 Initial Version

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

Description

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 (0)

Note: See TracTickets for help on using tickets.