Halo orbit routines.
Todo
Add differentially-corrected option using the STM derivatives.
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.
Type | Intent | Optional | 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) |
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.
Type | Intent | Optional | 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 |
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.
Type | Intent | Optional | 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 |
Compute the eigenvalues of the monodromy matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in), | dimension(6,6) | :: | phi |
monodromy matrix |
|
complex(kind=wp), | intent(out), | dimension(6) | :: | lambda |
eigenvalues of |
Unit test for the halo orbit module.