modelSimpleGenericOrifice

Simple generic orifice defined by pressure loss coefficient and diameter (only for flow from port_a to port_b)

Extends from Modelica.Fluid.Interfaces.PartialTwoPortTransport (Partial element transporting fluid between two ports without storage of mass or energy), Modelica.Fluid.Interfaces.PartialLumpedFlow (Base class for a lumped momentum balance).

Information

This pressure drop component defines a simple, generic orifice, where the loss factor ζ is provided for one flow direction (e.g., from loss table of a book):

Δp = 0.5*ζ*ρ*v*|v|
   = 8*ζ/(π^2*D^4*ρ) * m_flow*|m_flow|

where

  • Δp is the pressure drop: Δp = port_a.p - port_b.p
  • D is the diameter of the orifice at the position where ζ is defined (either at port_a or port_b). If the orifice has not a circular cross section, D = 4*A/P, where A is the cross section area and P is the wetted perimeter.
  • ζ is the loss factor with respect to D that depends on the geometry of the orifice. In the turbulent flow regime, it is assumed that ζ is constant.
    For small mass flow rates, the flow is laminar and is approximated by a polynomial that has a finite derivative for m_flow=0.
  • v is the mean velocity.
  • ρ is the upstream density.

Since the pressure loss factor zeta is provided only for a mass flow from port_a to port_b, the pressure loss is not correct when the flow is reversing. If reversing flow only occurs in a short time interval, this is most likely uncritical. If significant reversing flow can appear, this component should not be used.

Parameters

TypeNameDefaultDescription
SI.DiameterdiameterDiameter of orifice
RealzetaLoss factor for flow of port_a -> port_b
Booleanuse_zetatrue= false to obtain zeta from dp_nominal and m_flow_nominal
SI.ReynoldsNumberRe_turbulent10000cf. sharpEdgedOrifice
Assumptions
BooleanallowFlowReversal (from PartialTwoPort)system.allowFlowReversal= true to allow flow reversal, false restricts to design direction (port_a -> port_b)
Advanced
Medium.AbsolutePressuredp_start (from PartialTwoPortTransport)0.01*system.p_startGuess value of dp = port_a.p - port_b.p
Medium.MassFlowRatem_flow_start (from PartialTwoPortTransport)system.m_flow_startGuess value of m_flow = port_a.m_flow
Medium.MassFlowRatem_flow_small (from PartialTwoPortTransport)if system.use_eps_Re then system.eps_m_flow*system.m_flow_nominal else system.m_flow_smallSmall mass flow rate for regularization of zero flow
Booleanuse_Resystem.use_eps_Re= true, if turbulent region is defined by Re, otherwise by m_flow_small
Booleanfrom_dptrue= true, use m_flow = f(dp) else dp = f(m_flow)
Advanced › Diagnostics
Booleanshow_T (from PartialTwoPortTransport)true= true, if temperatures at port_a and port_b are computed
Booleanshow_V_flow (from PartialTwoPortTransport)true= true, if volume flow rate at inflowing port is computed
Assumptions › Dynamics
Modelica.Fluid.Types.DynamicsmomentumDynamics (from PartialLumpedFlow)system.momentumDynamicsFormulation of momentum balance
Nominal operating point
SI.MassFlowRatem_flow_nominalif system.use_eps_Re then system.m_flow_nominal else 1e2*system.m_flow_smallMass flow rate for dp_nominal
SI.Pressuredp_nominalif not system.use_eps_Re then 1e3 else BaseClasses.lossConstant_D_zeta(diameter, zeta)/Medium.density_pTX(Medium.p_default, Medium.T_default, Medium.X_default)*m_flow_nominal^2Nominal pressure drop

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a (from PartialTwoPort)Fluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_bport_b (from PartialTwoPort)Fluid connector b (positive design flow direction is from port_a to port_b)

Components

TypeNameDefaultDescription
Modelica.Fluid.Systemsystem (from PartialTwoPort)System wide properties
Medium.MassFlowRatem_flow (from PartialTwoPortTransport)Mass flow rate in design flow direction
SI.Pressuredp (from PartialTwoPortTransport)Pressure difference between port_a and port_b (= port_a.p - port_b.p)
SI.VolumeFlowRateV_flow (from PartialTwoPortTransport)m_flow/Modelica.Fluid.Utilities.regStep(m_flow, Medium.density(state_a), Medium.density(state_b), m_flow_small)Volume flow rate at inflowing port (positive when flow from port_a to port_b)
Medium.Temperatureport_a_T (from PartialTwoPortTransport)Modelica.Fluid.Utilities.regStep(port_a.m_flow, Medium.temperature(state_a), Medium.temperature(Medium.setState_phX(port_a.p, port_a.h_outflow, port_a.Xi_outflow)), m_flow_small)Temperature close to port_a, if show_T = true
Medium.Temperatureport_b_T (from PartialTwoPortTransport)Modelica.Fluid.Utilities.regStep(port_b.m_flow, Medium.temperature(state_b), Medium.temperature(Medium.setState_phX(port_b.p, port_b.h_outflow, port_b.Xi_outflow)), m_flow_small)Temperature close to port_b, if show_T = true
SI.LengthpathLength (from PartialLumpedFlow)Length flow path
SI.MomentumI (from PartialLumpedFlow)Momenta of flow segments
SI.ForceIb_flow (from PartialLumpedFlow)Flow of momentum across boundaries
SI.ForceF_p (from PartialLumpedFlow)Pressure force
SI.ForceF_fg (from PartialLumpedFlow)Friction and gravity force
Realzeta_nominal
Medium.Densityd0.5*(Medium.density(state_a) + Medium.density(state_b))
SI.Pressuredp_fgPressure loss due to friction and gravity
SI.AreaA_meanModelica.Constants.pi/4*diameter^2Mean cross flow area
SI.MassFlowRatem_flow_turbulentif not use_Re then m_flow_small else max(m_flow_small, (Modelica.Constants.pi/8)*diameter*(Medium.dynamicViscosity(state_a) + Medium.dynamicViscosity(state_b))*Re_turbulent)
SI.AbsolutePressuredp_turbulentif not use_Re then dp_small else max(dp_small, BaseClasses.lossConstant_D_zeta(diameter, zeta_nominal)/d*m_flow_turbulent^2)