Я использую openmodelica и пытаюсь пройтись по массиву, чтобы найти максимальное значение. Я смог сократить свой код до очень простого тестового примера, который все еще дает ошибку. Это что-то, что я делаю неправильно, или это ошибка в openmodelica? Вот очень простой случай, который дает ошибку:
package TestLoop
model ItemA
Real p;
end ItemA;
model ItemB
ItemA a[n];
parameter Integer n = 5;
Real p;
equation
for i in 1:n loop
a[i].p = time;
end for;
algorithm
for i in 1:n loop
p := a[i].p;
end for;
end ItemB;
end TestLoop;
Проблема в моем разделе алгоритма. Вот ошибка, которую я получаю:
TestLoop.ItemB.c:155:13: warning: implicit declaration of function '$Pa$lB' is invalid in C99 [-Wimplicit-function-declaration]
$Pp = $Pa$lB(modelica_integer)$Pi$rB$Pp;
^
TestLoop.ItemB.c:155:20: error: unexpected type name 'modelica_integer': expected expression
$Pp = $Pa$lB(modelica_integer)$Pi$rB$Pp;
^
1 warning and 1 error generated.
Любые предложения о том, почему это может быть, или как я могу обойти это? Если я заменю присваивание фиксированным значением p:=a[1].p;, код запустится (хотя мне это бесполезно). Что я в конечном итоге хочу сделать в разделе алгоритмов, так это найти наибольшее значение a[n].p, где у меня есть раздел уравнений, который выполняет полезные вычисления в массиве элементов.