SUAVE  2.5.2
An Aerospace Vehicle Environment for Designing Future Aircraft
Propulsion

Description. More...

Modules

 Rotor_Wake
 Rotor_Wake provides the functions needed to perform analyses.
 

Functions

def SUAVE.Methods.Propulsion.ducted_fan_sizing.ducted_fan_sizing (ducted_fan, mach_number=None, altitude=None, delta_isa=0, conditions=None)
 
def SUAVE.Methods.Propulsion.electric_motor_sizing.size_from_kv (motor)
 
def SUAVE.Methods.Propulsion.electric_motor_sizing.size_from_mass (motor)
 
def SUAVE.Methods.Propulsion.electric_motor_sizing.size_optimal_motor (motor, prop)
 
def SUAVE.Methods.Propulsion.electric_motor_sizing.optimize_kv (io, v, omeg, etam, Q, kv_lower_bound=0.01, Res_lower_bound=0.001, kv_upper_bound=100, Res_upper_bound=10)
 
def SUAVE.Methods.Propulsion.fm_id.fm_id (M, gamma)
 fm_id.py More...
 
def SUAVE.Methods.Propulsion.fm_solver.fm_solver (area_ratio, M0, gamma)
 
def SUAVE.Methods.Propulsion.liquid_rocket_sizing.liquid_rocket_sizing (liquid_rocket, altitude=None, delta_isa=0, conditions=None)
 
def SUAVE.Methods.Propulsion.nozzle_calculations.exit_Mach_shock (area_ratio, gamma, Pt_out, P0)
 
def SUAVE.Methods.Propulsion.nozzle_calculations.mach_area (area_ratio, gamma, subsonic)
 
def SUAVE.Methods.Propulsion.nozzle_calculations.normal_shock (M1, gamma)
 
def SUAVE.Methods.Propulsion.nozzle_calculations.pressure_ratio_isentropic (area_ratio, gamma, subsonic)
 
def SUAVE.Methods.Propulsion.nozzle_calculations.pressure_ratio_shock_in_nozzle (area_ratio, gamma)
 
def SUAVE.Methods.Propulsion.ramjet_sizing.ramjet_sizing (ramjet, mach_number=None, altitude=None, delta_isa=0, conditions=None)
 
def SUAVE.Methods.Propulsion.rayleigh.rayleigh (gamma, M0, TtR)
 
def SUAVE.Methods.Propulsion.scramjet_sizing.scramjet_sizing (scramjet, mach_number=None, altitude=None, delta_isa=0, conditions=None)
 
def SUAVE.Methods.Propulsion.serial_HTS_turboelectric_sizing.serial_HTS_turboelectric_sizing (Turboelectric_HTS_Ducted_Fan, mach_number=None, altitude=None, delta_isa=0, conditions=None, cryo_cold_temp=50.0, cryo_amb_temp=300.0)
 
def SUAVE.Methods.Propulsion.shock_train.shock_train (M0, gamma, nbr_shocks, theta)
 
def SUAVE.Methods.Propulsion.turbofan_emission_index.turbofan_emission_index (turbofan, state)
 

Detailed Description

Description.

Function Documentation

◆ ducted_fan_sizing()

def SUAVE.Methods.Propulsion.ducted_fan_sizing.ducted_fan_sizing (   ducted_fan,
  mach_number = None,
  altitude = None,
  delta_isa = 0,
  conditions = None 
)
creates and evaluates a ducted_fan network based on an atmospheric sizing condition

Inputs:
ducted_fan       ducted fan network object (to be modified)
mach_number
altitude         [meters]
delta_isa        temperature difference [K]
conditions       ordered dict object

◆ exit_Mach_shock()

def SUAVE.Methods.Propulsion.nozzle_calculations.exit_Mach_shock (   area_ratio,
  gamma,
  Pt_out,
  P0 
)
Determines the output Mach number of a nozzle with a normal shock taking
place inside of it, through pressure ratio between the nozzle stagnation
pressure and the freestream pressure

Assumptions:
Unknown

Source:
Unknown

Inputs:
area_ratio    [dimensionless]
gamma         [dimensionless]
Pt_out        [Pascals]
P0            [Pascals]

Outputs:
Me            [dimensionless]      

◆ fm_id()

def SUAVE.Methods.Propulsion.fm_id.fm_id (   M,
  gamma 
)

fm_id.py

Created: ### ####, SUAVE Team Modified: Feb 2016, E. Botero Dec 2017, W. Maier

Function that takes in the Mach number and isentropic expansion factor,
and outputs a value for f(M) that's commonly used in compressible flow
calculations.

