Сломана Modelica.Fluid.Valves.Valve Несжимаемая модель? Ошибка получения Функция Utilities.regRoot2 не найден в области ‹X›

Я создал модель трехходового клапана на основе двух двухходовых клапанов, которые заявлены как сменные модели. Вот его начало ...

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, все идет хорошо.

  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

  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)));

Я получаю такую ​​ошибку:

[1] 12:40:08 Translation Error
[Modelica.Fluid.Valves: 38:9-40:80]: Function Utilities.regRoot2 not found in scope Valve.

Думаю, это можно решить, добавив такую ​​строку

      import Modelica.Fluid.Utilities;

к модели ValveIncompressible в пакете Valves, но мне кажется странным, что это еще не было исправлено, и мне интересно, что я делаю что-то не так. Что вы думаете?

Искренне,


person Alkhwarizmi    schedule 28.03.2020    source источник
comment
realted / подобный вопрос: stackoverflow.com/questions/60749708/   -  person matth    schedule 31.03.2020
comment
Спасибо, Мэтт. Я отправил эту ошибку в команду OpenModelica здесь вместе с исходным кодом для репликации проблема. Я думаю, что это отличается от другого тем, что я попытался создать модель с нуля, не копируя некоторый внутренний код библиотеки, и этот код правильно обрабатывается Dymola.   -  person Alkhwarizmi    schedule 02.04.2020


Ответы (1)


Похоже, что import Modelica.Fluid.Utilities; требуется в файле Modelica 3.2.3/Fluid/Valves.mo. На моей машине начало рассматриваемого класса теперь гласит:

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);
...

С этой модификацией моя модель работает.

person Alkhwarizmi    schedule 29.03.2020