I would like to model an hydraulic network where I use the Modelica.Fluid.Fittings.SimpleGenericOrifice
as a seal so I can impose the pressure loss of a pipe. Using the formula in the documentation, I can calculate the zeta coefficient of the orifice.
Here is a simplified example, here I try to impose a pressure loss of 50 bar inside my pipe1. Because the pressure should be equal at the port, I assume that it should work :
However I don't have any pressure loss in the pipe and in the orifice.
Does anyone know how to make this work ?
Here is the code of the example
model Joints_HD
replaceable package Medium=Modelica.Media.Water.StandardWater constrainedby
Modelica.Media.Interfaces.PartialMedium;
Modelica.Fluid.Pipes.StaticPipe pipe(redeclare package Medium = Medium,diameter = 0.15, length = 1) annotation(
Placement(visible = true, transformation(origin = {-38, 10}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
inner Modelica.Fluid.System system annotation(
Placement(visible = true, transformation(origin = {-70, 42}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Sources.Boundary_pT boundary(redeclare package Medium = Medium,T = 328.15, p = 157e5, nPorts = 1) annotation(
Placement(visible = true, transformation(origin = {-66, 10}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Sources.MassFlowSource_T boundary1(redeclare package Medium = Medium,T = 328.15, m_flow = -0.17, nPorts = 1) annotation(
Placement(visible = true, transformation(origin = {72, 10}, extent = {{10, -10}, {-10, 10}}, rotation = 0)));
Modelica.Fluid.Pipes.StaticPipe pipe2(redeclare package Medium = Medium,diameter = 0.15, length = 1) annotation(
Placement(visible = true, transformation(origin = {44, 10}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Fittings.SimpleGenericOrifice orifice(redeclare package Medium = Medium,diameter = 0.15, dp_nominal = 5e+06, m_flow_nominal = 2.34e-9, use_zeta = false) annotation(
Placement(visible = true, transformation(origin = {2, 10}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Pipes.StaticPipe pipe1(redeclare package Medium = Medium, diameter = 0.15, length = 1) annotation(
Placement(visible = true, transformation(origin = {2, -18}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
connect(boundary.ports[1], pipe.port_a) annotation(
Line(points = {{-56, 10}, {-48, 10}}, color = {0, 127, 255}));
connect(pipe.port_b, orifice.port_a) annotation(
Line(points = {{-28, 10}, {-8, 10}}, color = {0, 127, 255}));
connect(pipe2.port_b, boundary1.ports[1]) annotation(
Line(points = {{54, 10}, {62, 10}}, color = {0, 127, 255}));
connect(orifice.port_b, pipe2.port_a) annotation(
Line(points = {{12, 10}, {34, 10}}, color = {0, 127, 255}));
connect(pipe.port_b, pipe1.port_a) annotation(
Line(points = {{-28, 10}, {-20, 10}, {-20, -18}, {-8, -18}}, color = {0, 127, 255}));
connect(pipe1.port_b, pipe2.port_a) annotation(
Line(points = {{12, -18}, {26, -18}, {26, 10}, {34, 10}}, color = {0, 127, 255}));
annotation(
uses(Modelica(version = "3.2.3")));
end Joints_HD;
Best regards, Maxime
pipe1
has "wrong" dimensions (diameter, length, roughness etc.) since it only creates a very small pressure drop.
To verify that the rest of the model is okay — and that you can have a pressure drop of 50 bar over pipe1
at the flow set in boundary1
(0.17 kg/s) — temporarilly change pipe1.FlowModel
to NominalTurbulentPipeFlow
with m_flow_nominal=0.17
and dp_nominal=50 bar
.
Subsequently, switch the flow model back to the default (detailed) model and adjust the pipe geometry.
By the way, you should provide a value for orifice.zeta
even though it is not used.