This is a model of isentropic expansion or compression of an ideal gas with a fixed isentropic efficiency.
The isentropic exponent (kappa) by default is retrieved from the media model at the inlet. It can be set to a fixed value to allow compressor operation in two-phase region.
The computation is as follows:
omega_ref
, m_flow_ref
and
the scewness factor skew
, the pressure ratio
pr=p_outlet/p_inlet
is computed as quadratic function of
omega/omega_ref
, m_flow/m_flow_ref:
pr := abs(omega)*omega/(omega_ref^2)
- skew*omega*m_flow/(omega_ref*m_flow_ref)
- abs(m_flow)*m_flow/(m_flow_ref^2)
+ 1;
pr := k^(pr-1);
omega_ref
and m_flow_ref
are supposed to be scaling
factors for omega and m_flow respectiveley. omega_ref
is the angular
velocity that produces a pressure ratio of 2 at m_flow=0. m_flow_ref
is the massflow, that produces a negative pressure ratio of 1 at
omega=omega_ref
. The skewness factor can be used to shape the
characteristic curve inbetween (see fig. 1).
When pr < 1, the reciprocal pressure ratio 1/pr = p_inlet/p_outlet is more interesting. It can be seen for different values of skew in fig. 2.
Fig. 1: different skewness factors for omega/omega_ref=1. pressure ratio pr over m_dot/m_dot_ref
Fig. 2: different skewness factors for omega/omega_ref=1. Reciprocal pressure ratio 1/pr over m_dot/m_dot_ref
function dp_tau_const_isentrop extends partial_dp_tau; import R_m = Modelica.Constants.R "General gas constant"; input Real omega_ref(unit = "rad/s") = 1000 "Reference speed, that produces pr=1" annotation( Dialog(group = "Pressure ratio curve", enable = true)); input Real skew(unit = "1") = 0 "Scewness factor for mixed part of pr equation" annotation( Dialog(group = "Pressure ratio curve", enable = true)); input Real m_flow_ref(unit = "kg/s") = 0.25 "Reference mass_flow, that produces pr=-1" annotation( Dialog(group = "Pressure ratio curve", enable = true)); input Real eta(unit = "1") = 1 "Isentropic efficienty" annotation( Dialog(enable = true)); input Real k(unit = "1") = 2 "Exponential factor used for pr<1" annotation( Dialog(tab = "Advanced", enable = true)); input SI.Volume V_ref = 0.001 "Reference volume for chocke torque calculation" annotation( Dialog(tab = "Advanced", enable = true)); input Boolean kappaFromMedia = true "Retrieve kappa from media model?" annotation( Dialog(group = "Isentropic exponent", enable = true)); input Real kappa_fixed(unit = "1") = 1.4 "Fixed kappa value" annotation( Dialog(group = "Isentropic exponent", enable = not kappaFromMedia)); end dp_tau_const_isentrop;