hyperloop.Python.pod.drivetrain package

Subpackages

Submodules

hyperloop.Python.pod.drivetrain.battery module

class hyperloop.Python.pod.drivetrain.battery.Battery[source]

Bases: openmdao.core.component.Component

The Battery class represents a battery component in an OpenMDAO model.

A Battery models battery performance by finding a general battery voltage performance curve ([R5], [R6]) based on standard cell properties and can be used to determine the number of cells and cell configuration needed to meet specification.

Params:

des_time : float

time until design power point (h)

time_of_flight : float

total mission time (h)

battery_cross_section_area : float

cross_sectional area of battery used to compute length (cm^2)

des_power : float

design power (W)

des_current : float

design current (A)

q_l : float

discharge limit (unitless)

e_full : float

fully charged voltage (V)

e_nom : float

voltage at end of nominal voltage (V)

e_exp : float

voltage at end of exponential zone (V)

q_n : float

single cell capacity (A*h)

t_exp : float

time to reach exponential zone (h)

t_nom : float

time to reach nominal zone (h)

r : float

resistance of individual battery cell (Ohms)

cell_mass : float

mass of a single cell (g)

cell_height : float

height of a single cylindrical cell (mm)

cell_diameter : float

diamter of a single cylindrical cell (mm)

Outputs:

n_cells : float

total number battery cells (unitless)

battery_length : float

length of battery (cm)

output_voltage : float

output voltage of battery configuration (V)

battery_mass : float

total mass of cells in battery configuration (kg)

battery_volume : float

total volume of cells in battery configuration (cm^3)

battery_cost : float

total cost of battery cells in (USD)

Notes

Battery cost based on purchase of 1000 bateries from ecia ([R7]) price listing

References

[R5](1, 2) Gladin, Ali, Collins, “Conceptual Modeling of Electric and Hybrid-Electric Propulsion for UAS Applications” Georgia Tech, 2015
[R6](1, 2)
    1. Mavris, “Subsonic Ultra Green Aircraft Research - Phase II,” NASA Langley Research Center, 2014
[R7](1, 2) eciaauthorized.com/search/HHR650D
solve_nonlinear(params, unknowns, resids)[source]

Runs the Battery component and sets its respective outputs to their calculated results

Args:

params : VecWrapper

VecWrapper containing parameters

unknowns : VecWrapper

VecWrapper containing outputs and states

resids : VecWrapper

VecWrapper containing residuals

hyperloop.Python.pod.drivetrain.drivetrain module

class hyperloop.Python.pod.drivetrain.drivetrain.Drivetrain[source]

Bases: openmdao.core.group.Group

The Drivetrain group represents a Group of an electric motor, inverter and battery in an OpenMDAO model.

Models the performance and behavior of a combined electric motor, battery, and inverter following previous work from [R8]

Params:

design_torque : float

design torque at max rpm (N*m)

design_power : float

desired design value for motor power (W)

motor_max_current : float

max motor phase current (A)

motor_LD_ratio : float

length to diameter ratio of motor (unitless)

motor_oversize_factor : float

scales peak motor power by this figure

inverter_efficiency : float

power out / power in (W)

des_time : float

time until design power point (h)

time_of_flight : float

total mission time (h)

battery_cross_section_area : float

cross_sectional area of battery used to compute length (cm^2)

Outputs:

battery_mass : float

total mass of cells in battery configuration (kg)

battery_volume : float

total volume of cells in battery configuration (cm^3)

battery_cost : float

total cost of battery cells in (USD)

battery_length : float

length of battery (cm)

motor_volume : float

D^2*L parameter which is proportional to Torque (mm^3)

motor_diameter : float

motor diameter (m)

motor_mass : float

mass of motor (kg)

motor_length : float

motor length (m)

motor_power_input : float

total required power input into motor (W)

Components:

Motor : ElectricMotor

Represents a BLDC electric motor

Inverter : Inverter

Represents an Inverter

Battery : Battery

