RCAIDE.Library.Components.Powertrain.Converters.Rotor

Rotor#

class Rotor(*args, **kwarg)[source]#

Bases: Component

A generalized rotor component model serving as the base class for various rotary propulsion devices.

tag#

Identifier for the rotor. Default is ‘rotor’.

Type:

str

number_of_blades#

Number of rotor blades. Default is 0.0.

Type:

float

tip_radius#

Outer radius of the rotor [m]. Default is 0.0.

Type:

float

hub_radius#

Inner radius of the rotor at hub [m]. Default is 0.0.

Type:

float

twist_distribution#

Blade twist angle distribution [rad]. Default is 0.0.

Type:

float

sweep_distribution#

Quarter chord sweep distribution [m]. Default is 0.0.

Type:

float

chord_distribution#

Blade chord length distribution [m]. Default is 0.0.

Type:

float

thickness_to_chord#

Ratio of blade thickness to chord. Default is 0.0.

Type:

float

max_thickness_distribution#

Maximum thickness distribution along blade [m]. Default is 0.0.

Type:

float

radius_distribution#

Radial stations along blade [m]. Default is None.

Type:

ndarray

mid_chord_alignment#

Mid-chord line alignment [m]. Default is 0.0.

Type:

float

blade_solidity#

Ratio of total blade area to rotor disk area. Default is 0.0.

Type:

float

flap_angle#

Blade flapping angle [rad]. Default is 0.0.

Type:

float

number_azimuthal_stations#

Number of azimuthal calculation points. Default is 16.

Type:

int

vtk_airfoil_points#

Number of points for VTK airfoil visualization. Default is 40.

Type:

int

Airfoils#

Container for blade airfoil definitions. Default is empty container.

Type:

Airfoil_Container

airfoil_polar_stations#

Radial stations for airfoil polars. Default is None.

Type:

ndarray

induced_power_factor#

Factor accounting for non-ideal induced power. Default is 1.48.

Type:

float

profile_drag_coefficient#

Mean blade profile drag coefficient. Default is 0.03.

Type:

float

clockwise_rotation#

Direction of rotation. Default is True.

Type:

bool

phase_offset_angle#

Initial blade phase angle [rad]. Default is 0.0.

Type:

float

orientation_euler_angles#

Angles defining rotor orientation [rad]. Default is [0.,0.,0.].

Type:

list

blade_pitch_command#

Commanded blade pitch angle [rad]. Default is 0.0.

Type:

float

ducted#

Flag for ducted rotor configuration. Default is False.

Type:

bool

sol_tolerance#

Solution convergence tolerance. Default is 1e-8.

Type:

float

use_2d_analysis#

Flag for 2D aerodynamic analysis. Default is False.

Type:

bool

nonuniform_freestream#

Flag for nonuniform inflow conditions. Default is False.

Type:

bool

Notes

The Rotor class provides a comprehensive framework for modeling rotary propulsion devices including:

  • Geometric definition of rotor and blades

  • Aerodynamic performance calculation

  • Wake modeling capabilities

  • Blade element analysis

  • Performance optimization

  • Acoustic analysis

Major Assumptions
  • Rigid blade structure

  • Quasi-steady aerodynamics

  • Small angle approximations for flapping

  • Linear blade twist and taper

  • Uniform inflow (unless nonuniform_freestream is True)

Theory

The rotor model combines:
  • Blade Element Momentum Theory

  • Prescribed/Free Wake Analysis

  • Acoustic Propagation Models

  • Performance Optimization Methods

Definitions

‘Blade Solidity’

Ratio of total blade area to rotor disk area

‘Induced Power Factor’

Correction for non-ideal induced power effects

‘Phase Offset’

Initial azimuthal position of reference blade

append_operating_conditions(segment, energy_conditions, noise_conditions=None)[source]#
append_airfoil(airfoil)[source]#

Adds an airfoil to the segment

Assumptions: None

Source: N/A

Inputs: None

Outputs: None

Properties Used: N/A

vec_to_vel()[source]#

Rotates from the rotor’s vehicle frame to the rotor’s velocity frame.

Returns:

