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
| Type | Name | Default | Description |
|---|---|---|---|
| SI.Diameter | diameter | Diameter of orifice | |
| Real | zeta | Loss factor for flow of port_a -> port_b | |
| Boolean | use_zeta | true | = false to obtain zeta from dp_nominal and m_flow_nominal |
| SI.ReynoldsNumber | Re_turbulent | 10000 | cf. sharpEdgedOrifice |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | system.allowFlowReversal | = true to allow flow reversal, false restricts to design direction (port_a -> port_b) |
| Advanced | |||
| Medium.AbsolutePressure | dp_start (from PartialTwoPortTransport) | 0.01*system.p_start | Guess value of dp = port_a.p - port_b.p |
| Medium.MassFlowRate | m_flow_start (from PartialTwoPortTransport) | system.m_flow_start | Guess value of m_flow = port_a.m_flow |
| Medium.MassFlowRate | m_flow_small (from PartialTwoPortTransport) | if system.use_eps_Re then system.eps_m_flow*system.m_flow_nominal else system.m_flow_small | Small mass flow rate for regularization of zero flow |
| Boolean | use_Re | system.use_eps_Re | = true, if turbulent region is defined by Re, otherwise by m_flow_small |
| Boolean | from_dp | true | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialTwoPortTransport) | true | = true, if temperatures at port_a and port_b are computed |
| Boolean | show_V_flow (from PartialTwoPortTransport) | true | = true, if volume flow rate at inflowing port is computed |
| Assumptions › Dynamics | |||
| Modelica.Fluid.Types.Dynamics | momentumDynamics (from PartialLumpedFlow) | system.momentumDynamics | Formulation of momentum balance |
| Nominal operating point | |||
| SI.MassFlowRate | m_flow_nominal | if system.use_eps_Re then system.m_flow_nominal else 1e2*system.m_flow_small | Mass flow rate for dp_nominal |
| SI.Pressure | dp_nominal | if 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^2 | Nominal pressure drop |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a (from PartialTwoPort) | Fluid connector a (positive design flow direction is from port_a to port_b) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b (from PartialTwoPort) | Fluid connector b (positive design flow direction is from port_a to port_b) |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.System | system (from PartialTwoPort) | System wide properties | |
| Medium.MassFlowRate | m_flow (from PartialTwoPortTransport) | Mass flow rate in design flow direction | |
| SI.Pressure | dp (from PartialTwoPortTransport) | Pressure difference between port_a and port_b (= port_a.p - port_b.p) | |
| SI.VolumeFlowRate | V_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.Temperature | port_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.Temperature | port_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.Length | pathLength (from PartialLumpedFlow) | Length flow path | |
| SI.Momentum | I (from PartialLumpedFlow) | Momenta of flow segments | |
| SI.Force | Ib_flow (from PartialLumpedFlow) | Flow of momentum across boundaries | |
| SI.Force | F_p (from PartialLumpedFlow) | Pressure force | |
| SI.Force | F_fg (from PartialLumpedFlow) | Friction and gravity force | |
| Real | zeta_nominal | ||
| Medium.Density | d | 0.5*(Medium.density(state_a) + Medium.density(state_b)) | |
| SI.Pressure | dp_fg | Pressure loss due to friction and gravity | |
| SI.Area | A_mean | Modelica.Constants.pi/4*diameter^2 | Mean cross flow area |
| SI.MassFlowRate | m_flow_turbulent | if 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.AbsolutePressure | dp_turbulent | if not use_Re then dp_small else max(dp_small, BaseClasses.lossConstant_D_zeta(diameter, zeta_nominal)/d*m_flow_turbulent^2) |