﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
1173	Unroll for variables in algorithms	bjozac	bjozac	"consider following model
{{{
model testDiag
 Real x;
 Integer offset;
 Real arr[3,3];
 Real arr2[3,3]=fill(999,3,3);

 equation
  der(x) = x+time;
  offset = floor(x);

 algorithm
  arr[1,1]:=1.1;arr[1,2]:=1.2;
  arr[2,1]:=2.1;arr[2,2]:=2.2;
  arr[3,1]:=3.1;arr[3,2]:=3.2;
  for k in 1:max(size(arr2)) loop
    arr[k + integer(abs(offset)),k] := arr2[k,1];
  end for;
end testDiag;

model algorithmFor
  testDiag dl;
end algorithmFor;
}}}

This will generate the following flat code;

{{{
 for k in {1,2,3} loop
    dl.arr[dl.k + integer(Real(abs(dl.offset))), dl.k] := dl.arr2[dl.k, 1];
  end for;
}}}

but if your move this part into equation section

{{{
  for k in 1:max(size(arr2)) loop
    arr[k + integer(abs(offset)),k] = arr2[k,1];
  end for;
}}}

we get 
{{{
  dl.arr[1 + integer(Real(abs(dl.offset))), 1] = dl.arr2[1,1];
  dl.arr[2 + integer(Real(abs(dl.offset))), 2] = dl.arr2[2,1];
  dl.arr[3 + integer(Real(abs(dl.offset))), 3] = dl.arr2[3,1];
}}}


So in the back end we get a compile error due to that dl.k does not exists."	defect	closed	critical				fixed		bjozac Adrian Pop
