-
Notifications
You must be signed in to change notification settings - Fork 1
Program Structure
The Halo Trajectory Design and Continuation Tool has been implemented in an object orientated way. As seen in the class diagram, there are three main files.
Orbit.py
contains the Orbit class. Each Orbit has the attributes Initial State, Period, Jacobi Constant, Stability Index, Mass Ratio and Accuracy. While Jacobi Constant and the Stability Index are optional parameters, when instantiating an Object from the Class Orbit, the following parameters have to be passed:
- Initial Guess
- Fixed Value
- Mass Ratio
During the initialization of the object, the input state is analyzed according to periodicity. If necessary, a differential corrections scheme is performed to adapt the input state to the initial state of a periodic halo orbit and the attributes Initial State and Period are set.
The closest Near Rectilinear Halo Orbit (NRHO) can be found using the method getNearestNRHO(). Using the Pseudo-Arclength Continuation Method, related solutions towards the vertical Lyapunov Orbit are checked for stability. The attributes of the found NRHO are set afterwards. Methods getStability() and getJacobi() calculate the Stability Index and Jacobi Constant and update the belonging attributes. plot() plots an image of the Orbit.
OrbitFamily.py
contains the OrbitFamily class as well as the L1Family and L2Family subclasses. Each Orbit Family has the attributes Initial State, Mass Ratio, Orbit Distance and the optional parameter Family Data.
The attributes are set during the initialization of the object. Starting with the Initial State, the method getHaloFamily() uses the Natural Parameter Continuation to generate the whole family of orbits corresponding to the input state. The step size is recalculated for each orbit based on geometric relationships to reach constant distances between the orbits and thus a uniformed halo shape. getNRHOFamily() works similar, but first uses the Pseudo-Arclength Continuation to find the beginning of the boundary of NRHO's. Both methods store the initial state and period of the orbits in the array Family Data. The method plot() utilizes Family Data to plot all found solutions.
The file Utility.py
contains different classes with static methods. They include numerical techniques like the Differential Corrections Method and the 4th-order Runge Kutta Method as well as Orbit Continuation schemes like the Natural Parameter Continuation, necessary mathematical operations like the calculation of the State Transition Matrix and others as well as the possibility to plot figures.
Next page: Syntax
The Wiki and further background information can be downloaded in PDF version here.
- Orbit Types in cis-lunar Space
- Keplerian Orbits
- Low Lunar Orbit
- Elliptical Lunar Orbit
- Frozen Lunar Orbit
- Lagrangian Point Orbits
- Periodic Orbits
- Quasi-Periodic Orbits
- Keplerian Orbits
- Classification of Halo Orbits
- Halo Orbit Families
- L1 Halo Family
- L2 Halo Family
- L3 Halo Family
- Near Rectilinear Halo Orbit
- Halo Orbit Families
- Dynamical Models
- n-Body Problem
- Three Body Problem
- Circular Restricted Three Body Problem
- Assumptions
- Coordinate Systems
- Non-dimensionalization
- Equations of Motion
- Jacobi Constant
- First Order Analytical Approximations for Motion in the Vicinity of Libration Points
- Approximate Periodic Solutions
- Dynamical Systems Theory
- State Transition Matrix
- Differential Corrections
- Periodic Halo Orbit Computation
- Continuation of an Halo Orbit Family
- Natural Parameter Continuation
- Pseudo-Arclength Continuation