是否可以扩展Modelica连接器而无需重新定义"潜力"和流量连接方程?

时间:2016-07-26 04:11:30

标签: modelica dymola

我创建了一个简单的连接器来处理2D坐标对。连接器包括实际潜在变量x和y。

connector Coordinate_2D "2D Coordinate Connector"
  Real x;
  Real y;  
end Coordinate_2D;

我想扩展连接器并创建如下所示的3D版本:

connector Coordinate_3D "Coordinate connector: x,y,z"
  extends Coordinate_2D;
  Real z;
end Coordinate_3D;

我能够做到这一点,但它似乎并没有真正扩展连接器。它识别出Coordinate_3D包含x,y和z变量,但它似乎没有正确维护x和y潜在变量的连接器方程。

我创建了一个简单的转换器类,将2D连接器转换为3D连接器。我希望我能够简单地定义新变量z的等式,并且由于3D连接器从2D连接器扩展,因此将自动推断x和y值。所以我预计我可以简单地使用:

model CoordinateConverter_2D_to_3D "x,y to x,y,z converter"
  Real defaultZValue = 0;

equation 
  coordinate_3D.z = defaultZValue;
end CoordinateConverter_2D_to_3D;

但这似乎不起作用。翻译器声明变量coordinate_2D.x,coordinate_2D.y,coordinate_3D.x和coordinate_3D.y未使用,因此它们将从模拟中移除,只留下2个方程和2个未知数。如果不是翻译,我会使用" Check" Dymola中的选项,它显示了6个方程和6个未知数。

为了获得我期望的行为,我必须手动定义x和y变量的方程式:

model CoordinateConverter_2D_to_3D "x,y to x,y,z converter"
  Real defaultZValue = 0;

equation 
  coordinate_3D.x = coordinate_2D.x;
  coordinate_3D.y = coordinate_2D.y;
  coordinate_3D.z = defaultZValue;
end CoordinateConverter_2D_to_3D;

是否有一些我遗漏的东西会让3D连接器方程式从我想要的2D连接器扩展出来?

我理解在这种情况下添加另外两个方程是微不足道的,但在我的实际情况中,我有一个更复杂的连接器,包括多个流变量,一个流变量和多个潜在变量。因此,最好能够简单地将其他变量扩展到连接器,而不是从头开始重新定义连接器。

感谢任何帮助或建议。

谢谢, 贾斯汀

0 个答案:

没有答案