ShaftConnectedCompressor1Phase

This component models a compressor that is connected to a Shaft for the single-phase flow model. The compressor formulation is based off the model described in INL (2018). The user supplies performance curves that give the pressure ratio and isentropic efficiency as functions of shaft speed and mass flow rate. The compressor then applies a pressure rise and work to the working fluid, according to the current flow conditions.

Usage

The parameter "volume" specifies the volume of the junction, and the parameter "position" specifies the spatial location of the center of the junction, which is used for plotting purposes only.

Initial conditions are specified with the following parameters:

The "apply_velocity_scaling" parameter specifies whether to apply the scaling of Hong and Kim (2011) to the normal component of the velocity of the junction state, as described in Volume Junction.

This component must be must be connected to a Shaft component, which controls the compressor rotational speed. The user must specify which flow channel boundaries are connected to the compressor with the "inlet" and "outlet" parameters.

The user assigns values for several compressor rated conditions: "omega_rated", "mdot_rated", "rho0_rated", and "c0_rated". These rated conditions, along with the user-supplied data "Rp_functions", "eff_functions", "speeds", define the compressor performance model.

The parameter speeds is a list of relative corrected speeds α\alpha (see Eq. (6)) in increasing order. The parameters parameters Rp_functions and eff_functions define curves for the pressure ratio rpr_p (see Eq. (2)) and isentropic efficiency η\eta (see Eq. (4)), respectively, as Functions for each entry in speeds, where the time value in the function corresponds to the relative corrected mass flow rate ν\nu (see Eq. (5)). Further discussion on these equations and the input data used in them is found in Compressor performance data.

The user inputs values for "tau_fr_coeff", "tau_fr_const", and "speed_cr_fr" that are used to compute friction torque as defined in Friction torque.

The compressor moment of inertia contributes to the total moment of inertia of the shaft, which represents the resistance to acceleration of the shaft speed. The user inputs values for "inertia_coeff", "inertia_const", and "speed_cr_I" that are used to compute the compressor moment of inertia as defined in Moment of inertia.

The parameter "A_ref" corresponds to the reference area ArefA_\text{ref} (see Eq. (1)). It should generally be assigned a value between the inlet area and outlet area. A_ref can act as a means to scale the compressor head and can also be used in combination with "K" to apply a pressure drop due to form loss.

Input Parameters

  • A_refReference area [m^2]

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Reference area [m^2]

  • Rp_functionsFunctions of pressure ratio versus relative corrected flow. Each function is for a different, constant relative corrected speed. The order of function names should correspond to the order of speeds in the `speeds` parameter [-]

    C++ Type:std::vector<FunctionName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Functions of pressure ratio versus relative corrected flow. Each function is for a different, constant relative corrected speed. The order of function names should correspond to the order of speeds in the `speeds` parameter [-]

  • c0_ratedRated compressor stagnation sound speed [m/s]

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Rated compressor stagnation sound speed [m/s]

  • eff_functionsFunctions of adiabatic efficiency versus relative corrected flow. Each function is for a different, constant relative corrected speed. The order of function names should correspond to the order of speeds in the `speeds` parameter [-]

    C++ Type:std::vector<FunctionName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Functions of adiabatic efficiency versus relative corrected flow. Each function is for a different, constant relative corrected speed. The order of function names should correspond to the order of speeds in the `speeds` parameter [-]

  • inertia_coeffCompressor inertia coefficients [kg-m^2]

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Compressor inertia coefficients [kg-m^2]

  • inertia_constCompressor inertia constant [kg-m^2]

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Compressor inertia constant [kg-m^2]

  • inletCompressor inlet

    C++ Type:BoundaryName

    Unit:(no unit assumed)

    Controllable:No

    Description:Compressor inlet

  • mdot_ratedRated compressor mass flow rate [kg/s]

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Rated compressor mass flow rate [kg/s]

  • omega_ratedRated compressor speed [rad/s]

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Rated compressor speed [rad/s]

  • outletCompressor outlet

    C++ Type:BoundaryName

    Unit:(no unit assumed)

    Controllable:No

    Description:Compressor outlet

  • positionSpatial position of the center of the junction [m]

    C++ Type:libMesh::Point

    Unit:(no unit assumed)

    Controllable:No

    Description:Spatial position of the center of the junction [m]

  • rho0_ratedRated compressor stagnation fluid density [kg/m^3]

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Rated compressor stagnation fluid density [kg/m^3]

  • speed_cr_ICompressor speed threshold for inertia [-]

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Compressor speed threshold for inertia [-]

  • speed_cr_frCompressor speed threshold for friction [-]

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Compressor speed threshold for friction [-]

  • speedsRelative corrected speeds. Order of speeds needs correspond to the orders of `Rp_functions` and `eff_functions` [-]

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Relative corrected speeds. Order of speeds needs correspond to the orders of `Rp_functions` and `eff_functions` [-]

  • tau_fr_coeffCompressor friction coefficients [N-m]

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Compressor friction coefficients [N-m]

  • tau_fr_constCompressor friction constant [N-m]

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Compressor friction constant [N-m]

  • volumeVolume of the junction [m^3]

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Volume of the junction [m^3]

