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.ComponentThe 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) - 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.GroupThe 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.ComponentRepresents 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.
-
class
hyperloop.Python.pod.drivetrain.electric_motor.MotorBalance[source]¶ Bases:
openmdao.core.component.ComponentCreates 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)
-
class
hyperloop.Python.pod.drivetrain.electric_motor.MotorGroup[source]¶ Bases:
openmdao.core.group.GroupMotorGroup 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.ComponentMotorSize 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.ComponentThe 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)
-