Performance Functions#

These functions are available in the ccp.point module and they are mainly used by the ccp.Point class in the performance calculation.

ccp.point.disch_from_suc_head_eff(suc, head, eff, polytropic_method=None)#

Calculate discharge state from suction, head and efficiency.

Parameters
succcp.State

Suction state.

headpint.Quantity, float

Polytropic head (J/kg).

effpint.Quantity, float

Polytropic efficiency (dimensionless).

Returns
dischccp.State

Discharge state.

ccp.point.eff_isentropic(suc, disch)#

Isentropic efficiency.

Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
eff_isentropicpint.Quantity

Isentropic efficiency.

ccp.point.eff_pol(suc, disch)#

Polytropic efficiency.

Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
eff_polpint.Quantity

Polytropic efficiency (dimensionless).

ccp.point.eff_pol_huntington(suc, disch)#

Polytropic efficiency calculated by the 3 point method described by [Huntington, 1985].

Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
eff_pol_huntingtonpint.Quantity

Polytropic efficiency as described by [Huntington, 1985] (dimensionless).

ccp.point.eff_pol_mallen_saville(suc, disch)#

Polytropic efficiency as per [Mallen and Saville, 1977].

Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
eff_pol_mallen_savillepint.Quantity

Mallen-Saville polytropic efficiency (dimensionless).

ccp.point.eff_pol_sandberg_colby(suc, disch)#

Sandberg-Colby polytropic efficiency.

Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
eff_pol_sandberg_colby: pint.Quantity

Sandberg-Colby polytropic efficiency (dimensionless).

ccp.point.eff_pol_schultz(suc, disch)#

Polytropic efficiency as per [Schultz, 1962].

Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
eff_pol_schultzpint.Quantity

Schultz polytropic efficiency (dimensionless).

ccp.point.f_sandberg_colby(suc, disch)#

Correction factor as proposed by [Sandberg and Colby, 2013].

\[\begin{equation} f_p = \frac{(h_d - h_s) - T_{avg} (s_d - s_s)} {(\frac{n}{n-1})(p_d v_d - p_s v_s)} \end{equation}\]
Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
f_sandberg_colbypint.Quantity

Polytropic head correction factor as described by [Sandberg and Colby, 2013] (dimensionless).

ccp.point.f_schultz(suc, disch)#

Correction factor as per [Schultz, 1962] eq 32:

\[\begin{equation} f = \frac{H_{ds} - H_s}{(\frac{n_s}{n_s - 1})(p_d v_{ds} - p_s v_s)} \end{equation}\]
Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
f_schultzfloat

Schultz polytropic factor.

ccp.point.flow_from_phi(D, phi, speed)#

Calculate flow from non dimensional phi.

Parameters
Dfloat, pint.Quantity

Impeller outer diameter (m).

phipint.Quantity, float

Flow coefficient (m³/s).

speedpint.Quantity, float

Speed (rad/s).

Returns
u_calcpint.Quantity, float

Impeller tip speed.

ccp.point.head_from_psi(D, psi, speed)#

Calculate head from non dimensional psi.

Parameters
Dfloat, pint.Quantity

Impeller outer diameter (m).

psipint.Quantity, float

Head coefficient.

speedpint.Quantity, float

Speed (rad/s).

Returns
u_calcpint.Quantity, float

Impeller tip speed.

ccp.point.head_isentropic(suc, disch)#

Isentropic head.

Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
head_isentropicpint.Quantity

Isentropic head.

ccp.point.head_pol(suc, disch)#

Polytropic head.

The polytropic head is calculated as per [Schultz, 1962] eq. 27:

\[\begin{equation} H_p = (\frac{n}{n - 1}) (p_d v_d - p_s v_s) \end{equation}\]

And \(n\) is calculated by n_exp().

Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
head_polpint.Quantity

Polytropic head (J/kg).

ccp.point.head_pol_huntington(suc, disch)#

Polytropic head calculated by the 3 point method described by [Huntington, 1985].

The polytropic head in this case is calculated from the polytropic efficiency with:

\[\begin{equation} \frac{1}{e} = 1 + \frac{\frac{(s_d - s_s)}{R}} {a \ln(\frac{p_d}{p_s}) + b((\frac{p_d}{p_s}) - 1) + \frac{c}{2}(\ln{(\frac{p_d}{p_s})})^2} \end{equation}\]

