首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenModelica错误:可扩展连接器数组-确定过多的系统

OpenModelica错误:可扩展连接器数组-确定过多的系统
EN

Stack Overflow用户
提问于 2018-08-17 15:08:05
回答 1查看 236关注 0票数 1

谁能告诉我为什么下面的modelica代码在OpenModelica 1.12.0上会产生错误?如果我去掉最后两个连接方程式,它会工作得很好。

代码语言:javascript
复制
class A
  Conn cc[3];
  Real a(start=0,fixed=true);
  Real b(start=0,fixed=true);
  Real c(start=0,fixed=true);
equation
  der(a) = 1;
  der(b) = 2;
  der(c) = 3;
  connect(a,cc[1].v);
  connect(b,cc[2].v); // Remove this to make it work
  connect(c,cc[3].v); // Remove this to make it work
end A;

可扩展连接器cc为空:

代码语言:javascript
复制
expandable connector Conn
end Conn;

上面的代码在OpenModelica 1.12.0上产生错误:

代码语言:javascript
复制
[1] 15:07:44 Symbolic Error
Too many equations, over-determined system. The model has 6 equation(s) and 4 variable(s).

[2] 15:07:44 Symbolic Warning
[A: 11:3-11:21]: Equation 5 (size: 1) b = cc[2].v is not big enough to solve for enough variables.
  Remaining unsolved variables are: 
  Already solved: b
  Equations used to solve those variables:
    Equation 2 (size: 1): der(b) = 2.0

[3] 15:07:44 Symbolic Warning
[A: 12:3-12:21]: Equation 6 (size: 1) c = cc[3].v is not big enough to solve for enough variables.
  Remaining unsolved variables are: 
  Already solved: c
  Equations used to solve those variables:
    Equation 3 (size: 1): der(c) = 3.0

基本上,我希望有一个可扩展的连接器数组,我可以根据需要添加不同类型的变量。

编辑2018年8月8日

关于我只能将“连接器”连接到一个可扩展的连接器,实际上我看到modelica规范3.4文档说:

代码语言:javascript
复制
All components in an expandable connector are seen as connector instances even if they are not declared as 
such [i.e. it is possible to connect to e.g. a Real variable].  

似乎我可以在OpenModelica中将实数变量连接到一个可扩展的连接器,但是在JModelica中我得到了一个错误:

代码语言:javascript
复制
Error at line 13, column 11, in file 'A.mo':
  Connecting to an instance of a non-connector type is not allowed

我也可以在OpenModeica中将实变量连接到普通的(不可扩展的)连接器,但在JModelica中同样不允许这样做。因此,工具对语言规范的解释是不同的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-17 18:53:56

您不能将Real variables连接到可扩展连接器,它需要是连接器。但不知何故,这也不起作用,似乎是一个bug。工作原理(在OM和Dymola中测试)如下:

代码语言:javascript
复制
class Expandable
  expandable connector Conn
    Real v[3];
  end Conn;

  connector RealOutput = output Real "'output Real' as connector";

  Conn cc;
  RealOutput a(start=0,fixed=true);
  RealOutput b(start=0,fixed=true);
  RealOutput c(start=0,fixed=true);
equation 
  der(a) = 1;
  der(b) = 2;
  der(c) = 3;
  connect(a,cc.v[1]);
  connect(b,cc.v[2]);
  connect(c,cc.v[3]);
end Expandable;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51890078

复制
相关文章

相似问题

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