我创建了一个简单的连接器来处理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连接器扩展出来?
我理解在这种情况下添加另外两个方程是微不足道的,但在我的实际情况中,我有一个更复杂的连接器,包括多个流变量,一个流变量和多个潜在变量。因此,最好能够简单地将其他变量扩展到连接器,而不是从头开始重新定义连接器。
感谢任何帮助或建议。
谢谢, 贾斯汀