首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Modelica MSL CombiTimeTable -如何在编译时仅设置表的大小?

Modelica MSL CombiTimeTable -如何在编译时仅设置表的大小?
EN

Stack Overflow用户
提问于 2021-05-14 15:16:37
回答 2查看 64关注 0票数 1

我已经声明使用MSL CombiTimeTable并替换我自己的代码来实现类似的功能。有没有一种方法可以在编译时只指定表的大小,然后给出表值?

下面的声明代码可以工作

代码语言:javascript
复制
    CombiTimeTable pump(
        smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
        extrapolation = Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
        table=[0,0; 1001,1; 1002,2; 1003,3; 1004,4; 1005,5]);

但我希望避免给出表的虚拟值。这个块的MSL文档并没有表明这是可能的,但这里可能有一些方法可以做到这一点?

https://doc.modelica.org/Modelica%203.2.3/Resources/helpMapleSim/Blocks/Sources/index.html#CombiTimeTable

我通常将Modelica代码编译成FMU并在Python脚本中设置参数。可以从文件中读取CombiTimeTable信息,但为了简单起见,我希望在Python脚本中包含FMU的所有参数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-14 16:41:20

那得看情况。您可以尝试:

代码语言:javascript
复制
  CombiTimeTable pump(
        nout=1,
        smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
        extrapolation = Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
        table=table);
  parameter Real table[6,2];

它使用大小合适的未指定的表。

然而,工具可能需要特殊的设置(Dymola似乎需要Advanced.IssueErrorForUnassignedParameter=false)-和/或生成默认值,如0。

票数 1
EN

Stack Overflow用户

发布于 2021-05-21 13:17:15

是否可以选择指定文件中的表数据,即tableFromFile=true?通过这种方式,您不需要以显式的方式关心表的行数,因为所有这些都是在Modelica外部函数代码中处理的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67530416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档