Skip to content

Investigation of CR3BP model. Implementation of vaious algorithms and numerical linear algebra. Production quality code.

License

Notifications You must be signed in to change notification settings

DhruvJ22/Astrodynamics_Research

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Astrodynamics Research

This repository contains a few highlights of the astrodynamics research that I conducted during my master's at Purdue University between 2021 and 2023 as a member of the Multi-Body Dynamics Research Group. My research primarily focused on innovating frameworks to design transfer trajectories in a multi-body regime between periodic orbits by leveraging quasi-periodic orbits. The programs in this repository model the behavior of a small body in a three-body environment by employing the Circular Restricted Three Body Problem (CR3BP) equations of motion and are capable of computing periodic dynamical structures in the system.

Purpose

The codebase can be leveraged to simulate the behavior of a small body in a multi-body regime to better understand the general dynamical flows as well as periodic orbits in CR3BP. After multiple refactoring sessions, I have converted the initial code that I wrote using "Design after the fact" to be closer to "Design for contribution".

This repo serves as an example of my experience with the implementation of numerical methods, numerical optimization, numerical linear algebra, production quality coding, and software design principles.

Setup

The codebase is structured smartly to exploit the principles of Object Oriented Programming in the below manner: Dhruv Jain CR3BP dynamics

Production quality software design practices were used to design the programs. A list of some of the principles exploited to make the code reliable:

  1. Structural Patterns
  2. Clear naming convention
  3. Elaborate comments
  4. Single purpose functions
  5. Avoided cryptic nesting
  6. Functions with similar argument structure
  7. Single Inheritance and Encapsulation
  8. Modular structure - will enable smooth inclusion of Multiple shooter algorithm

The work heavily relies on the following libraries: NumPy, SciPy, Plotly and Matplotlib.

Examples

The CR3BP model, which is a Hamiltonian dynamical model, commonly possesses 3 types of particular solutions: equilibrium solutions, periodic solutions, and quasi-periodic solutions. In addition, these solutions exist as families of solutions.

The current set of programs can compute:

  • Equilibrium solutions (Libration Points) of CR3BP
  • Periodic solutions (Periodic Orbits) and their families in CR3BP

Additionally, the CR3BP model possesses two distinct symmetries, and they are leveraged in the codebase to reduce the computational complexity of constructing periodic orbits. The following orbit families exploit the distinct symmetries of the model, and showcase the features of the programs:

  1. Halo family orbits are governed by XZ plane symmetry. Below is an example of a halo orbit family in the Earth-Moon system around L3 Lagrange point. Some of the members were computed using natural parameter continuation in 'z' using XZ plane symmetry with line search for step size. Other members were computed using pseudo-arc length continuation using XZ plane symmetry with line search for step size.

EM_L3_halo

  1. Axial family orbits are governed by X-axis symmetry. Below is an example of an axial family in the Earth-Moon system around L4 Lagrange point. Some of the members were computed using natural parameter continuation in 'z' by targeting periodicity with line search for step size. Other members were computed using pseudo-arc length continuation by targeting periodicity with phase constraint and line search for step size.

EM_L4_axial

  1. Vertical family orbits are governed by XZ plane and X-axis symmetry. Below is an example of a vertical family in the Earth-Moon system around L2 Lagrange point. Some of the members were computed using natural parameter continuation in 'x' by targeting XZ plane symmetry with line search for step size. Some of the other members were computed using natural parameter continuation in 'x' by targeting periodicity with line search for step size. The rest of the members were computed using natural parameter continuation in 'jc' by targeting XZ plane symmetry with line search for step size.

EM_L2_vertical

The repo consists of multiple other examples to showcase the robustness of the setup and its ability to compute periodic orbits around other Lagrange points and other types of periodic orbits like Lyapunov orbits and short-period orbits.

References

Software design principles:

  1. Gamma, E., Helm, R., & Johnson, R. (1998). Design patterns elements of Reusable Object Oriented Software. Addison Wesley.
  2. Wilson, G. (2022). Twelve quick tips for software design. PLOS Computational Biology, 18(2). https://doi.org/10.1371/journal.pcbi.1009809
  3. Silen, P. (2020, March 11). Useful tips for naming your variables. Medium. Retrieved March 21, 2022, from https://betterprogramming.pub/useful-tips-for-naming-your-variables-8139cc8d44b5
  4. Patrick J Mineault & The Good Research Code Handbook Community (2021). The Good Research Code Handbook. Zenodo. doi:10.5281/zenodo.5796873

About

Investigation of CR3BP model. Implementation of vaious algorithms and numerical linear algebra. Production quality code.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published