Source code for RCAIDE.Library.Methods.Mass_Properties.Moment_of_Inertia.mass_and_intertia_functions

# RCAIDE/Methods/Stability/Common/mass_and_intertia_functions.py 
# 
# Created:  Jul 2023, M. Clarke 

# ----------------------------------------------------------------------------------------------------------------------
#  IMPORT
# ---------------------------------------------------------------------------------------------------------------------- 

# RCAIDE imports   
from RCAIDE.Library.Components         import Component  

# package imports 
import numpy as np

# ----------------------------------------------------------------------------------------------------------------------
#  Recursive Moment
# ----------------------------------------------------------------------------------------------------------------------   
[docs] def sum_moment(component): """ Recursively sums up the moment of all compoments and subcomponents Assumptions: None Source: N/A Inputs: compoment Outputs: total_moment total_mass """ total_moment = np.array([[0.0,0.0,0.0]]) total_mass = 0 for key,Comp in component.items(): if isinstance(Comp,Component.Container): Moment, Mass = sum_moment(Comp) total_moment += Moment total_mass += Mass elif isinstance(Comp,Component): global_cg_loc = np.array(Comp.mass_properties.center_of_gravity) + np.array(Comp.origin) if global_cg_loc[0][0] == 0: pass else: total_moment += Comp.mass_properties.mass*global_cg_loc total_mass += Comp.mass_properties.mass return total_moment , total_mass
# ---------------------------------------------------------------------------------------------------------------------- # Recursive Moment of Intertia # ----------------------------------------------------------------------------------------------------------------------
[docs] def sum_moment_of_inertia(component, vehicle_center_of_gravity = None): """ Recursively sums up the moment of intertia of all compoments and subcomponents Assumptions: None Source: N/A Inputs: compoment vehicle_center_of_gravity Outputs: total_I """ total_I = np.array([[0.0,0.0,0.0]]) for key,Comp in component.items(): if isinstance(Comp,Component.Container): total_I += sum_moment_of_inertia(Comp,vehicle_center_of_gravity ) elif isinstance(Comp,Component): global_cg_loc = Comp.mass_properties.center_of_gravity + Comp.origin total_I += Comp.mass_properties.moments_of_inertia.center + Comp.mass_properties.mass*((vehicle_center_of_gravity - global_cg_loc)**2) return total_I