5

我正在为大型 Modelica 模型的输出文件大小而苦苦挣扎。当然,我可以保护一些对象,以便将它们从结果文件中完全删除。但是,这会带来两个问题:

  1. 无法重新声明受保护的对象
  2. 如果我想详细测试我的模型(例如在短时间内),我需要再次公开声明这些对象以查看它们的变量

我想知道是否有一个技巧来设置 Modelica 模型的“详细程度”。也许我想要的是 , 旁边的第三个关键字publicprotected例如。transparent. 然后,在设置模拟时,我希望能够将详细级别设置为 1 或 2,效果如下:

1--> 将所有transparent元素视为protected

2--> 将所有transparent元素视为public

这种影响将传播到所有模型和子模型。
我不认为这已经存在。但是有一个简单的解决方法吗?

谢谢,罗尔

4

5 回答 5

6

正如 Michael Tiller 上面所写的,所有 Modelica 工具的处理方式都不相同,并且没有明确的答案。要给出特定于 OpenModelica 的答案,可以使用simulate(ModelName,outputFilter="regex"), 仅存储与给定正则表达式完全匹配的变量(默认为.*,匹配任何变量)。

于 2011-10-03T09:33:21.420 回答
3

罗尔,

我认识几个在这个问题上苦苦挣扎的人。目前,所有这些都取决于所使用的工具。我不知道其他工具如何处理结果过滤,但在 Dymola 中,您可以通过为信号提供特殊限定符(例如受保护)来控制它(如您所指出的)。

我过去做过的一件事是从模型扩展,然后为我感兴趣的事物添加一堆输出信号。然后您可以在 Dymola 中选择“输出”以确保这些信号进入结果文件。这远非完美,因为 a) 列出您想要的所有内容可能会变得乏味和 b) 引用受保护的变量不是严格允许的(尽管 Dymola 可以让您侥幸逃脱但会发出警告)。

在达索,我们正在积极讨论这个想法,并希望在这些方面提供一些更好的功能。目前尚不清楚此类功能是否严格特定于工具,或者是否会以某种方式涉及该语言。但如果它与语言相关,我们(当然)将与设计团队合作制定其他工具供应商也可以支持的规范。

于 2011-09-29T10:11:56.257 回答
3

在 SystemModeler 中,您转到模拟中心的实验浏览器中的设置选项卡。单击底部的输出并选择要存储的变量。

(选项是state variablesderivativesalgebraic variablesparametersprotected variables如果您标记- 选项Store simulation log,您将获得一些关于随时间变化的事件和函数评估的有趣统计数据,从而打开另一种可能性来追踪创建更多评估的模拟和模型部分)

于 2014-01-07T16:45:49.247 回答
2

我不确定这是否对您有帮助,但在 Dymola 中,您可以转到 Simulation->Setup->Output 并标记一个复选框,上面写着“存储受保护的变量”。这样就可以将大多数变量声明为受保护:在正常模拟期间它们不会被存储,但在调试模型时,您只需标记该复选框并存储它们。当然,这与您建议的关键字透明不一样,但也许它有点帮助......

于 2011-09-30T09:03:58.020 回答
1

有点晚了,但在 Dymola 2013 FD01 及更高版本中,您可以使用 annotation 根据名称(和模型名称)选择要存储的变量__Dymola_selections,甚至可以过滤用户定义的标签 - 因此您可以在该模型。请参阅手册中的“匹配和变量选择”。

于 2016-12-08T10:12:29.033 回答