halo_orbit_module Module

Halo orbit routines.

References

  • D.L. Richardson, "Analytic Construction of Periodic Orbits About the Collinear Points", Celestial Mechanics 22 (1980)

Todo

Add differentially-corrected option using the STM derivatives.


Uses

  • module~~halo_orbit_module~~UsesGraph module~halo_orbit_module halo_orbit_module iso_fortran_env iso_fortran_env module~halo_orbit_module->iso_fortran_env module~crtbp_module crtbp_module module~halo_orbit_module->module~crtbp_module module~kind_module kind_module module~halo_orbit_module->module~kind_module module~numbers_module numbers_module module~halo_orbit_module->module~numbers_module module~crtbp_module->module~kind_module module~crtbp_module->module~numbers_module module~kind_module->iso_fortran_env module~numbers_module->module~kind_module

Used by

  • module~~halo_orbit_module~~UsedByGraph module~halo_orbit_module halo_orbit_module module~fortran_astrodynamics_toolkit fortran_astrodynamics_toolkit module~fortran_astrodynamics_toolkit->module~halo_orbit_module

Subroutines

public subroutine halo_to_rv_diffcorr(libpoint, mu1, mu2, dist, A_z, n, t1, rv, info, period)

Compute the state vector for a halo orbit. This uses the approximation, which is retargeted in the real CR3BP system to produce a periodic orbit.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: libpoint

Libration point number: [1,2,3]

real(kind=wp), intent(in) :: mu1

grav param for primary body [km3/s2]

real(kind=wp), intent(in) :: mu2

grav param for secondary body [km3/s2]

real(kind=wp), intent(in) :: dist

distance between bodies [km]

real(kind=wp), intent(in) :: A_z

halo z amplitude [km]

integer, intent(in) :: n

halo family: 1, 3

real(kind=wp), intent(in) :: t1

tau1 [rad]

real(kind=wp), intent(out), dimension(6) :: rv

cr3bp normalized state vector [wrt barycenter]

integer, intent(out) :: info

status code (1=no errors)

real(kind=wp), intent(out), optional :: period

period of halo (normalized time units)

public subroutine halo_to_rv(libpoint, mu1, mu2, dist, A_z, n, t1, rv, period)

Compute the state vector from the halo orbit approximation. This will be an approximation of a halo orbit in the CR3BP system, and will need to be corrected to produce a real halo orbit.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: libpoint

Libration point number: [1,2,3]

real(kind=wp), intent(in) :: mu1

grav param for primary body [km3/s2]

real(kind=wp), intent(in) :: mu2

grav param for secondary body [km3/s2]

real(kind=wp), intent(in) :: dist

distance between bodies [km]

real(kind=wp), intent(in) :: A_z

halo z amplitude [km]

integer, intent(in) :: n

halo family: 1, 3

real(kind=wp), intent(in) :: t1

tau1 [rad]

real(kind=wp), intent(out), dimension(6) :: rv

cr3bp normalized state vector [wrt barycenter]

real(kind=wp), intent(out), optional :: period

normalized halo orbit period

public subroutine compute_halo_monodromy_matrix(mu, rv, period, phi)

Compute the halo orbit monodromy matrix (which is the state transition matrix propagated for one period) The input should be the result from the halo_to_rv_diffcorr routine.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: mu

CRTBP parameter

real(kind=wp), intent(in), dimension(6) :: rv

halo orbit state vector (normalized)

real(kind=wp), intent(in) :: period

halo orbit period (normalized)

real(kind=wp), intent(out), dimension(6,6) :: phi

monodromy matrix

public subroutine compute_monodromy_matrix_eigenvalues(phi, lambda)

Compute the eigenvalues of the monodromy matrix.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in), dimension(6,6) :: phi

monodromy matrix

complex(kind=wp), intent(out), dimension(6) :: lambda

eigenvalues of phi

public subroutine halo_orbit_test()

Unit test for the halo orbit module.

Arguments

None