Source code for RCAIDE.Library.Mission.Common.Update.linear_inertial_horizontal_position
# RCAIDE/Library/Missions/Common/Update/linear_inertial_horizontal_position.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
# Package imports
import numpy as np
# ----------------------------------------------------------------------------------------------------------------------
# Integrate Position
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def linear_inertial_horizontal_position(segment):
""" Determines how far the airplane has traveled.
Assumptions:
Assumes a flat earth, this is planar motion.
Inputs:
segment.state.conditions:
frames.inertial.position_vector [meters]
frames.inertial.velocity_vector [meters/second]
segment.state.numerics.time.integrate [float]
Outputs:
segment.state.conditions:
frames.inertial.position_vector [meters]
Properties Used:
N/A
"""
conditions = segment.state.conditions
psi = segment.true_course # sign convetion is clockwise positive
cpts = int(segment.state.numerics.number_of_control_points)
x0 = conditions.frames.inertial.position_vector[0,None,0:1+1]
R0 = conditions.frames.inertial.aircraft_range[0,None,0:1+1]
vx = conditions.frames.inertial.velocity_vector[:,0:1+1]
I = segment.state.numerics.time.integrate
trajectory = np.repeat( np.atleast_2d(np.array([np.cos(psi),np.sin(psi)])),cpts , axis = 0)
# integrate
x = np.dot(I,vx)
x[:,1] = x[:,0]
# pack
conditions.frames.inertial.position_vector[:,0:1+1] = x0 + x[:,:]*trajectory
conditions.frames.inertial.aircraft_range[:,0] = R0 + x[:,0]
return