Opened 16 years ago

Last modified 15 years ago

#1086 closed defect (fixed)

Multiple Function Return Arguments

Reported by: krsta Owned by: krsta
Priority: high Milestone:
Component: Version:
Keywords: Cc: krsta,

Description

"When i run this it just says that OMC has stopped working and then nothing happens?"

function t

input Real hh;

output Real e1;

output Real e2;

algorithm

e1:=hh;

e2:=2*hh;

end t;


model j

Real j1;

Real j2;

equation

(j1,j2)=t(2);

end j;


simulate(j,stopTime=5)

Another example:

function f
  input Real x;
  input Real y;
  output Real r1;
  output Real r2;
  output Real r3;
algorithm
  r1 := x;
  r2 := y;
  r3 := x*y;
end f;   

model fCall
  Real x[3];
  Real a, b, c;
equation
  (a, b, c) = f(1.0, 2.0);
  (x[1], x[2], x[3]) = f(3.0, 4.0);
end fCall;

getVersion();
loadFile("functions.mo");
instantiateModel(fCall);
f(2.5, 3);
simulate(fCall);

incidence_row_exp TUPLE not impl. yet.incidence_row_exp TUPLE not impl. yet.incidence_row_exp TUPLE not impl. yet.incidence_row_exp TUPLE not impl. yet."1.4.4"0
true
"fclass fCall
Real x[1];
Real x[2];
Real x[3];
Real a;
Real b;
Real c;
equation
  (a,b,c) = (1.0,2.0,2.0);
  (x[1],x[2],x[3]) = (3.0,4.0,12.0);
end fCall;
"
(2.5,3.0,7.5)
record
    resultFile = "Simulation failed.
Too few equations, underdetermined system. The model has 6 variables and 2 equations
"
end record

Probably some problem with multiple function return arguments?

Change History (1)

comment:1 by Per Östlund, 15 years ago

The problem was that assigning one tuple to another tuple wasn't implemented in OMC (the function call was constant evaluated to a tuple). I fixed this in revision 4828.

Note: See TracTickets for help on using tickets.