在Modelica中搜索像'verbosity'这样的概念

时间:2011-09-28 12:55:19

标签: modelica

我正在努力解决大型Modelica模型的输出文件大小问题。当然,我可以保护一些对象,以便从结果文件中完全删除它们。但是,这会产生两个问题:

  1. 无法重新声明受保护对象
  2. 如果我想详细测试我的模型(例如在短时间内),我需要再次公开声明这些对象以查看其变量
  3. 我想知道是否有一个设置Modelica模型的'详细程度'的技巧。也许我想要的是publicprotected旁边的第三个关键字,例如。 transparent。然后,在设置模拟时,我希望能够将详细级别设置为1或2,效果如下:

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

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

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

    谢谢, 罗埃尔

5 个答案:

答案 0 :(得分:6)

正如迈克尔·蒂勒(Michael Tiller)在上面所写的那样,在所有Modelica工具中都没有采用相同的方式,并且没有明确的答案。为了给出特定于OpenModelica的答案,可以使用simulate(ModelName,outputFilter="regex")来仅存储与给定正则表达式完全匹配的变量(默认为.*,匹配任何变量)。

答案 1 :(得分:3)

罗埃尔,

我知道有几个人正在努力解决这个问题。目前,所有这些都取决于所使用的工具。我不知道其他工具如何处理结果的过滤,但是在Dymola中你通过给出信号特殊限定符(例如受保护的)来控制它(如你所指出的)。

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

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

答案 2 :(得分:3)

在SystemModeler中,您可以转到Simulation Center中的Experiment Browswer中的Settings选项卡。单击底部的Output并选择要存储的变量。

(选项为state variablesderivativesalgebraic variablesparametersprotected variables,如果您标记Store simulation log - 选项,则为随着时间的推移和功能评估会获得一些有趣的统计数据,为追踪部分模拟和模型提供另一种可能性,从而创建更多的评估。

答案 3 :(得分:2)

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

答案 4 :(得分:0)

有点晚了,但在Dymola 2013 FD01及更高版本中,您可以使用注释__Dymola_selections根据名称(和模型名称)选择要存储的变量,甚至可以过滤用户定义的标签 - 这样您就可以创建标签名称"透明"在模型中。请参阅"匹配和变量选择"在手册中。