如何继承标准流体组件并覆盖和替换基础模型的某些方程?

neo*_*eon 3 modelica openmodelica

我想使用 OpenModelica 在 Modelica 中自定义标准流体库组件。\xc2\xa0

\n

我想创建一个新泵的定制版本,其中几个方程将被更改。

\n

Fluid.Machines.BaseClasses.PartialPump通过“extends”关键字继承为基本模型。当我尝试更改和重新定义方程时,它给出了超定系统错误。\xc2\xa0\n我将 redeclare 或 redifine 放在方程前面,但它仍然给出错误。

\n

创建自定义组件模型而不将所有内容复制到新模型中的最佳方法是什么?\xc2\xa0

\n

谢谢

\n

Ren*_*sen 6

不幸的是,您无法更改现有代码* \xe2\x80\x94,您只能添加新代码。

\n

就您而言,您必须复制Fluid.Machines.BaseClasses.PartialPump并修改相关方程。但是,您不一定需要复制其基类 ( Modelica.Fluid.Interfaces.PartialTwoPort)。

\n

PartialPump模型非常通用。如果您需要不同的泵曲线(压力、效率或功率),您可以根据 中的基类编写附加函数Fluid.Machines.BaseClasses.PumpCharacteristics

\n

*)我最初的声明的一个例外是图形注释的继承:如果您扩展模型并添加注释,则primitivesVisible=false图形注释(图标)将不会被继承,例如:

\n
model myModel\n  extends baseModel annotation(IconMap(primitivesVisible=false));\n\n  <new icon annotations>\nend myModel;\n
Run Code Online (Sandbox Code Playgroud)\n


Akh*_*dan 5

使用extends表明想要继承扩展类的所有行为。你可以改变这些行为,除非它们是redeclarable。最好的方法是通过复制基本模型来创建一个新类,然后根据需要更改行为。希望这有效!

在 OpenModelica 中复制一个类