The constants \(a\), \(b\) and \(c\) are calculated with:

\[\begin{split}\begin{equation} a = z_s - b \\ b = \frac{(z_s + z_d - 2z_{int})}{((\frac{p_s}{p_s})^{0.5} - 1)^2} \\ c = \frac{(z_d - a - b(\frac{p_d}{p_s}))}{\ln{(\frac{p_d}{p_s})}} \end{equation}\end{split}\]

The intermediate values are calculated interactively:

\[\begin{split}\begin{equation} p_{int} = \sqrt{p_s p_d} \\ T_{int}' = T_{int} \exp{(\frac{(s_{int}' - s_{int})}{c_p})} \end{equation}\end{split}\]

And \(s_{int}\) is calculated by:

\[\begin{equation} s_{int}' = s_s + (s_d - s_s) \frac{\frac{a}{2}\ln{(\frac{p_d}{p_s})} + b((\frac{p_s}{p_s})^{0.5} - 1)) + \frac{c}{8}(\ln{(\frac{p_d}{p_s})})^2} {a\ln(\frac{p_d}{p_s}) + b((\frac{p_d}{p_s})-1) + \frac{c}{2}(\ln(\frac{p_d}{p_s}))^2} \end{equation}\]
Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
head_pol_huntingtonpint.Quantity

Polytropic head as described by [Huntington, 1985] (J/kg).

ccp.point.head_pol_mallen_saville(suc, disch)#

Polytropic head as per [Mallen and Saville, 1977] calculated with:

\[\begin{equation} H_p = (h_d - h_s) - (s_d - s_s) \frac{T_d - Ts}{\ln{(\frac{T_d}{T_s})}} \end{equation}\]
Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
head_pol_mallen_savillepint.Quantity

Mallen-Saville polytropic polytropic head (J/kg).

ccp.point.head_pol_sandberg_colby(suc, disch)#

Polytropic head corrected by the [Sandberg and Colby, 2013] factor.

\[\begin{equation} H_{p_{s-c}} = f_{s-c} H_p \end{equation}\]

Where \(f_{s-c}\) is calculated by f_sandberg_colby() and \(H_p\) is calculated by head_pol().

Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
head_pol_sandberg_colbypint.Quantity

Reference head as described by [Sandberg and Colby, 2013] (J/kg).

ccp.point.head_pol_schultz(suc, disch)#

Polytropic head corrected by the [Schultz, 1962] factor.

\[\begin{equation} H_{p_{schultz}} = f_{schultz} H_p \end{equation}\]

Where \(f_{schultz}\) is calculated by f_schultz() and \(H_p\) is calculated by head_pol().

Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
head_pol_schultzpint.Quantity

Schultz polytropic head (J/kg).

ccp.point.head_reference(suc, disch, num_steps=100)#

Reference head.

The reference head consists of the integration of \(v dp\) along the polytropic path as described by [Huntington, 1985] and [Sandberg and Colby, 2013]. To achieve this we break the polytropic path into a series of subpaths. The compression ratio \(R_{c_i}\) for each segment, as described by [Sandberg and Colby, 2013] is calculated with:

\[\begin{equation} R_{c_i} = \sqrt[n_{steps}]{\frac{p_d}{p_s}} \end{equation}\]

The calculation consists of two loops. One converges the \(T_1\) temperature at each step by evaluating the difference between \(H = v_{avg} \Delta_p\) and \(H = e \Delta_h\). The other evaluates the efficiency by checking the difference between the last \(T_1\) to the discharge temperature \(T_d\).

Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
head_referencepint.Quantity

Reference head as described by [Huntington, 1985]. (J/kg).

eff_referencefloat

Reference efficiency as described by [Huntington, 1985] (dimensionless).

ccp.point.head_reference_2017(suc, disch, num_steps=100)#

Reference head.

The reference head consists of the integration along the polytropic path as described by [Huntington, 2017]. Contrary to the method presented by [Huntington, 1985], this method does not use a specific volume linearized over each step of the integration, instead, it is based on the assumption that the compressibility factor varies linearly with the pressure within each step.

In this case the inner loop of the method is calculated by:

\[\begin{split} \begin{equation} a = \frac{z_i (\frac{p_{i+1}}{p_i}) - z_{i+1}} {(\frac{p_{i+1}}{p_i} - 1)} \\ b = \frac{z_{i+1} - z_i} {(\frac{p_{i+1}}{p_i} - 1)} \\ (s_{i+1} - s_i) = R \frac{(1-e)}{e}(a \ln{(\frac{p_{i+1}}{p_i})} + b(\frac{p_{i+1}}{p_i} - 1)) \end{equation}\end{split}\]
Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
head_referencepint.Quantity

Reference head as described by [Huntington, 2017]. (J/kg).

eff_referencefloat

Reference efficiency as described by [Huntington, 2017] (dimensionless).

ccp.point.mach(suc, speed, D)#

Calculate the Mach number.

Parameters
succcp.State

Suction state.

speedpint.Quantity, float

Impeller speed (rad/s).

Dfloat, pint.Quantity

Impeller outer diameter (m).

Returns
machpint.Quantity

Mach number (dimensionless).

ccp.point.n_exp(suc, disch)#

Polytropic exponent.

The polytropic exponent \(n\) is calculated as per [Schultz, 1962] eq. 27:

\[\begin{equation} n = \frac{\log{\frac{p_d}{p_s}}}{\log{\frac{v_s}{v_d}}} \end{equation}\]
Parameters
succcp.State

Suction state.

dischccp.State

Discharge state.

Returns
n_expfloat

Polytropic exponent.

ccp.point.phi(flow_v, speed, D)#

Flow coefficient.

Parameters
flow_vfloat, pint.Quantity

Impeller flow (m³/s).

speedfloat, pint.Quantity

Impeller speed (rad/s).

Dfloat, pint.Quantity

Impeller outer diameter (m).

Returns
phipint.Quantity

Flow coefficient (dimensionless).

ccp.point.power_calc(flow_m, head, eff)#

Calculate power.

Parameters
flow_mpint.Quantity, float

Mass flow (kg/s).

headpint.Quantity, float

Head (J/kg).

effpint.Quantity, float

Efficiency (dimensionless).

Returns
powerpint.Quantity

Power (watt).

ccp.point.reynolds(suc, speed, b, D)#

Calculate the Reynolds number.

Parameters
succcp.State

Suction state.

speedpint.Quantity, float

Impeller speed (rad/s).

bfloat, pint.Quantity

Impeller width at the outer blade diameter (m).

Dfloat, pint.Quantity

Impeller outer diameter (m).

Returns
reynoldspint.Quantity

Reynolds number (dimensionless).

ccp.point.speed_from_psi(D, head, psi)#

Calculate speed from non dimensional psi.

Parameters
Dfloat, pint.Quantity

Impeller outer diameter (m).

headpint.Quantity, float

Polytropic head.

psipint.Quantity, float

Head coefficient.

Returns
u_calcpint.Quantity, float

Impeller tip speed.

ccp.point.u_calc(D, speed)#

Calculate the impeller tip speed.

Parameters
Dfloat, pint.Quantity

Impeller outer diameter (m).

speedpint.Quantity, float

Impeller speed (rad/s).

Returns
u_calcpint.Quantity

Impeller tip speed (m/s).

Hun85

R. A. Huntington. Evaluation of Polytropic Calculation Methods for Turbomachinery Performance. Journal of Engineering for Gas Turbines and Power, 107(4):872–876, 10 1985. doi:10.1115/1.3239827.

Hun17

Richard Huntington. Another new look at polytropic calculations methods for turbomachinery performance. pages, 09 2017. doi:10.13140/RG.2.2.10331.87841.

MS77

M Mallen and G Saville. Polytropic processes in the performance prediction of centrifugal compressors. Institution of mechanical engineers, London, United Kingdom, pages 89–96, 1977.

SC13

Mark E Sandberg and Gary M Colby. Limitations of asme ptc 10 in accurately evaluation centrifugal compressor thermodynamic performance. In Proceedings of the 42nd Turbomachinery Symposium. Texas A&M University. Turbomachinery Laboratories, 2013. doi:10.21423/R1505Q.

Sch62

John M. Schultz. The Polytropic Analysis of Centrifugal Compressors. Journal of Engineering for Power, 84(1):69–82, 01 1962. doi:10.1115/1.3673381.