BladeRow

class turbodesign.bladerow.BladeRow[source]

A single blade row (stator or rotor) in a turbomachine stage.

\*\*Core Configuration**
id

Row identifier.

Type:

int

stage_id

Stage identifier.

Type:

int

row_type

Stator or Rotor.

Type:

RowType

loss_function

Loss model applied to this row.

Type:

LossBaseClass, optional

deviation_function

Deviation model applied to this row.

Type:

DeviationBaseClass, optional

cutting_line

Line perpendicular to the streamline.

Type:

line2D, optional

rp

Degree of reaction.

Type:

float

hub_location

Hub axial location.

Type:

float

shroud_location

Shroud axial location.

Type:

float

\*\*Fluid Properties**
R

Ideal gas constant, J/(kg K). Default 287.15.

Type:

float

gamma

Ratio of specific heats Cp/Cv. Default 1.33.

Type:

float

Cp

Specific heat at constant pressure, J/(kg K). Default 1019.

Type:

float

Cv

Specific heat at constant volume, J/(kg K).

Type:

float

mu

Dynamic viscosity, Pa s.

Type:

float

\*\*Mass Flow**
total_massflow

Total mass flow including upstream cooling, kg/s.

Type:

float

massflow

Mass flow distribution per radial station.

Type:

ndarray

total_massflow_no_coolant

Inlet mass flow without coolant, kg/s.

Type:

float

massflow_target

Custom mass flow distribution for angle matching, kg/s.

Type:

ndarray, optional

\*\*Streamline Geometry**
percent_hub

Where blade row is defined along the hub (0-1).

Type:

float

percent_hub_shroud

Percent streamline length from hub to shroud.

Type:

ndarray

x

Axial coordinates.

Type:

ndarray

r

Radial coordinates.

Type:

ndarray

m

Meridional coordinates.

Type:

ndarray

total_area

Total annular flow area.

Type:

float

area

Flow area per streamline.

Type:

ndarray

\*\*Row Efficiency**
eta_total

Total-to-total isentropic efficiency.

Type:

float

eta_static

Total-to-static isentropic efficiency.

Type:

float

eta_poly

Polytropic efficiency.

Type:

float

stage_loading

Stage loading coefficient (work per stage).

Type:

float

\*\*Flow Angles** *(radians)*
alpha1, alpha2

Absolute flow angles at inlet and exit.

Type:

ndarray

beta1, beta2

Relative flow angles at inlet and exit.

Type:

ndarray

deviation

Flow deviation from metal angle.

Type:

ndarray

beta1_fixed, beta2_fixed

Whether inlet/exit geometry is already defined.

Type:

bool

\*\*Velocities**
Vm

Meridional velocity.

Type:

ndarray

Vx

Axial velocity.

Type:

ndarray

Vt

Tangential (swirl) velocity.

Type:

ndarray

Vr

Radial velocity.

Type:

ndarray

V

Absolute velocity magnitude.

Type:

ndarray

U

Blade peripheral velocity.

Type:

ndarray

W

Relative velocity magnitude.

Type:

ndarray

Wt

Relative tangential velocity.

Type:

ndarray

M

Absolute Mach number.

Type:

ndarray

M_rel

Relative Mach number.

Type:

ndarray

omega

Angular velocity, rad/s.

Type:

float

\*\*Thermodynamic Quantities**
P0

Total pressure, Pa.

Type:

ndarray

T0

Total temperature, K.

Type:

ndarray

P

Static pressure, Pa.

Type:

ndarray

T

Static temperature, K.

Type:

ndarray

rho

Density, kg/m^3.

Type:

ndarray

P0R

Relative total pressure, Pa.

Type:

ndarray

T0R

Relative total temperature, K.

Type:

ndarray

entropy_rise

Entropy rise across row.

Type:

ndarray

\*\*Performance**
power

Power, W.

Type:

float

P0_P

Total-to-static pressure ratio.

Type:

float

P0_ratio

Total-to-total pressure ratio.

Type:

float

flow_coefficient

Flow coefficient (Vm/U).

Type:

float

Reynolds

Reynolds number.

Type:

float

Yp

Pressure loss coefficient.

Type:

ndarray

\*\*Blade Geometry** *(set via properties)*
axial_chord

Axial chord length. Set via property.

Type:

float

aspect_ratio

