带水闭环

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

我想在 Modelica 中模拟封闭圆形管道中的水循环,但我见过的所有模型都需要边界。 我可以做这样的东西吗?enter image description here

更新: 我已经写了这个,但它不起作用。我很高兴知道错误是什么

  replaceable package Medium = 
  Modelica.Media.CompressibleLiquids.LinearWater_pT_Ambient 
  constrainedby Modelica.Media.Interfaces.PartialMedium; 

  Modelica.Fluid.Machines.PrescribedPump pump(N_nominal = 1200,
  redeclare replaceable function flowCharacteristic = 
 Modelica.Fluid.Machines.BaseClasses.PumpCharacteristics.quadraticFlow(V_flow_nominal = {0, 0.25, 0.5}, head_nominal = {100, 60, 0}),
  N_const = 1500, checkValve = true, V = 0.05, energyDynamics = Modelica.Fluid.Types.Dynamics.SteadyStateInitial, 
  massDynamics = Modelica.Fluid.Types.Dynamics.SteadyStateInitial, T_start = 293.15, allowFlowReversal = false, m_flow_start = 0.0001, 
  redeclare replaceable model HeatTransfer = Modelica.Fluid.Vessels.BaseClasses.HeatTransfer.IdealHeatTransfer, redeclare replaceable package Medium = Medium) annotation(Placement(visible = true, transformation(origin = {-90, -55}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));

  inner Modelica.Fluid.System system annotation(Placement(visible = true, transformation(origin = {-125, 70}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));

  Modelica.Fluid.Pipes.DynamicPipe pipe(redeclare replaceable model FlowModel = Modelica.Fluid.Pipes.BaseClasses.FlowModels.DetailedPipeFlow, 
  length = 2, diameter = 0.5, energyDynamics = Modelica.Fluid.Types.Dynamics.SteadyStateInitial, massDynamics = Modelica.Fluid.Types.Dynamics.SteadyStateInitial,
  momentumDynamics = Modelica.Fluid.Types.Dynamics.SteadyStateInitial, T_start = 293.15, nNodes = 2, 
  redeclare replaceable model HeatTransfer = Modelica.Fluid.Pipes.BaseClasses.HeatTransfer.LocalPipeFlowHeatTransfer, use_HeatTransfer = false,
  allowFlowReversal = false, redeclare replaceable package Medium = Medium) annotation(Placement(visible = true, transformation(origin = {-17.657, -55}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));


  Modelica.Fluid.Pipes.DynamicPipe pipe1(redeclare replaceable model FlowModel = Modelica.Fluid.Pipes.BaseClasses.FlowModels.DetailedPipeFlow, length = 2,
  diameter = 0.5, energyDynamics = Modelica.Fluid.Types.Dynamics.SteadyStateInitial, massDynamics = Modelica.Fluid.Types.Dynamics.SteadyStateInitial,
  momentumDynamics = Modelica.Fluid.Types.Dynamics.SteadyStateInitial, T_start = 293.15, nNodes = 2, 
  redeclare replaceable model HeatTransfer = Modelica.Fluid.Pipes.BaseClasses.HeatTransfer.LocalPipeFlowHeatTransfer, use_HeatTransfer = false,
  allowFlowReversal = false, redeclare replaceable package Medium = Medium) annotation(Placement(visible = true, transformation(origin = {-17.982, -30}, extent = {{10, -10}, {-10, 10}}, rotation = 0)));

  Modelica.Fluid.Vessels.ClosedVolume volume(V = 0.0005, redeclare replaceable package Medium = Medium, nPorts = 3,
  energyDynamics = Modelica.Fluid.Types.Dynamics.SteadyStateInitial, massDynamics = Modelica.Fluid.Types.Dynamics.SteadyStateInitial, use_T_start = true, T_start = 293.15, p_start = 100000) annotation(Placement(visible = true, transformation(origin = {-65, -5}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Fluid.Sources.Boundary_pT boundary(nPorts = 1, p = 100000, T = 293.15, redeclare replaceable package Medium = Medium) annotation(Placement(visible = true, transformation(origin = {40, -7.215}, extent = {{-10, -10}, {10, 10}}, rotation = -180)));
equation
  connect(pump.port_b, pipe.port_a) annotation(Line(visible = true, origin = {-53.829, -55}, points = {{-26.171, 0}, {26.171, 0}}, color = {0, 127, 255}));
  connect(pipe.port_b, pipe1.port_a) annotation(Line(visible = true, origin = {-6.488, -42.5}, points = {{-1.169, -12.5}, {1.331, -12.5}, {1.331, 12.5}, {-1.494, 12.5}}, color = {0, 127, 255}));
  connect(pump.port_a, volume.ports[1]) annotation(Line(visible = true, origin = {-88, -41}, points = {{-12, -14}, {-17, -14}, {-17, 1}, {23, 1}, {23, 26}}, color = {0, 127, 255}));
  connect(pipe1.port_b, volume.ports[2]) annotation(Line(visible = true, origin = {-52.661, -25}, points = {{24.679, -5}, {-12.339, -5}, {-12.339, 10}}, color = {0, 127, 255}));
  connect(boundary.ports[1], volume.ports[3]) annotation(Line(visible = true, origin = {-40, -13.886}, points = {{70, 6.671}, {-10, 6.671}, {-10, -6.114}, {-25, -6.114}, {-25, -1.114}}, color = {0, 127, 255}));
  annotation(Diagram(coordinateSystem(extent = {{-150, -90}, {150, 90}}, preserveAspectRatio = true, initialScale = 0.1, grid = {5, 5})), Icon(coordinateSystem(extent = {{-100, -100}, {100, 100}}, preserveAspectRatio = true, initialScale = 0.1, grid = {10, 10}), graphics = {Rectangle(visible = true, lineColor = {0, 114, 195}, fillColor = {255, 255, 255}, extent = {{-100, -100}, {100, 100}}, radius = 25), Text(visible = true, textColor = {64, 64, 64}, extent = {{-150, 110}, {150, 150}}, textString = "%name")}));
fluid modelica
1个回答
1
投票

是的,但与电路一样,您需要指定一个“接地”,因为电路中的热力和液压组件仅描述 changes 焓或压力 - 而不是绝对值。

一个简单的解决方案是添加一个

Modelica.Fluid.Sources.Boundary_pT
以在回路中的某处提供参考压力。

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