是否可以在 Modelica 中有条件地设置方程属性?

Is it possible to conditionally set equation attributes in Modelica?

我正在研究一个包含多个子系统和相当多 variables/equations 的大型模型。我一直在子系统上使用 protected 属性,以便只有系统级结果在模拟结果中可见。这使得在 Dymola 仿真选项卡或 FMU inputs/outputs 中更容易找到系统级结果。但在某些情况下,如果能够看到子系统的完整详细信息,那将是一件好事。

是否可以根据布尔参数或其他方式有条件地应用 protected 属性?

例如,是否可以执行类似下面的伪代码的操作?

// Parameter that sets whether or not to use the protected attribute on subsystems.
parameter Boolean useProtected = true;

// Conditionally define the subsystem with or without protected attribute
if (useProtected) then
  protected subsystem subsystem1 = ...
else
  subsystem subsystem1 = ...
end if;

谢谢, 贾斯汀

参见 HideResult 注释: https://modelica.org/documents/ModelicaSpec33Revision1.pdf

subsystem subsystem1 annotation(HideResult = true / false);

使用 HideResult 是一种可能性 - 另一种是始终使其受到保护,并在您想要调查它时存储受保护的变量 ("Simulation Setup>Output>Store Additional variables")。