2

コネクタの配列があり、同様のコネクタの別の小さい配列を、このコネクタ配列のスライスに接続したいと考えています。コネクタの配列、コネクタのa配列の例:xbyx < y

connect(a[:], b[1:x]); // works fine
connect(a[:], b[2:x+1]); // gives an error

2 番目のケース (Dymola 2012 でモデルをチェックするとき) で発生するエラーには、次のように書かれています。

Error: Failed to expand connect(a[:], b[2:x+1])

これは言語またはツールの制限ですか? また、回避策はありますか (for ループを使用して個々のコネクタを接続する以外に)?

4

2 に答える 2

2

何が起こっているのかを理解するには、ここでさらにコードが必要だと思います。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;

したがって、それ自体が問題であるようには見えませんが、おそらくもっと複雑なもの (特定のコネクタに関するもの、サイジングの変動性など) が考えられます。

于 2012-04-27T08:48:04.297 に答える
2

仕様には次のように記載されているため、これはツールの制限に違いありません。

コネクタ参照の添字は、パラメータ式または特殊演算子「:」でなければなりません。

私が考えられる唯一の回避策は、For-Equation またはより明白な方法です。Dymola チームにバグ レポートを提出してください。OpenModelica についても同じことを行います (方程式は生成されますが、間違ったものです)。

于 2012-04-24T07:23:25.377 に答える