Inputs:
M       [-]
gamma   [-]

Outputs:
fm      [-]

Spurce:
https://web.stanford.edu/~cantwell/AA210A_Course_Material/AA210A_Course_Notes/

◆ fm_solver()

def SUAVE.Methods.Propulsion.fm_solver.fm_solver (   area_ratio,
  M0,
  gamma 
)
Function that takes in an area ratio and a Mach number associated to
one of the areas and outputs the missing Mach number.

Inputs:
M           [-]
gamma       [-]
area_ratio  [-]

Outputs:
M1          [-]

Source:
https://web.stanford.edu/~cantwell/AA210A_Course_Material/AA210A_Course_Notes/

◆ liquid_rocket_sizing()

def SUAVE.Methods.Propulsion.liquid_rocket_sizing.liquid_rocket_sizing (   liquid_rocket,
  altitude = None,
  delta_isa = 0,
  conditions = None 
)
This function sizes a liquid_rocket for the input design conditions.

◆ mach_area()

def SUAVE.Methods.Propulsion.nozzle_calculations.mach_area (   area_ratio,
  gamma,
  subsonic 
)
Returns the Mach number given an area ratio and isentropic conditions

Assumptions:
Unknown

Source:
Unknown

Inputs:
area_ratio    [dimensionless]
gamma         [dimensionless]
subsonic      [Boolean]

Outputs:
Me            [dimensionless]  

◆ normal_shock()

def SUAVE.Methods.Propulsion.nozzle_calculations.normal_shock (   M1,
  gamma 
)
Returns the Mach number after normal shock

Assumptions:
Unknown

Source:
Unknown

Inputs:
M1            [dimensionless]
gamma         [dimensionless]

Outputs:
M2            [dimensionless]      

◆ optimize_kv()

def SUAVE.Methods.Propulsion.electric_motor_sizing.optimize_kv (   io,
  v,
  omeg,
  etam,
  Q,
  kv_lower_bound = 0.01,
  Res_lower_bound = 0.001,
  kv_upper_bound = 100,
  Res_upper_bound = 10 
)
Optimizer for compute_optimal_motor_parameters function  

Source:
N/A

Inputs:
motor    (to be modified)

Outputs:
motor.
  speed_constant     [untiless]
  no_load_current    [amps]

◆ pressure_ratio_isentropic()

def SUAVE.Methods.Propulsion.nozzle_calculations.pressure_ratio_isentropic (   area_ratio,
  gamma,
  subsonic 
)
Determines the pressure ratio for isentropic flow throughout the entire
nozzle

Assumptions:
Unknown

Source:
Unknown

Inputs:
area_ratio    [dimensionless]
gamma         [dimensionless]
subsonic      [Boolean]

Outputs:
pr_isentropic [dimensionless]      

◆ pressure_ratio_shock_in_nozzle()

def SUAVE.Methods.Propulsion.nozzle_calculations.pressure_ratio_shock_in_nozzle (   area_ratio,
  gamma 
)
Determines the lower value of pressure ratio responsible for a 
normal shock taking place inside the nozzle

Assumptions:
yields maximium pressure ratio where shock takes place inside the nozzle, given area ratio

Source:
Unknown

Inputs:
area_ratio         [dimensionless]
gamma              [dimensionless]

Outputs:
pr_shock_in_nozzle [dimensionless]    

◆ ramjet_sizing()

def SUAVE.Methods.Propulsion.ramjet_sizing.ramjet_sizing (   ramjet,
  mach_number = None,
  altitude = None,
  delta_isa = 0,
  conditions = None 
)
This function sizes a ramjet for the input design conditions.

◆ rayleigh()

def SUAVE.Methods.Propulsion.rayleigh.rayleigh (   gamma,
  M0,
  TtR 
)
Function that takes in a input (output) Mach number and a stagnation 
temperature ratio and yields an output (input) Mach number, according
to the Rayleigh flow equation. The function also outputs the stagnation
pressure ratio

Inputs:
M       [dimensionless]
gamma   [dimensionless]
Ttr     [dimensionless]

Outputs:
M1      [dimensionless]
Ptr     [dimensionless]

◆ scramjet_sizing()

def SUAVE.Methods.Propulsion.scramjet_sizing.scramjet_sizing (   scramjet,
  mach_number = None,
  altitude = None,
  delta_isa = 0,
  conditions = None 
)
This function sizes a scramjet for the input design conditions.

◆ serial_HTS_turboelectric_sizing()

