Source code for RCAIDE.Library.Mission.Common.Update.ground_forces
# RCAIDE/Library/Missions/Common/Update/ground_forces.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
# RCAIDE
from RCAIDE.Framework.Core import orientation_product
from RCAIDE.Library.Mission.Common.Update.forces import forces
# ----------------------------------------------------------------------------------------------------------------------
# Compute Ground Forces
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def ground_forces(segment):
""" Compute the rolling friction on the aircraft
Assumptions:
Does a force balance to calculate the load on the wheels using only lift. Uses only a single friction coefficient.
Source:
N/A
Inputs:
conditions:
frames.inertial.gravity_force_vector [meters/second^2]
ground.friction_coefficient [unitless]
frames.wind.force_vector [newtons]
Outputs:
conditions.frames.inertial.ground_force_vector [newtons]
Properties Used:
N/A
"""
# unpack
conditions = segment.state.conditions
W = conditions.frames.inertial.gravity_force_vector[:,2,None]
friction_coeff = conditions.ground.friction_coefficient
wind_force_vector = conditions.frames.wind.force_vector
#transformation matrix to get lift in inertial frame
T_wind2inertial = conditions.frames.wind.transform_to_inertial
# to inertial frame
L = orientation_product(T_wind2inertial,wind_force_vector)[:,2,None]
#compute friction force
N = -(W + L)
Ff = N * friction_coeff
#pack results. Friction acts along x-direction
conditions.frames.inertial.ground_force_vector[:,2] = N[:,0]
conditions.frames.inertial.ground_force_vector[:,0] = Ff[:,0]
forces(segment)
# unpack forces
conditions = segment.state.conditions
total_aero_forces = conditions.frames.inertial.total_force_vector
inertial_ground_force_vector = conditions.frames.inertial.ground_force_vector
# sum of the forces, including friction force
F = total_aero_forces + inertial_ground_force_vector
# pack
conditions.frames.inertial.total_force_vector[:,:] = F[:,:]