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;