def SUAVE.Methods.Propulsion.serial_HTS_turboelectric_sizing.serial_HTS_turboelectric_sizing (   Turboelectric_HTS_Ducted_Fan,
  mach_number = None,
  altitude = None,
  delta_isa = 0,
  conditions = None,
  cryo_cold_temp = 50.0,
  cryo_amb_temp = 300.0 
)
create and evaluate a serial hybrid network that follows the power flow:
Turboelectric Generators -> Motor Drivers -> Electric Poropulsion Motors
where the electric motors have cryogenically cooled HTS rotors that follow the power flow:
Turboelectric Generators -> Current Supplies -> HTS Rotor Coils
and
Turboelectric Generators -> Cryocooler <- HTS Rotor Heat Load
There is also the capability for the HTS components to be cryogenically cooled using liquid or gaseous cryogen, howver this is not sized other than applying a factor to the cryocooler required power.

    Assumptions:
    One powertrain model represents all engines in the model.
    There are no transmission losses between components
    the shaft torque and power required from the fan is the same as what would be required from the fan of a turbofan engine.

    Source:
    N/A

    Inputs:
    Turboelectric_HTS_Ducted_Fan    Serial HTYS hybrid ducted fan network object (to be modified)
    mach_number
    altitude                        [meters]
    delta_isa                       temperature difference [K]
    conditions                      ordered dict object

    Outputs:
    N/A

    Properties Used:
    N/A

◆ shock_train()

def SUAVE.Methods.Propulsion.shock_train.shock_train (   M0,
  gamma,
  nbr_shocks,
  theta 
)
Function that takes in Mach,gamma, number of expected oblique , and 
wedge angle of inlet and calculates the flow properties after under going said
oblique shicks.  It verifies if all oblique shocks actually take place, depending
on inlet condition.

Assumptions:
No shock interactions

Inputs:
M           [-]
gamma       [-]
nbr_shocks  [-]
theta       [rad]

Outputs:
Tr          [-]
Ptr         [-]

Source:
https://web.stanford.edu/~cantwell/AA210A_Course_Material/AA210A_Course_Notes/

◆ size_from_kv()

def SUAVE.Methods.Propulsion.electric_motor_sizing.size_from_kv (   motor)
Determines a motors mass based on the speed constant KV

Source:
Gur, O., Rosen, A, AIAA 2008-5916.

Inputs:
motor    (to be modified)
  kv       motor speed constant

Outputs:
motor.
  resistance         [ohms]
  no_load_current    [amps]
  mass               [kg]

◆ size_from_mass()

def SUAVE.Methods.Propulsion.electric_motor_sizing.size_from_mass (   motor)
Sizes motor from mass

Source:
Gur, O., Rosen, A, AIAA 2008-5916.

Inputs:
motor.    (to be modified)
  mass               [kg]

Outputs:
motor.
  resistance         [ohms]
  no_load_current    [amps] 

◆ size_optimal_motor()

def SUAVE.Methods.Propulsion.electric_motor_sizing.size_optimal_motor (   motor,
  prop 
)
Optimizes the motor to obtain the best combination of speed constant and resistance values
by essentially sizing the motor for a design RPM value. Note that this design RPM 
value can be compute from design tip mach  

Assumptions:
motor design performance occurs at 90% nominal voltage to account for off design conditions 

Source:
N/A

Inputs:
prop.
  design_torque          [Nm]
  angular_velocity       [rad/s]
  origin                 [m]
  
motor.     
  no_load_current        [amps]
  mass_properties.mass   [kg]
  
Outputs:
motor.
  speed_constant         [untiless]
  design_torque          [Nm] 
  motor.resistance       [Ohms]
  motor.angular_velocity [rad/s]
  motor.origin           [m]

◆ turbofan_emission_index()

def SUAVE.Methods.Propulsion.turbofan_emission_index.turbofan_emission_index (   turbofan,
  state 
)
Outputs a turbofan's emission_index takens from a regression calculated
from NASA's Engine Performance Program (NEPP)

Inputs:
turbofan.
  combustor.
    inputs.
      stagnation_pressure     [Pa]
      stagnation_temperature  [K]
    outputs.
      stagnation_temperature  [K]
      
Outputs:      
emission.
      total.
            NOx               [kg]
            CO2               [kg]
            H2O               [kg]
            SO2               [kg]
      index.
            NOx               [kg/kg]
            CO2               [kg/kg]
            H2O               [kg/kg]
            SO2               [kg/kg]

Source: Antoine, Nicholas, Aircraft Optimization for Minimal Environmental Impact, pp. 31 (PhD Thesis)