Required Parameters

  • K0Form loss factor [-]

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:Yes

    Description:Form loss factor [-]

  • apply_velocity_scalingFalseSet to true to apply the scaling to the normal velocity. See documentation for more information.

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Set to true to apply the scaling to the normal velocity. See documentation for more information.

  • initial_TInitial temperature [K]

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial temperature [K]

  • initial_pInitial pressure [Pa]

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial pressure [Pa]

  • initial_vel_xInitial velocity in x-direction [m/s]

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial velocity in x-direction [m/s]

  • initial_vel_yInitial velocity in y-direction [m/s]

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial velocity in y-direction [m/s]

  • initial_vel_zInitial velocity in z-direction [m/s]

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial velocity in z-direction [m/s]

  • max_pressure_ratio50Maximum pressure ratio

    Default:50

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Maximum pressure ratio

  • min_pressure_ratio0Minimum pressure ratio

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Minimum pressure ratio

  • scaling_factor_rhoEV1Scaling factor for rho*E*V [-]

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Scaling factor for rho*E*V [-]

  • scaling_factor_rhoV1Scaling factor for rho*V [-]

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Scaling factor for rho*V [-]

  • scaling_factor_rhouV1Scaling factor for rho*u*V [-]

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Scaling factor for rho*u*V [-]

  • scaling_factor_rhovV1Scaling factor for rho*v*V [-]

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Scaling factor for rho*v*V [-]

  • scaling_factor_rhowV1Scaling factor for rho*w*V [-]

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Scaling factor for rho*w*V [-]

  • treat_as_turbineFalseTreat the compressor as a turbine?

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Treat the compressor as a turbine?

  • use_scalar_variablesTrueTrue if the junction variables are scalar variables

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:True if the junction variables are scalar variables

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Set the enabled status of the MooseObject.

Advanced Parameters

Formulation

The compressor is modeled as a 0-D volume based on the VolumeJunction1Phase component, which has conservation of mass, momentum, and energy equations in the volume, but with the addition of source terms to the momentum and energy equations:

\ddtρV=m˙inm˙out\eqc\ddt{\rho V} = \dot{m}_\text{in} - \dot{m}_\text{out} \eqc\ddtρuV=\pr(ρu2+p)Ain\pr(ρu2+p)Aout+Δp0Aref\eqc\ddt{\rho u V} = \pr{(\rho u^2 + p) A}_\text{in} - \pr{(\rho u^2 + p) A}_\text{out} + \Delta p_0 A_\text{ref} \eqc(1)\ddtρEV=\prm˙Hin\prm˙Hout+W˙\eqc\ddt{\rho E V} = \pr{\dot{m} H}_\text{in} - \pr{\dot{m} H}_\text{out} + \dot{W} \eqc

where

  • Δp0\Delta p_0 is the change in stagnation pressure,

  • ArefA_{\text{ref}} is the reference cross-sectional area, and

  • W˙\dot{W} is the work rate.

The pressure ratio rpr_p, which is given by user-defined performance data (see Compressor performance data), is defined as the ratio of the outlet stagnation pressure to the inlet stagnation pressure:

rpp0, outp0, in\eqpr_p \equiv \frac{p_{\text{0, out}}} {p_{\text{0, in}}} \eqp(2)

The stagnation pressure change can then be computed as