Represents a Battery

References

[R8](1, 2) Gladin, Ali, Collins, “Conceptual Modeling of Electric and Hybrid-Electric Propulsion for UAS Applications” Georgia Tech, 2015

hyperloop.Python.pod.drivetrain.electric_motor module

Models the equivalent circuit model of a brushless DC (BLDC) motor to perform motor sizing. Calculates Phase Current, Phase Voltage, Frequency, motor size, and Weight.

class hyperloop.Python.pod.drivetrain.electric_motor.Motor[source]

Bases: openmdao.core.component.Component

Represents an electric motor which can calculate output current and voltage based on motor sizing parameters and losses. Used in conjunction with motor_balance to find the correct no load current for this motor

Based on work done by Gladin et. al. ([R9])

Params:

w_operating : float

operating speed of motor (rad/s)

design_torque : float

torque at max rpm (N*m)

I0 : float

motor No-load Current (A)

motor_max_current : float

max motor phase current (A)

pole_pairs : float

number of motor pole pairs (unitless)

n_phases : float

number of motor phases (unitless)

max_torque : float

maximum possible torque for motor (N*m)

power_iron_loss : float

total power loss due to iron core (W)

power_mech : float

mechanical power output of motor (W)

power_windage_loss : float

friction loss from motor operation (W)

winding_resistance : float

total resistance of copper winding (ohm)

Outputs:

current : float

current through motor (A)

voltage : float

voltage across motor (V)

phase_current : float

phase current through motor (A)

phase_voltage : float

phase voltage across motor (V)

frequency : float

Frequency of electric output waveform (Hz)

motor_power_input : float

total required power input into motor (W)

References

[R9](1, 2) “J. Gladin, K. Ali, K. Collins, “Conceptual Modeling of Electric and Hybrid-Electric Propulsion for UAS Applications,” Georgia Tech, 2015.
solve_nonlinear(params, unknowns, resids)[source]
class hyperloop.Python.pod.drivetrain.electric_motor.MotorBalance[source]

Bases: openmdao.core.component.Component

Creates an implicit connection used to balance conservation of energy across the motor by computing the residual of power_in - power_out.

Params:

motor_power_input : float

total required power input into motor (W)

current : float

current through motor (A)

voltage : float

voltage across motor (V)

Unknowns:

I0 : float

motor No-load Current (A)

apply_nonlinear(params, unknowns, resids)[source]
solve_nonlinear(params, unknowns, resids)[source]
class hyperloop.Python.pod.drivetrain.electric_motor.MotorGroup[source]

Bases: openmdao.core.group.Group

MotorGroup represents a BLDC motor in an OpenMDAO model which can calculate size, mass, and various performance characteristics of a BLDC motor based on input paramters

Params:

design_power : float

desired design value for motor power (W)

design_torque : float

desired torque at max rpm (N*m)

motor_max_current : float

max motor phase current (A)

motor_LD_ratio : float

length to diameter ratio of motor (unitless)

motor_oversize_factor : float

scales peak motor power by this figure (unitless)

Outputs:

current : float

current through motor (A)

voltage : float

voltage across motor in (V)

phase_current : float

phase current through motor (A)

phase_voltage : float

phase voltage across motor (V)

frequency : float

Frequency of electric output waveform (Hz)

motor_power_input : float

total required power input into motor (W)

motor_volume : float

D^2*L parameter which is proportional to Torque (mm^3)

motor_diameter : float

diameter of motor (m)

motor_mass : float

mass of motor (kg)

motor_length : float

motor length (m)

motor_power_input : float

total required power input into motor (W)

Components:

motor : Motor

Calculates the electrical characteristics of the motor

motor_size : MotorSize

Calculates the size, mass, and performance characteristics of the motor

motor_balance : MotorBalance

Calculates the residual in the conservation of energy equation between input power and total power used by the motor from mechanical output and additional losses

class hyperloop.Python.pod.drivetrain.electric_motor.MotorSize[source]

