Modelica 注释逆条件
Modelica annotation inverse conditional
我有一个函数有或没有导数和反函数,这取决于某些 parameters/coefficients 的值。我可以以某种方式使注释派生和逆条件吗?
像
function y_from_x
input Real x;
input Boolean hasInverse;
output Real y;
...
equation
...
annotation(inverse(x=x_from_y(y=y) if hasInverse));
end y_from_x;
在 Modelica 规范中没有 直接 支持。
你可以做的是:
function y_from_x
input Real x;
input Boolean hasInverse;
output Real y;
...
algorithm
y:=if hasInverse then y_from_x1(x) else y_from_x2(x);
annotation(Inline=true);
end y_from_x;
function y_from_x1
input Real x;
output Real y;
...
algorithm
y:=y_from_x2(x);
annotation(inverse(x=x_from_y(y=y)));
end y_from_x1;
function y_from_x2
input Real x;
output Real y;
...
algorithm
...
end y_from_x2;
我有一个函数有或没有导数和反函数,这取决于某些 parameters/coefficients 的值。我可以以某种方式使注释派生和逆条件吗? 像
function y_from_x
input Real x;
input Boolean hasInverse;
output Real y;
...
equation
...
annotation(inverse(x=x_from_y(y=y) if hasInverse));
end y_from_x;
在 Modelica 规范中没有 直接 支持。 你可以做的是:
function y_from_x
input Real x;
input Boolean hasInverse;
output Real y;
...
algorithm
y:=if hasInverse then y_from_x1(x) else y_from_x2(x);
annotation(Inline=true);
end y_from_x;
function y_from_x1
input Real x;
output Real y;
...
algorithm
y:=y_from_x2(x);
annotation(inverse(x=x_from_y(y=y)));
end y_from_x1;
function y_from_x2
input Real x;
output Real y;
...
algorithm
...
end y_from_x2;