modelCheckValve
Extends from BuildingSystems.Fluid.BaseClasses.PartialResistance (Partial model for a hydraulic resistance), BuildingSystems.Fluid.Actuators.BaseClasses.ValveParameters (Model with parameters for valves).
Information
Implementation of a hydraulic check valve. Note that the small reverse flows can still occur with this model.
Main equations
The basic flow function
ṁ = sign(Δp) k √ Δp ,
with regularization near the origin, is used to compute the pressure drop. The flow coefficient
k = ṁ ⁄ √ Δp
is increased from l*KV_Si to KV_Si,
where KV_Si is equal to Kv but in SI units.
Therefore, the flow coefficient k is set to a value close to zero for negative pressure differences, thereby
restricting reverse flow to a small value.
The flow coefficient k saturates to its maximum value at the pressure dpValve_closing.
For larger pressure drops, the pressure drop is a quadratic function of the flow rate.
Typical use and important parameters
The parameters m_flow_nominal and dpValve_nominal
determine the flow coefficient of the check valve when it is fully opened.
A typical value for a nominal flow rate of 1 m/s is
dpValve_nominal = 3400 Pa.
The leakage ratio l determines the minimum flow coefficient,
for negative pressure differences.
The parameter dpFixed_nominal allows to include a series
pressure drop with a fixed flow coefficient into the model.
The parameter dpValve_closing determines when the
flow coefficient starts to increase,
which is typically in the order of dpValve_nominal.
Implementation
The check valve implementation approximates the physics
where a forward pressure difference opens the valve such that
the valve opening increases, causing a growing orifice area
and thus increasing the flow coefficient.
Near dp=dpValve_closing, the valve is fully open and the flow coefficient saturates
to the flow coefficient value determined by dpValve_nominal and m_flow_nominal.
For typical valve diameters, the check valve is only fully open
near nominal mass flow rate. Therefore, the model sets dpValve_closing=dpValve_nominal/2
by default.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | homotopyInitialization (from PartialResistance) | true | = true, use homotopy method |
| Modelica.Units.SI.MassFlowRate | m_flow_turbulent (from PartialResistance) | Turbulent flow if |m_flow| >= m_flow_turbulent | |
| Real | l | 0.001 | Valve leakage, l=Kv(y=0)/Kv(y=1) |
| Real | kFixed | if dpFixed_nominal > Modelica.Constants.eps then m_flow_nominal/sqrt(dpFixed_nominal) else 0 | Flow coefficient of fixed resistance that may be in series with valve, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2). |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from PartialTwoPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dp_nominal (from PartialResistance) | Pressure drop at nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dpValve_nominal (from ValveParameters) | Nominal pressure drop of fully open valve, used if CvData=BuildingSystems.Fluid.Types.CvTypes.OpPoint | |
| Modelica.Units.SI.PressureDifference | dpFixed_nominal | 0 | Pressure drop of pipe and other resistances that are in series |
| Modelica.Units.SI.PressureDifference | dpValve_closing | dpValve_nominal/2 | Pressure drop when the check valve starts to close |
| Advanced | |||
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialTwoPortInterface) | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Boolean | from_dp (from PartialResistance) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Boolean | linearized (from PartialResistance) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialTwoPortInterface) | false | = true, if actual temperature at port is computed |
| Flow Coefficient | |||
| BuildingSystems.Fluid.Types.CvTypes | CvData (from ValveParameters) | BuildingSystems.Fluid.Types.CvTypes.OpPoint | Selection of flow coefficient |
| Real | Kv (from ValveParameters) | Kv (metric) flow coefficient [m3/h/(bar)^(1/2)] | |
| Real | Cv (from ValveParameters) | Cv (US) flow coefficient [USG/min/(psi)^(1/2)] | |
| Modelica.Units.SI.Area | Av (from ValveParameters) | Av (metric) flow coefficient | |
| Pressure-flow linearization | |||
| Real | deltaM (from ValveParameters) | 0.02 | Fraction of nominal flow rate where linearization starts, if y=1 |
| Advanced › Nominal condition | |||
| Modelica.Units.SI.Density | rhoStd (from ValveParameters) | Inlet density for which valve coefficients are defined | |
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.Units.SI.MassFlowRate | m_flow (from PartialTwoPortInterface) | port_a.m_flow | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp (from PartialTwoPortInterface) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_a (from PartialTwoPortInterface) | if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow))) | Medium properties in port_a |
| Medium.ThermodynamicState | sta_b (from PartialTwoPortInterface) | if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow)) | Medium properties in port_b |
| Real | k | Flow coefficient of valve and pipe in series in allowed/forward direction, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2). |
Revisions
-
February 3, 2023, by Michael Wetter:
Corrected grahpical annotation. -
September 16, 2019, by Kristoff Six and Filip Jorissen:
Implementation of a hydraulic check valve. This is for issue 1198.