Height-to-chord ratio. Set via property.

Type:

float

pitch_to_chord

Pitch-to-chord ratio. Set via property.

Type:

float

stagger

Stagger angle, degrees. Set via property.

Type:

float

num_blades

Blade count. Set via property.

Type:

int

tip_clearance

Clearance as fraction of span. Set via property.

Type:

float

te_pitch

Trailing-edge-to-pitch ratio. Set via property.

Type:

float

blade_to_blade_gap

Inter-row gap as fraction of chord. Set via property.

Type:

float

Cp: float = 1019
Cv: float = 893.8596491228071
M: ndarray[tuple[Any, ...], dtype[_ScalarT]]
M_rel: ndarray[tuple[Any, ...], dtype[_ScalarT]]
P: ndarray[tuple[Any, ...], dtype[_ScalarT]]
P0: ndarray[tuple[Any, ...], dtype[_ScalarT]]
P0R: ndarray[tuple[Any, ...], dtype[_ScalarT]]
P0R_is: ndarray[tuple[Any, ...], dtype[_ScalarT]]
P0_P: float = 0
P0_is: ndarray[tuple[Any, ...], dtype[_ScalarT]]
P0_ratio: float = 0
P0_ratio_target: float = 0
P0_stator_inlet: ndarray[tuple[Any, ...], dtype[_ScalarT]]
Power_Type: PowerType = 1
R: float = 287.15
Reynolds: float = 0
T: ndarray[tuple[Any, ...], dtype[_ScalarT]]
T0: ndarray[tuple[Any, ...], dtype[_ScalarT]]
T0R: ndarray[tuple[Any, ...], dtype[_ScalarT]]
T0_is: ndarray[tuple[Any, ...], dtype[_ScalarT]]
T0_stator_inlet: ndarray[tuple[Any, ...], dtype[_ScalarT]]
T_is: ndarray[tuple[Any, ...], dtype[_ScalarT]]
U: ndarray[tuple[Any, ...], dtype[_ScalarT]]
V: ndarray[tuple[Any, ...], dtype[_ScalarT]]
V2: ndarray[tuple[Any, ...], dtype[_ScalarT]]
Vm: ndarray[tuple[Any, ...], dtype[_ScalarT]]
Vr: ndarray[tuple[Any, ...], dtype[_ScalarT]]
Vt: ndarray[tuple[Any, ...], dtype[_ScalarT]]
Vx: ndarray[tuple[Any, ...], dtype[_ScalarT]]
W: ndarray[tuple[Any, ...], dtype[_ScalarT]]
Wt: ndarray[tuple[Any, ...], dtype[_ScalarT]]
Yp: ndarray[tuple[Any, ...], dtype[_ScalarT]]
alpha1: ndarray[tuple[Any, ...], dtype[_ScalarT]]
alpha2: ndarray[tuple[Any, ...], dtype[_ScalarT]]
area: ndarray[tuple[Any, ...], dtype[_ScalarT]]
property aspect_ratio
property axial_chord: float

Returns the mean axial chord defined in the x-direction

Returns:

Axial Chord

Return type:

float

beta1: ndarray[tuple[Any, ...], dtype[_ScalarT]]
beta1_fixed: bool = False
property beta1_metal: ndarray[tuple[Any, ...], dtype[_ScalarT]]

Backward-compatible alias for metal_inlet_angle.

beta1_metal_radii: ndarray[tuple[Any, ...], dtype[_ScalarT]]
beta2: ndarray[tuple[Any, ...], dtype[_ScalarT]]
beta2_fixed: bool = False
property beta2_metal: ndarray[tuple[Any, ...], dtype[_ScalarT]]

Backward-compatible alias for metal_exit_angle.

beta2_metal_radii: ndarray[tuple[Any, ...], dtype[_ScalarT]]
property blade_to_blade_gap: float

Returns the blade to blade gap value

Returns:

_description_

Return type:

float

blockage: float = 0
calculated_massflow: float = 0
property camber: float

Estimates the camber of the blade using a bezier curve. This is not as accurate because thickness is not defined on suction and pressure sides.

Returns:

camber length

Return type:

float

property chord: ndarray[tuple[Any, ...], dtype[_ScalarT]]

Chord defined at mean radius

Returns:

axial chord

Return type:

float

