﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
3092	BackendDAECreate.mergeWhenCluases fails for more than one elsewhen	Willi Braun	Lennart Ochel	"See following example:
{{{
package TestModel
  package QueueOperations
    function AddIn
      input Real qin[:, :];
      input Integer qinlength;
      input Real qinfo[size(qin, 1)];
      output Real qout[size(qin, 1), size(qin, 2)];
      output Integer qoutlength;
    algorithm
      qout := qin;
      qoutlength := qinlength + 1;
      for i in 1:qinlength loop
        qout[:, i + 1] := qin[:, i];
      end for;
      qout[:, 1] := qinfo;
    end AddIn;

    function DeleteOut
      input Real qin[:, :];
      input Integer qinlength;
      output Real qout[size(qin, 1), size(qin, 2)];
      output Integer qoutlength;
    algorithm
      qout := qin;
      qoutlength := qinlength - 1;
    end DeleteOut;

    function ReadOut
      input Real qin[:, :];
      input Integer qlength;
      output Real qinfo[size(qin, 1)];
    algorithm
      qinfo := qin[:, qlength];
    end ReadOut;
  end QueueOperations;

  model TestQueueModel
    import TQ = TestModel.QueueOperations;
    Real numberqueue[3, 10](start = zeros(3, 10));
    Integer queuelength(start = 3);
    Real P;
    Real SPC;
    Real DD;
    //Integer counter(start = 0);
  equation
    when time > 1 then
      (numberqueue, queuelength) = TQ.AddIn(pre(numberqueue), pre(queuelength), {2.125, 3, 4});
    elsewhen time > 1.5 then
      (numberqueue, queuelength) = TQ.DeleteOut(pre(numberqueue), pre(queuelength));
    elsewhen time > 2 then
      (numberqueue, queuelength) = TQ.AddIn(pre(numberqueue), pre(queuelength), {2.125, 3, 4});
/*    elsewhen time > 2.5 then
      (numberqueue, queuelength) = TQ.DeleteOut(pre(numberqueue), pre(queuelength));
    elsewhen time > 3 then
      (numberqueue, queuelength) = TQ.AddIn(pre(numberqueue), pre(queuelength), {2.125, 3, 4});
    elsewhen time > 3.5 then
      (numberqueue, queuelength) = TQ.DeleteOut(pre(numberqueue), pre(queuelength));
    elsewhen time > 4 then
      (numberqueue, queuelength) = TQ.AddIn(pre(numberqueue), pre(queuelength), {2.125, 3, 4});
*/
    end when;
    {P, SPC, DD} = TQ.ReadOut(numberqueue, queuelength);
  end TestQueueModel;
end TestModel;
}}}"	defect	closed	normal	1.9.4	Backend	trunk	fixed		
