У меня есть пакет для представления определенных медиа, созданный по аналогии с Modelica.Media, но не совсем так. Я хочу позволить пользователю выбирать между различными функциями для определенного свойства без необходимости изменять способ вычисления оставшихся свойств.
В упаковке:
package myPac
replaceable function prop = F1 constrainedby partialF
annotation (choicesAllMatching=true);
function partialF
input Real x;
output Real y;
end partialF;
function F1
extends partialF;
algorithm
y := x;
end F1;
function F2
extends partialF;
algorithm
y := 2*x;
end F2;
end myPac;
Я хочу затем выбрать F1 или F2 внутри модели.
model myModel
replaceable package pack1 = myPac(redeclare function prop = pack1.F2);
Real x;
Real y;
equation
y = pack1.prop(x);
end myModel;
работает как положено. Как я могу параметризировать переопределение реквизита, чтобы его можно было установить из диалогового окна параметров?
Я искал что-то вроде:
model myModel2
replaceable package pack1 = myPac(redeclare function prop = if a == 1 then pack1.F1 else pack1.F2);
parameter Integer a = 1;
Real x;
Real y;
equation
y = pack1.prop(x);
end myModel2;
что явно неверный синтаксис. Кроме того, choicesAllMatching = true в объявлении prop показывает мне выпадающее меню, но в списке нет вариантов.