Source code for RCAIDE.Library.Mission.Common.Update.forces

# RCAIDE/Library/Missions/Common/Update/forces.py
# 
# 
# Created:  Jul 2023, M. Clarke

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

# RCAIDE imports
import  RCAIDE
from RCAIDE.Framework.Core  import  orientation_product
import  numpy as  np 

# ----------------------------------------------------------------------------------------------------------------------
#  Update Forces
# ----------------------------------------------------------------------------------------------------------------------
[docs] def forces(segment): """ Updates the total resultant force on the vehicle Assumptions: N/A Inputs: segment.state.conditions.: frames.wind.force_vector [N] frames.body.thrust_force_vector [N] frames.inertial.gravity_force_vector [N] Outputs: segment.conditions frames.inertial.total_force_vector [N] Properties Used: N/A """ # unpack conditions = segment.state.conditions wind_force_vector = conditions.frames.wind.force_vector body_thrust_force_vector = conditions.frames.body.thrust_force_vector inertial_gravity_force_vector = conditions.frames.inertial.gravity_force_vector # unpack transformation matrices T_body2inertial = conditions.frames.body.transform_to_inertial T_wind2inertial = conditions.frames.wind.transform_to_inertial # to inertial frame F = orientation_product(T_wind2inertial,wind_force_vector) T = orientation_product(T_body2inertial,body_thrust_force_vector) if type(segment) == RCAIDE.Framework.Mission.Segments.Vertical_Flight.Climb: F = np.zeros_like(T) elif type(segment) == RCAIDE.Framework.Mission.Segments.Vertical_Flight.Hover: F = np.zeros_like(T) elif type(segment) == RCAIDE.Framework.Mission.Segments.Vertical_Flight.Descent: F = np.zeros_like(T) W = inertial_gravity_force_vector # sum of the forces F_tot = F + T + W # pack conditions.frames.inertial.total_force_vector[:,:] = F_tot[:,:] return