Modelica 连接到连接器阵列的一个切片
我有一个连接器阵列,我想将另一个更小的类似连接器阵列连接到这个连接器阵列的一部分。示例为Modelica 连接到连接器阵列的一个切片,modelica,Modelica,我有一个连接器阵列,我想将另一个更小的类似连接器阵列连接到这个连接器阵列的一部分。示例为a一组x连接器,b一组y连接器,x
a
一组x
连接器,b
一组y
连接器,x
:
connect(a[:], b[1:x]); // works fine
connect(a[:], b[2:x+1]); // gives an error
我在第二种情况下(在Dymola 2012中检查模型时)得到的错误是:
这是语言还是工具限制?是否有解决方法(除了使用for loops来连接每个单独的连接器)?这必须是工具限制,因为规范规定: 连接器参考中的下标应为参数表达式或特殊运算符“:”
我能想到的唯一解决办法是一个公式或更明显的方法:向Dymola团队提交错误报告。我将对OpenModelica做同样的操作(它生成了公式,但这些公式是错误的)。这一定是工具的限制,因为规范中说: 连接器参考中的下标应为参数表达式或特殊运算符“:”
我能想到的唯一解决办法是一个公式或更明显的方法:向Dymola团队提交错误报告。我也会对OpenModelica做同样的事情(它会生成公式,但这些公式是错误的)。我认为我们需要更多的代码来理解正在发生的事情。我看不出Dymola有任何明显的局限性。例如,以下代码在Dymola 2012 FD01中运行良好:
model SlicedConnectors
parameter Integer n(start=5);
Modelica.Blocks.Interfaces.RealInput a[n];
Modelica.Blocks.Interfaces.RealOutput b[2*n];
equation
connect(a[:],b[1:n]);
connect(a[:],b[(n+1):(2*n)]);
end SlicedConnectors;
因此,问题似乎并不是切割本身,而是更复杂的事情(关于特定连接器、大小变化等)。我认为我们需要更多的代码来理解正在发生的事情。我看不出Dymola有任何明显的局限性。例如,以下代码在Dymola 2012 FD01中运行良好:
model SlicedConnectors
parameter Integer n(start=5);
Modelica.Blocks.Interfaces.RealInput a[n];
Modelica.Blocks.Interfaces.RealOutput b[2*n];
equation
connect(a[:],b[1:n]);
connect(a[:],b[(n+1):(2*n)]);
end SlicedConnectors;
因此,问题似乎不是切割本身,而是更复杂的问题(关于特定连接器、大小变化等)。您确定这不仅仅是运算符优先级的问题吗?你试过b[2:(x+1)]吗?是的,我试过了,在这种情况下,
()
甚至会在错误消息中被删除。编辑:但这是有效的:connect(a[:],b[1:x+1-1])代码>因此它与起始位置不同于1有关。您确定这不仅仅是运算符优先级的问题吗?你试过b[2:(x+1)]吗?是的,我试过了,在这种情况下,()
甚至会在错误消息中被删除。编辑:但这是有效的:connect(a[:],b[1:x+1-1])代码>因此它与起始位置不同于1有关