Two way valve with a pressure-independent valve opening characteristic.
The mass flow rate is controlled such that it is nearly equal to its
set point y*m_flow_nominal, unless the pressure
dp is too low, in which case a regular Kv
characteristic is used.
First the minimum pressure head dp_min
required for delivering the requested mass flow rate
y*m_flow_nominal is computed. If
dp > dp_min then the requested mass flow
rate is supplied. If dp < dp_min then
m_flow = Kv/sqrt(dp). Transition between
these two flow regimes happens in a smooth way.
This model is configured by setting m_flow_nominal
to the mass flow rate that the valve should supply when it is
completely open, i.e., y = 1. The pressure drop corresponding
to this working point can be set using dpValve_nominal,
or using a Kv, Cv or Av
value. The parameter dpValve_fixed can be used to add
additional pressure drops, although in this valve it is equivalent to
add these to dpValve_nominal.
The parameter l2 represents the non-ideal
leakage behaviour of this valve for high pressures.
It is assumed that the mass flow rate will rise beyond
the requested mass flow rate y*m_flow_nominal
if dp > dpValve_nominal+dpFixed_nominal.
The parameter l2 represents the slope
of this rise:
d(m_flow)/d(dp) = l2* m_flow_nominal/dp_nominal.
In the ideal case l2=0, but
this may introduce singularities, for instance when
connecting this component with a fixed mass flow source.
Parameter deltax sets the duration of
the transition region between the two flow regimes
as a fraction of dp_nominal or m_flow_nominal,
depending on the value of from_dp.
Note that the result in the transition region when
using from_dp = true is not identical to
the result when using from_dp = false.
Variables *_y1 and *_y2
serve a dual use.
They are used to
1) compute the support points at *_x1 and *_x2,
which should not depend on m_flow or dp and
2) to compute the flow functions when outside of this regime,
which does depend on m_flow or dp.
Min and max functions are therefore used such that one equation
can serve both puroposes.
order to a constant
as most users need not change this value.phi using
max(0.1*l, . ) to avoid
phi=0.
See
issue 1376.
phi using
max(0, . ) to avoid
negative phi.
See
issue 1223.
cubicHermite
such that it does not have a local maximum
and such that it is C2-continuous.
See #156.
filteredInput to use_inputFilter.spliceFunction with regStep.
This is for
issue 300.