首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >破坏了Modelica.Fluid.Valves.ValveIncompressible模型?接收错误"Function Utilities.regRoot2 not found in scope <X>“

破坏了Modelica.Fluid.Valves.ValveIncompressible模型?接收错误"Function Utilities.regRoot2 not found in scope <X>“
EN

Stack Overflow用户
提问于 2020-03-28 19:52:29
回答 1查看 66关注 0票数 0

我基于两个双向阀创建了一个三通阀模型,这两个阀被声明为可替换模型。这就是它的初级阶段。

代码语言:javascript
复制
within SHCLibrary;
model ThreeWayBallValveII

// Import section, AKA nicknames section. To (greately) improve readability.
  import Modelica.Fluid.System;
  import Modelica.Fluid.Interfaces.{FluidPort_a, FluidPort_b};
  import Modelica.Blocks.Sources.Constant;
  import Modelica.Blocks.Math.Add;
  import Modelica.Blocks.Interfaces.RealInput;

// Definition of the fluid to be used in the component.
//  replaceable package Medium = Modelica.Media.Interfaces.PartialMedium;
  replaceable package Medium = Modelica.Media.Water.ConstantPropertyLiquidWater;
// Allows for optional redefinition of junciton and valves model. 
//  replaceable model TeeJunction = Modelica.Fluid.Fittings.BaseClasses.PartialTeeJunction;
  replaceable model TeeJunction = Modelica.Fluid.Fittings.TeeJunctionIdeal;
//  replaceable model Valve = Modelica.Fluid.Valves.BaseClasses.PartialValve;
  replaceable model Valve = Modelica.Fluid.Valves.ValveLinear;
//  replaceable model Valve = Modelica.Fluid.Valves.ValveIncompressible;
//  import Valve = Modelica.Fluid.Valves.ValveIncompressible;

...

我在修改Valve声明的测试模型中使用了这个阀门。关键是,如果我使用LinearValve模型,一切都会很顺利。

代码语言:javascript
复制
  ThreeWayBallValveII V1(
   redeclare package Medium = Medium,
   redeclare model Valve = Modelica.Fluid.Valves.ValveLinear)
   annotation(
    Placement(visible = true, transformation(origin = {0, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));

相反,如果我使用ValveIncompressible模型

代码语言:javascript
复制
  ThreeWayBallValveII V1(
   redeclare package Medium = Medium,
//   redeclare model Valve = Modelica.Fluid.Valves.ValveLinear)
   redeclare model Valve = Modelica.Fluid.Valves.ValveIncompressible)
   annotation(
    Placement(visible = true, transformation(origin = {0, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));

我得到了这个错误:

代码语言:javascript
复制
[1] 12:40:08 Translation Error
[Modelica.Fluid.Valves: 38:9-40:80]: Function Utilities.regRoot2 not found in scope Valve.

我想这可以通过添加下面这样的一行来解决

代码语言:javascript
复制
      import Modelica.Fluid.Utilities;

添加到Valves包中的ValveIncompressible模型,但对我来说这似乎很奇怪,因为之前还没有修复这个问题,我想知道我做错了什么。你认为如何?

由衷地,

EN

回答 1

Stack Overflow用户

发布于 2020-03-30 01:06:08

文件Modelica 3.2.3/Fluid/Valves.mo中似乎需要import Modelica.Fluid.Utilities;。在我的机器上,有问题的类的开头现在是:

代码语言:javascript
复制
within Modelica.Fluid;
package Valves "Components for the regulation and control of fluid flow"
    extends Modelica.Icons.VariantsPackage;

    model ValveIncompressible "Valve for (almost) incompressible fluids"
      extends BaseClasses.PartialValve;
      import Modelica.Fluid.Types.CvTypes;
      import Modelica.Constants.pi;
      import Modelica.Fluid.Utilities;

      constant SI.ReynoldsNumber Re_turbulent = 4000
      "cf. straight pipe for fully open valve -- dp_turbulent increases for closing valve";
      parameter Boolean use_Re = system.use_eps_Re
      "= true, if turbulent region is defined by Re, otherwise by m_flow_small"
        annotation(Dialog(tab="Advanced"), Evaluate=true);
...

通过这个修改,我的模型就可以工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60900784

复制
相关文章

相似问题

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