property coolant
cutting_line: <lambda> | None = None
deviation: ndarray[tuple[Any, ...], dtype[_ScalarT]]
deviation_function: DeviationBaseClass | None = None
entropy_rise: ndarray[tuple[Any, ...], dtype[_ScalarT]]
eta_poly: float = 0.0
eta_static: float = 0
eta_total: float = 0
euler_power: float = 0
flow_coefficient: float = 0
gamma: float = 1.33
hub_location: float = 0.0
id: int = 0
incli_curve_radii: ndarray[tuple[Any, ...], dtype[_ScalarT]]
property inlet_to_outlet_pratio: Tuple[float, float]

This is what is varied by the optimization. The range is between [0 and 1] but you should

Returns:

_description_

Return type:

List[float]

property location: float
loss_function: LossBaseClass | None = None
property loss_model
m: ndarray[tuple[Any, ...], dtype[_ScalarT]]
massflow: ndarray[tuple[Any, ...], dtype[_ScalarT]]
massflow_target: ndarray[tuple[Any, ...], dtype[_ScalarT]] | None = None
property metal_exit_angle: ndarray[tuple[Any, ...], dtype[_ScalarT]]

Blade metal exit angle (degrees).

property metal_inlet_angle: ndarray[tuple[Any, ...], dtype[_ScalarT]]

Blade metal inlet angle (degrees).

mprime: ndarray[tuple[Any, ...], dtype[_ScalarT]]
mu: float = 0
property num_blades: float

Configured number of blades (set during design/initialization).

omega: float = 0
percent_hub: float = 0
percent_hub_shroud: ndarray[tuple[Any, ...], dtype[_ScalarT]]
phi: ndarray[tuple[Any, ...], dtype[_ScalarT]]
property pitch: float

Returns the pitch which is the distance from blade to blade

Returns:

pitch

Return type:

float

property pitch_to_chord: ndarray[tuple[Any, ...], dtype[_ScalarT]]

Gets the pitch to chord ratio

Returns:

pitch to chord ratio

Return type:

float

power: float = 0
power_distribution: ndarray[tuple[Any, ...], dtype[_ScalarT]]
power_mean: float = 0
r: ndarray[tuple[Any, ...], dtype[_ScalarT]]
rho: ndarray[tuple[Any, ...], dtype[_ScalarT]]
rm: ndarray[tuple[Any, ...], dtype[_ScalarT]]
row_type: RowType = 1
rp: float = 0.4
property rpm
shroud_location: float = 0.0
property solidity: ndarray[tuple[Any, ...], dtype[_ScalarT]]

Inverse of pitch to chord ratio

Returns:

solidity value

Return type:

float

stage_id: int = 0
stage_loading: float = 0
property stagger: float

Average stagger angle

Returns:

stagger angle

Return type:

float

synchronize_blade_geometry() None[source]

Couple num_blades, pitch-to-chord/solidity, chord, and stagger.

Uses mean radius from interpolated streamlines to derive pitch, chord, and stagger (axial chord / chord).

property te_pitch

Trailing edge to pitch ratio

Returns:

trailing edge to pitch ratio

Return type:

float

property throat: float

Throat distance

Returns:

throat

Return type:

float

property tip_clearance

Tip clearance as a percentage of annulus height

to_dict()[source]
total_area: float = 0
total_massflow: float = 0
total_massflow_no_coolant: float = 0
x: ndarray[tuple[Any, ...], dtype[_ScalarT]]

Module Functions

turbodesign.bladerow.interpolate_streamline_quantities(row: BladeRow, passage: Passage, num_streamlines: int = 3)[source]

Interpolate all quantities onto the streamline and allocates variables. Run this after setting some initial conditions

Parameters:
  • r_streamline (npt.NDArray) – Radii describing the streamline

  • passage (Passage) – Passage object describing the geometry of the hub and shroud

  • num_streamlines (int) – number of streamlines to consider

Returns:

new row object with quantities interpolated

Return type:

(BladeRow)

turbodesign.bladerow.sutherland(T: float | ndarray[tuple[Any, ...], dtype[_ScalarT]]) float | ndarray[tuple[Any, ...], dtype[_ScalarT]][source]

Sutherland viscosity calculation used for reynolds number

Parameters:

T (float) – Temperature in Kelvin

Returns:

Dynamic Viscosity (mu) in Pa*s

Return type:

float