我想在我的模拟中放置一个"系统"组件(类似于Modelica.Fluid.System和Modelica.Mechanics.MultiBody.World),所有其他组件都可以从中访问Medium包,以便为整个流程图设置一次工作流体.我System的定义如下:
model System annotation(defaultAttributes="inner");
replaceable package Medium = Modelica.Media.Interfaces.PartialMedium
annotation(choicesAllMatching=true);
parameter Modelica.SIunits.Temperature T_amb=293.15;
// ...
equation
// empty
end System;
Run Code Online (Sandbox Code Playgroud)
我已经System在其他组件中引用了,outer System system;因此我可以访问其中包含的所有变量/参数,例如system.T_amb.但是,尝试拉这样的Medium包不起作用:
model MixingVolume
outer System system;
package Medium = system.Medium;
// ...
equation
// ...
end MixingVolume;
Run Code Online (Sandbox Code Playgroud)
我收到一条消息,说基类"system.Medium"丢失了.(这是从CATIA V6的Modelica环境中极其糟糕的德语翻译中重新翻译出来的,我注定要使用它 - 也许原始信息会提供更多信息.)我做错了什么?我很困惑,因为这......
model MixingVolume
outer System system;
Constant Integer nXi = system.Medium.nXi; // number of independent mass fractions
// ...
equation
// ...
end MixingVolume;
Run Code Online (Sandbox Code Playgroud)
...能正常工作,所以MixingVolume 确实看到system.Medium组件.有线索吗?非常感谢任何帮助.
您无法通过点表示法访问组件内的包.
如果第一个名称是点之后的组件引用,则只能跟随组件引用或函数.阅读Modelica规范:https: //www.modelica.org/documents/ModelicaSpec32Revision2.pdf.
如果允许system.Medium.nXi,它可能是工具中的错误.
| 归档时间: |
|
| 查看次数: |
961 次 |
| 最近记录: |