This module contains the Izzo and Gooding algorithms for solving Lambert's problem.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=wp), | private, | parameter | :: | log2 | = | log(two) | |
real(kind=wp), | private, | parameter | :: | two_third | = | two/three | |
real(kind=wp), | private, | parameter | :: | four_third | = | four/three | |
real(kind=wp), | private, | parameter | :: | five_half | = | five/two | |
real(kind=wp), | private, | parameter | :: | three_half | = | three/two |
interface to the zeroin input function
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | t |
Independant variable for the function. |
The function evaluated at t
.
Solve Lambert's problem using Izzo's method.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in), | dimension(3) | :: | r1 |
first cartesian position [km] |
|
real(kind=wp), | intent(in), | dimension(3) | :: | r2 |
second cartesian position [km] |
|
real(kind=wp), | intent(in) | :: | tof |
time of flight [sec] |
||
real(kind=wp), | intent(in) | :: | mu |
gravity parameter [km^3/s^2] |
||
logical, | intent(in) | :: | long_way |
when true, do "long way" (>pi) transfers |
||
integer, | intent(in) | :: | multi_revs |
maximum number of multi-rev solutions to compute |
||
real(kind=wp), | intent(out), | dimension(:,:), allocatable | :: | v1 |
vector containing 3d arrays with the cartesian components of the velocities at r1 |
|
real(kind=wp), | intent(out), | dimension(:,:), allocatable | :: | v2 |
vector containing 3d arrays with the cartesian components of the velocities at r2 |
|
logical, | intent(out) | :: | status_ok |
true if everything is OK |
Solve Lambert's problem using Gooding's method.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in), | dimension(3) | :: | r1 |
first cartesian position [km] |
|
real(kind=wp), | intent(in), | dimension(3) | :: | r2 |
second cartesian position [km] |
|
real(kind=wp), | intent(in) | :: | tof |
time of flight [sec] |
||
real(kind=wp), | intent(in) | :: | mu |
gravity parameter [km^3/s^2] |
||
logical, | intent(in) | :: | long_way |
when true, do "long way" (>pi) transfers |
||
integer, | intent(in) | :: | multi_revs |
maximum number of multi-rev solutions to compute |
||
real(kind=wp), | intent(out), | dimension(:,:), allocatable | :: | v1 |
vector containing 3d arrays with the cartesian components of the velocities at r1 |
|
real(kind=wp), | intent(out), | dimension(:,:), allocatable | :: | v2 |
vector containing 3d arrays with the cartesian components of the velocities at r2 |
|
logical, | intent(out) | :: | status_ok |
true if everything is OK |
Solve Lambert's problem using the Arora/Russell method.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in), | dimension(3) | :: | r1 | ||
real(kind=wp), | intent(in), | dimension(3) | :: | r2 | ||
real(kind=wp), | intent(in) | :: | tofin | |||
real(kind=wp), | intent(in) | :: | mu | |||
real(kind=wp), | intent(in) | :: | lu |
scale factor in km |
||
integer, | intent(in) | :: | nrev | |||
logical, | intent(in) | :: | long_way | |||
logical, | intent(in) | :: | shortperiod | |||
real(kind=wp), | intent(in) | :: | tolerance | |||
integer, | intent(in) | :: | max_iterations | |||
real(kind=wp), | intent(out), | dimension(3) | :: | v1 | ||
real(kind=wp), | intent(out), | dimension(3) | :: | v2 |
Compare the Lambert routines.