Δp0=p0, in(rp1)\eqp\Delta p_0 = p_{\text{0, in}} (r_p - 1) \eqp(3)

The isentropic efficiency η\eta, which is given by user-defined performance data (see Compressor performance data), is defined as the ratio of the isentropic work rate W˙s\dot{W}_s to the actual work rate W˙\dot{W}:

ηW˙sW˙\eqc\eta \equiv \frac{\dot{W}_s}{\dot{W}} \eqc(4)W˙s=m˙(Hout,sHin)\eqc\dot{W}_s = \dot{m} (H_{\text{out},s} - H_\text{in}) \eqcW˙=m˙(HoutHin)=W˙sη\eqp\dot{W} = \dot{m} (H_\text{out} - H_\text{in}) = \frac{\dot{W}_s}{\eta} \eqp

The connected Shaft receives a corresponding torque τcompressor\tau_\text{compressor}, computed using the work rate and shaft speed ω\omega, and also a friction torque τfriction\tau_\text{friction} (discussed in Friction torque):

τshaft,compressor=τcompressor+τfriction\eqc\tau_\text{shaft,compressor} = \tau_\text{compressor} + \tau_\text{friction} \eqcτcompressor=W˙ω\eqp\tau_\text{compressor} = -\frac{\dot{W}}{\omega} \eqp

Compressor performance data

Users specify performance curves that give the pressure ratio rpr_p and isentropic efficiency η\eta as functions of the mass flow rate and shaft speed. Specifically, the mass flow rate used is a quantity normalized by rated conditions, often referred to as the "relative corrected mass flow rate", given the symbol ν\nu:

ν(m˙ρ0, inc0, in)(m˙ρ0, inc0, in)rated\eqc\nu \equiv \frac{ (\frac{\dot{m}}{\rho_{\text{0, in}} c_{\text{0, in}}}) } { (\frac{\dot{m}}{\rho_{\text{0, in}} c_{\text{0, in}}})_{\text{rated}} } \eqc(5)

where ρ0\rho_0 and c0c_0 are stagnation density and sound speed, respectively. Similarly, the shaft speed used is also normalized by rated conditions, often referred to as the "relative corrected shaft speed", given the symbol α\alpha:

α(ωc0, in)(ωc0, in)rated\eqp\alpha \equiv \frac{ (\frac{\omega}{c_{\text{0, in}}}) } { (\frac{\omega}{c_{\text{0, in}}})_{\text{rated}} } \eqp(6)

The user provides an ordered list of relative corrected shaft speeds, which correspond to ordered lists of pressure ratio and isentropic efficiency functions:

{α1,α2,,αn}\eqc\left\{\alpha_1, \alpha_2, \ldots, \alpha_n\right\} \eqc{rp,1(ν),rp,2(ν),,rp,n(ν)}\eqc\left\{r_{p,1}(\nu), r_{p,2}(\nu), \ldots, r_{p,n}(\nu)\right\} \eqc{η1(ν),η2(ν),,ηn(ν)}\eqc\left\{\eta_1(\nu), \eta_2(\nu), \ldots, \eta_n(\nu)\right\} \eqc

Linear interpolation and extrapolation is used to get the dependence on α\alpha between and outside of the provided αi\alpha_i values:

rp(ν,α)=rp,i(ν)+rp,i+1(ν)rp,i(ν)αi+1αi(ααi)\eqcr_p(\nu, \alpha) = r_{p,i}(\nu) + \frac{r_{p,i+1}(\nu) - r_{p,i}(\nu)}{\alpha_{i+1} - \alpha_i}(\alpha - \alpha_i) \eqcη(ν,α)=ηi(ν)+ηi+1(ν)ηi(ν)αi+1αi(ααi)\eqp\eta(\nu, \alpha) = \eta_i(\nu) + \frac{\eta_{i+1}(\nu) - \eta_i(\nu)}{\alpha_{i+1} - \alpha_i}(\alpha - \alpha_i) \eqp

Lastly, bounds are applied to the pressure ratio, since extrapolation outside of limited performance data may yield unphysical values.

rprprp+\eqpr_p^- \leq r_p \leq r_p^+ \eqp

Friction torque

Friction torque always resists the direction of motion, so the sign of the compressor friction torque depends on the sign of the connected shaft speed. Positive shaft speed results in negative friction torque while negative shaft speed results in positive friction torque.

