【问题标题】:Modelica arrays with unspecified dimension未指定维度的 Modelica 数组
【发布时间】:2015-05-25 02:49:07
【问题描述】:

给定一个模型,其中包含未指定大小的连接器数组 x,例如

connector con
...
end con;

model test
con x[:];
end test;

如何用特定大小实例化 x,例如像这样?

test t(x = ?);
...
equation
connect(t.x[1], a);
connect(t.x[2], b);
...

【问题讨论】:

    标签: modelica openmodelica


    【解决方案1】:

    为什么需要未指定的维度?你可以这样做:

    connector con
    ...
    end con;
    
    model test
     constant Integer dim = 1;
     con x[dim];
    end test;
    
    // usage
    test(dim = 10);
    ...
    equation
      connect(t.x[1], a);
      connect(t.x[2], b);
    ...
    

    【讨论】:

    • 这是真的,但我很好奇是否可以实例化包含未指定维度的数组的模型。
    • 没有。维度需要在编译时知道,因此即使在声明它们时它们是未知的,您也需要在某个地方指定它们。如果您使 con x[:] 可替换并且您进行测试(重新声明 con x[10]),也许它会起作用,但我不确定。
    • 有趣的是,模型测试是有效的,但似乎无法使用,因为除非 x 是可替换的,否则它无法实例化。您确定在我的问题中声明时无法实例化它吗?
    • 您需要以某种方式指定尺寸。唯一的方法是通过绑定或重新声明。如果你有 test(x = y) ,其中 y 是一个 con y[known_dim] ,它可能会为 x 提供一个维度,但你也会得到新的方程 x[1] = y[1] ... 等等。
    • 好的,我明白了。谢谢你的解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 2016-11-17
    相关资源
    最近更新 更多