Bases: openmdao.core.component.Component

MotorSize models the size of a BLDC motor based on a set of input paramters using data from existing commerical BLDC motors and work done by ([R10])

Outputs:

motor_volume : float

D^2*L parameter which is proportional to Torque (mm^3)

motor_diameter : float

diameter of motor winding (m)

motor_mass :float

mass of motor (kg)

motor_length : float

length of motor (m)

w_base : float

base speed of motor (rad/s)

max_torque : float

maximum possible torque for motor (N*m)

power_iron_loss : float

total power loss due to iron core (W)

power_mech : float

mechanical power output of motor (W)

power_windage_loss : float

friction loss from motor operation (W)

winding_resistance : float

total resistance of copper winding (ohm)

w_operating : float

operating speed of motor (rad/s)

References

[R10](1, 2) “J. Gladin, K. Ali, K. Collins, “Conceptual Modeling of Electric and Hybrid-Electric Propulsion for UAS Applications,” Georgia Tech, 2015.
calculate_copper_loss(motor_diameter, motor_max_current, n_phases)[source]

Calculates the resistive losses in the copper winding of a BLDC motor operating at motor_max_current and n_phases with dimension specified by motor_diameter.

Returns:

float

the total resistive losses of the copper winding (W)

calculate_iron_loss(motor_diameter, motor_speed, motor_length, core_radius_ratio, pole_pairs)[source]

Calculates the iron core magnetic losses of a BLDC motor with dimensions given by motor_length and motor_diameter operating at speed motor_speed.

Args:

motor_diameter : float

diameter of motor winding (m)

speed : float

desired output shaft mechanical motor_speed (RPM)

motor_length : float

motor length (m)

core_radius_ratio : float

ratio of inner diameter to outer diameter of core (unitless)

Returns:

float

the total iron core losses of the motor (W)

calculate_windage_loss(w_operating, motor_diameter, motor_length)[source]

Calculates the windage or frictional losses of a BLDC motor with dimensions given by motor_length and motor_diameter operating at motor_speed w_operating.

Args:

w_operating : float

operating speed of motor (rad/s)

motor_diameter : float

diameter of motor winding (m)

motor_length : float

motor length (m)

Returns:

float

the total windage losses of the motor (W)

solve_nonlinear(params, unknowns, resids)[source]

Runs the MotorSize component and sets its respective outputs to their calculated results in the unknowns VecWrapper.

Args:

params : VecWrapper

VecWrapper containing parameters

unknowns : VecWrapper

VecWrapper containing outputs and states

resids : VecWrapper

VecWrapper containing residuals

hyperloop.Python.pod.drivetrain.inverter module

class hyperloop.Python.pod.drivetrain.inverter.Inverter[source]

Bases: openmdao.core.component.Component

The Inverter class represents a BLDC inverter in an OpenMDAO model

The Inverter class models the efficiency loss across a typical BLDC inverter following the example from [R11].

Params:

inverter_efficiency : float

power out / power in (W)

output_voltage : float

amplitude of AC output voltage (A)

output_current : float

amplitude of AC output current (A)

output_frequency : float

frequency of AC output (Hz)

input_voltage : float

amplitude of DC input voltage (V)

Outputs:

input_current : float

amplitude of DC input current (A)

input_power : float

amplitude of DC input current (W)

References

[R11](1, 2) Gladin, Ali, Collins, “Conceptual Modeling of Electric and Hybrid-Electric Propulsion for UAS Applications” Georgia Tech, 2015
solve_nonlinear(params, unknowns, resids)[source]

Runs the Battery component and sets its respective outputs to their calculated results

Args:

params : VecWrapper

VecWrapper containing parameters

unknowns : VecWrapper

VecWrapper containing outputs and states

resids : VecWrapper

VecWrapper containing residuals

output_power = params[‘output_voltage’] * params[

‘output_current’] * 3.0 * np.sqrt(2.0 / 3.0)

Module contents