The friction torque magnitude, τfriction\tau_{\text{friction}}, is a function of shaft speed, ω\omega, and four input parameters. If the ratio of shaft speed to "omega_rated", α\alpha, is less than "speed_cr_fr", friction torque magnitude equals "tau_fr_const",

τfriction=τfr,const,\tau_{\text{friction}} = \tau_{\text{fr,const}},

otherwise, τfriction\tau_{\text{friction}} is a function of shaft speed and friction torque coefficients, "tau_fr_coeff",

τfriction=τfr,coeff[0]+τfr,coeff[1]α+τfr,coeff[2]α2+τfr,coeff[3]α3.\tau_{\text{friction}} = \tau_{\text{fr,coeff}}[0] + \tau_{\text{fr,coeff}}[1] \mid \alpha \mid + \tau_{\text{fr,coeff}}[2] \mid\alpha \mid^{2} + \tau_{\text{fr,coeff}}[3] \mid \alpha \mid^{3}.

Moment of inertia

The compressor moment of inertia, IcompressorI_{\text{compressor}}, is a function of shaft speed, ω\omega, and four input parameters. If the ratio of shaft speed to "omega_rated", α\alpha, is less than "speed_cr_I", compressor inertia equals "inertia_const",

Icompressor=Iconst,I_{\text{compressor}} = I_{\text{const}},

otherwise, IcompressorI_{\text{compressor}} is a function of shaft speed and inertia coefficients, "inertia_coeff",

Icompressor=Icoeff[0]+Icoeff[1]α+Icoeff[2]α2+Icoeff[3]α3.I_{\text{compressor}} = I_{\text{coeff}}[0] + I_{\text{coeff}}[1] \mid \alpha \mid + I_{\text{coeff}}[2] \mid\alpha \mid^{2} + I_{\text{coeff}}[3] \mid \alpha \mid^{3}.

Form Loss

Complex multidimensional interactions inside the junction cannot be practically modeled mechanistically but are instead approximated using a form loss factor KK, which gives rise to source terms on the momentum and energy equations:

Smomentum=K(p0,1p1)Arefu1u1\eqc\mathbf{S}^{\text{momentum}} = - K (p_{0,1} - p_1) A_\text{ref} \frac{\mathbf{u}_1}{\|\mathbf{u}_1\|} \eqc(7)Senergy=K(p0,1p1)Arefu1\eqcS^{\text{energy}} = - K (p_{0,1} - p_1) A_\text{ref} \|\mathbf{u}_1\| \eqc(8)

where

  • p0,1p_{0,1} is the stagnation pressure of the first flow channel (see Usage),

  • p1p_1 is the static pressure of the first flow channel,

  • ArefA_\text{ref} is the reference cross-sectional area, and

  • u1\mathbf{u}_1 is the velocity in the first connected flow channel.

Output

In addition to the junction variables, this component creates the following post-processors and auxiliary scalar variables:

Post-processor/variable nameDescriptionNotationUnit
comp_name:delta_pPressure difference across the compressor componentΔp0\Delta p_0[Pa]
comp_name:dissipation_torqueDissipation torque-[Nm]
comp_name:isentropic_torqueIsentropic torque-[Nm]
comp_name:friction_torqueFriction torqueτfriction\tau_{\text{friction}}[Nm]
comp_name:moment_of_inertiaMoment of inertiaIcompressorI_{\text{compressor}}[kg-m^2]
comp_name:efficiencyEfficiencyη\eta[-]
comp_name:pressure_ratioPressure ratiorpr_p[-]
comp_name:rel_corrected_flowRelative corrected mass flow rateα\alpha[-]
comp_name:rel_corrected_speedRelative corrected shaft speedν\nu[-]

References

  1. Seok Hong and Chongam Kim. A new finite volume method on junction coupling and boundary treatment for flow network system analyses. International Journal for Numerical Methods in Fluids, 65:707 – 742, 02 2011. doi:10.1002/fld.2212.[BibTeX]
  2. INL. The RELAP5-3D Code Development Team, RELAP5-3D Code Manual Volume I: Code Structure, System Models and Solution Methods. pages 470–477, 2018. doi:INL/MIS-15-36723.[BibTeX]