可以在 OpenModelica 中使用平行管道模拟流体再循环吗?

问题描述 投票:0回答:1

我目前正在对涉及流体再循环的系统进行建模(参见显示流体流动的图像)。在该系统中,流体通过入口进入并流经管道 1。在到达 DPS 孔口之前,一部分流体通过平行管道转移。有人遇到过类似的模拟挑战吗? 对于此类问题的任何见解或先前经验将不胜感激。预先感谢!

enter image description here

打开modelica版本:

连接到 OpenModelica v1.14.1(64 位) 连接到 OMSimulator v2.1.0-dev-147-g36ec2c7-mingw

代码:

model separation
  replaceable package Medium = Modelica.Media.Water.WaterIF97_ph constrainedby Modelica.Media.Interfaces.PartialMedium;
  /* Déclaration de la convection forcée*/
  replaceable model heatTransfet = Modelica.Fluid.Pipes.BaseClasses.HeatTransfer.ConstantFlowHeatTransfer(alpha0 = conv_ext);
  /* Déclaration de la conduite */
  Modelica.Fluid.Pipes.DynamicPipe pipe(redeclare package Medium = Medium, allowFlowReversal = false, diameter = 5e-3, energyDynamics = Modelica.Fluid.Types.Dynamics.SteadyState, isCircular = true, length = 15, m_flows(fixed = true, start = 0.08), massDynamics = Modelica.Fluid.Types.Dynamics.SteadyState, momentumDynamics = Modelica.Fluid.Types.Dynamics.SteadyState, nNodes = 5, roughness = 3.2e-05, use_HeatTransfer = false) annotation(
    Placement(visible = true, transformation(origin = {-2, 10}, extent = {{10, -10}, {-10, 10}}, rotation = 0)));
  /*  Paroi */
  /* Conditions aux limites */
  Modelica.Fluid.Sources.Boundary_pT inlet(redeclare package Medium = Medium, T = 40 + 273.15, nPorts = 1, p = 14e+5, use_p_in = false) annotation(
    Placement(visible = true, transformation(origin = {-86, -26}, extent = {{-6, -6}, {6, 6}}, rotation = 0)));
  Modelica.Fluid.Fittings.SimpleGenericOrifice DPSs(redeclare package Medium = Medium, diameter = 10e-3, use_zeta = true, zeta = 200) annotation(
    Placement(visible = true, transformation(origin = {37, -26}, extent = {{-7, -8}, {7, 8}}, rotation = 0)));
  inner Modelica.Fluid.System system(energyDynamics = Modelica.Fluid.Types.Dynamics.DynamicFreeInitial, massDynamics = Modelica.Fluid.Types.Dynamics.DynamicFreeInitial, momentumDynamics = Modelica.Fluid.Types.Dynamics.DynamicFreeInitial) annotation(
    Placement(visible = true, transformation(origin = {-80, 22}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Fluid.Fittings.SimpleGenericOrifice DPSe(redeclare package Medium = Medium, diameter = 10e-3, use_zeta = true, zeta = 1) annotation(
    Placement(visible = true, transformation(origin = {-47, -26}, extent = {{-11, -8}, {11, 8}}, rotation = 0)));
  Modelica.Fluid.Sources.MassFlowSource_T boundary(redeclare package Medium = Medium,T = 40 + 273.15, m_flow = -0.32, nPorts = 1)  annotation(
    Placement(visible = true, transformation(origin = {72, -26}, extent = {{10, -10}, {-10, 10}}, rotation = 0)));
  Modelica.Fluid.Pipes.DynamicPipe pipe1(redeclare package Medium = Medium,diameter = 10e-3, energyDynamics = Modelica.Fluid.Types.Dynamics.SteadyState, isCircular = true, length = 15, massDynamics = Modelica.Fluid.Types.Dynamics.SteadyState, momentumDynamics = Modelica.Fluid.Types.Dynamics.SteadyState, nNodes = 5, roughness = 3.2e-05, use_HeatTransfer = false) annotation(
    Placement(visible = true, transformation(origin = {-2, -26}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
  connect(inlet.ports[1], DPSe.port_a) annotation(
    Line(points = {{-80, -26}, {-58, -26}, {-58, -26}, {-58, -26}}, color = {0, 127, 255}));
  connect(DPSe.port_b, pipe1.port_a) annotation(
    Line(points = {{-36, -26}, {-12, -26}}, color = {0, 127, 255}));
  connect(pipe1.port_b, DPSs.port_a) annotation(
    Line(points = {{8, -26}, {30, -26}}, color = {0, 127, 255}));
  connect(DPSs.port_b, boundary.ports[1]) annotation(
    Line(points = {{44, -26}, {62, -26}}, color = {0, 127, 255}));
  connect(pipe.port_b, DPSe.port_b) annotation(
    Line(points = {{-12, 10}, {-36, 10}, {-36, -26}, {-36, -26}}, color = {0, 127, 255}));
  connect(pipe.port_a, DPSs.port_a) annotation(
    Line(points = {{8, 10}, {30, 10}, {30, -26}}, color = {0, 127, 255}));
algorithm

  annotation(
    uses(Modelica(version = "3.2.3")),
    Diagram);
end separation;

我试图防止“管道”中的流体反向流动,但遇到错误:

“求解器将尝试在时间 0 处除以零:pipe.m_flows[1] + max(DPSe.m_flow, 1e-007)。此除法会在时间 0 处导致无穷大或 NaN,其中 (a=27123.8 ) / (b=0),其中除数 b 为:pipe.m_flows[1] + max(DPSe.m_flow, 1e-007)。"

modelica openmodelica
1个回答
0
投票

在您的模型中,压力从

inlet
boundary
单调减小。因此,
pipe
中不存在会导致流动与产生的压降相反的“物理定律”(重力、沸腾引起的加速度等)。

此外,将

allowFlowReversal
设置为
false
并不会使
pipe
充当止回阀。它只是停止模拟,并显示一条错误消息,指出您违反了
m_flow>0
的要求。

© www.soinside.com 2019 - 2024. All rights reserved.