crtbp_module Module

This module contains various routines related to the Circular Restricted Three-Body Problem (CRTBP).


Uses

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

Used by

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

Functions

public pure function compute_crtpb_parameter(mu1, mu2) result(mu)

Compute , the normalized CRTBP parameter. It is equal to .

Read more…

Arguments

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

grav param for body 1

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

grav param for body 2

Return Value real(kind=wp)

CRTBP parameter

public pure function compute_jacobi_constant(mu, x) result(c)

Compute the CRTBP Jacobi constant, given the state.

Arguments

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

CRTBP parameter (See compute_crtpb_parameter)

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

normalized state vector

Return Value real(kind=wp)

Jacobi constant


Subroutines

public subroutine normalize_variables(mu1, mu2, d12, x, m, t, x_crtbp, m_crtbp, t_crtbp)

Convert state in km, km/s units to normalized CRTBP state.

Arguments

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

grav. param. of body 1

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

grav. param. of body 2

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

distance between body 1 and body 2 [km]

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

unnormalized state w.r.t. barycenter [km,km/s]

real(kind=wp), intent(in), optional :: m

unnormalized mass [kg]

real(kind=wp), intent(in), optional :: t

unnormalized time [sec]

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

CRTBP normalized state

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

CRTBP normalized mass

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

CRTBP normalized time

public subroutine unnormalize_variables(mu1, mu2, d12, x_crtbp, m_crtbp, t_crtbp, x, m, t)

Convert normalized CRTBP state to km, km/s units.

Read more…

Arguments

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

grav. param. of body 1

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

grav. param. of body 2

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

distance between body 1 and body 2 [km]

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

CRTBP normalized state

real(kind=wp), intent(in), optional :: m_crtbp

CRTBP normalized mass

real(kind=wp), intent(in), optional :: t_crtbp

CRTBP normalized time

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

unnormalized state w.r.t. barycenter [km,km/s]

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

unnormalized mass [kg]

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

unnormalized time [sec]

public subroutine compute_libration_points(mu, r1, r2, r3, r4, r5)

Compute the coordinates of the libration points (L1,L2,L3,L4,L5). L1-L3 are computed using Newton's method. L4-L5 are known analytically.

Read more…

Arguments

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

CRTBP parameter

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

L1 x coordinate

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

L2 x coordinate

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

L3 x coordinate

real(kind=wp), intent(out), optional, dimension(2) :: r4

L4 [x,y] coordinates

real(kind=wp), intent(out), optional, dimension(2) :: r5

L5 [x,y] coordinates

public subroutine compute_libration_points_v2(mu, r1, r2, r3, r4, r5)

Compute the coordinates of the libration points (L1,L2,L3,L4,L5).

Read more…

Arguments

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

CRTBP parameter

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

L1 x coordinate

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

L2 x coordinate

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

L3 x coordinate

real(kind=wp), intent(out), optional, dimension(2) :: r4

L4 [x,y] coordinates

real(kind=wp), intent(out), optional, dimension(2) :: r5

L5 [x,y] coordinates

public subroutine crtbp_derivs(mu, x, dx)

CRTBP derivatives: state only.

Arguments

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

CRTBP parameter (See compute_crtpb_parameter)

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

normalized state

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

normalized state derivative

public subroutine crtbp_derivs_with_stm(mu, x, dx)

CRTBP derivatives: state + state transition matrix.

Arguments

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

CRTBP parameter (See compute_crtpb_parameter)

real(kind=wp), intent(in), dimension(42) :: x

normalized state and STM

real(kind=wp), intent(out), dimension(42) :: dx

normalized state and STM derivative

public subroutine crtbp_test()

Unit tests for CRTBP routines.

Arguments

None