modelCheckValve

Check valve that avoids flow reversal

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

TypeNameDefaultDescription
BooleanhomotopyInitialization (from PartialResistance)true= true, use homotopy method
Modelica.Units.SI.MassFlowRatem_flow_turbulent (from PartialResistance)Turbulent flow if |m_flow| >= m_flow_turbulent
Reall0.001Valve leakage, l=Kv(y=0)/Kv(y=1)
RealkFixedif dpFixed_nominal > Modelica.Constants.eps then m_flow_nominal/sqrt(dpFixed_nominal) else 0Flow coefficient of fixed resistance that may be in series with valve, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2).
Assumptions
BooleanallowFlowReversal (from PartialTwoPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Nominal condition
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortInterface)Nominal mass flow rate
Modelica.Units.SI.PressureDifferencedp_nominal (from PartialResistance)Pressure drop at nominal mass flow rate
Modelica.Units.SI.PressureDifferencedpValve_nominal (from ValveParameters)Nominal pressure drop of fully open valve, used if CvData=BuildingSystems.Fluid.Types.CvTypes.OpPoint
Modelica.Units.SI.PressureDifferencedpFixed_nominal0Pressure drop of pipe and other resistances that are in series
Modelica.Units.SI.PressureDifferencedpValve_closingdpValve_nominal/2Pressure drop when the check valve starts to close
Advanced
Modelica.Units.SI.MassFlowRatem_flow_small (from PartialTwoPortInterface)1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow
Booleanfrom_dp (from PartialResistance)false= true, use m_flow = f(dp) else dp = f(m_flow)
Booleanlinearized (from PartialResistance)false= true, use linear relation between m_flow and dp for any flow rate
Advanced › Diagnostics
Booleanshow_T (from PartialTwoPortInterface)false= true, if actual temperature at port is computed
Flow Coefficient
BuildingSystems.Fluid.Types.CvTypesCvData (from ValveParameters)BuildingSystems.Fluid.Types.CvTypes.OpPointSelection of flow coefficient
RealKv (from ValveParameters)Kv (metric) flow coefficient [m3/h/(bar)^(1/2)]
RealCv (from ValveParameters)Cv (US) flow coefficient [USG/min/(psi)^(1/2)]
Modelica.Units.SI.AreaAv (from ValveParameters)Av (metric) flow coefficient
Pressure-flow linearization
RealdeltaM (from ValveParameters)0.02Fraction of nominal flow rate where linearization starts, if y=1
Advanced › Nominal condition
Modelica.Units.SI.DensityrhoStd (from ValveParameters)Inlet density for which valve coefficients are defined

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.Units.SI.MassFlowRatem_flow (from PartialTwoPortInterface)port_a.m_flowMass flow rate from port_a to port_b (m_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp (from PartialTwoPortInterface)port_a.p - port_b.pPressure difference between port_a and port_b
Medium.ThermodynamicStatesta_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.ThermodynamicStatesta_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
RealkFlow 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.