rot_mat – 3x3 rotation matrix transforming from vehicle frame to velocity frame.

Return type:

ndarray

Notes

This method creates a rotation matrix for transforming coordinates between two reference frames of the rotor. When rotor is axially aligned with the vehicle body.

Velocity frame:

  • X-axis points out the nose

  • Z-axis points towards the ground

  • Y-axis points out the right wing

Vehicle frame:

  • X-axis points towards the tail

  • Z-axis points towards the ceiling

  • Y-axis points out the right wing

Major Assumptions

  • The rotor’s default orientation is aligned with the vehicle body

  • Right-handed coordinate system is used

  • Small angle approximations are not used

  • Rotation sequence is fixed

body_to_prop_vel(commanded_thrust_vector)[source]#

Rotates from the system’s body frame to the rotor’s velocity frame.

Parameters:

commanded_thrust_vector (ndarray) – Vector of commanded thrust angles [rad] for each time step.

Returns:

  • rot_mat (ndarray) – 3x3 rotation matrix transforming from body frame to rotor velocity frame.

  • rots (ndarray) – Array of rotation vectors including commanded thrust angles and orientation.

Notes

This method performs a sequence of rotations to transform coordinates from the vehicle body frame to the rotor’s velocity frame. The transformation sequence is:

  1. Body to vehicle frame (π rotation about Y-axis)

  2. Vehicle to rotor vehicle frame (includes thrust vector and orientation)

  3. Rotor vehicle to rotor velocity frame

Theory The complete transformation is computed as: .. math:

R_{total} = (R_{body2vehicle} R_{vehicle2rotor}) R_{rotor2vel}

Where:

  • R_{body2vehicle} is a π rotation about Y-axis

  • R_{vehicle2rotor} includes orientation_euler_angles and thrust command

  • R_{rotor2vel} is from vec_to_vel()

Velocity frame:

  • X-axis points out the nose

  • Z-axis points towards the ground

  • Y-axis points out the right wing

Vehicle frame:

  • X-axis points towards the tail

  • Z-axis points towards the ceiling

  • Y-axis points out the right wing

Major Assumptions

  • The rotor’s default orientation is defined by orientation_euler_angles

  • Right-handed coordinate system is used

  • Thrust vector rotation is applied about the Y-axis

  • Matrix multiplication order preserves proper transformation sequence

  • Euler angle sequence is fixed

prop_vel_to_body(commanded_thrust_vector)[source]#

Rotates from the rotor’s velocity frame to the system’s body frame.

Parameters:

commanded_thrust_vector (ndarray) – Vector of commanded thrust angles [rad] for each time step.

Returns:

  • rot_mat (ndarray) – 3x3 rotation matrix transforming from rotor velocity frame to body frame.

  • rots (ndarray) – Array of rotation vectors including commanded thrust angles and orientation.

Notes

This method performs the inverse transformation sequence of body_to_prop_vel. The transformation sequence is:

  1. Rotor velocity to rotor vehicle frame

  2. Rotor vehicle to vehicle frame (includes thrust vector and orientation)

  3. Vehicle to body frame (π rotation about Y-axis)

Theory The complete transformation is computed as: .. math:

R_{total} = (R_{body2propvel})^{-1}

Velocity frame:

  • X-axis points out the nose

  • Z-axis points towards the ground

  • Y-axis points out the right wing

Vehicle frame:

  • X-axis points towards the tail

  • Z-axis points towards the ceiling

  • Y-axis points out the right wing

Major Assumptions

  • The rotor’s default orientation is defined by orientation_euler_angles

  • Right-handed coordinate system is used

  • Thrust vector rotation is applied about the Y-axis

  • Rotation matrices are orthogonal (inverse = transpose)

  • Euler angle sequence is fixed

vec_to_prop_body(commanded_thrust_vector)[source]#
class Airfoil_Container(*args, **kwarg)[source]#

Bases: Container

Container for rotor airfoil

Assumptions: None

Source: N/A

Inputs: None

Outputs: None

Properties Used: N/A

get_children()[source]#

Returns the components that can go inside

Assumptions: None

Source: N/A

Inputs: None

Outputs: None

Properties Used: N/A