Basic two-body propagator using the Gooding universal element routines.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | mu |
grav. parameter [km^3/s^2] |
||
real(kind=wp), | intent(in), | dimension(6) | :: | rv0 |
initial state [km, km/s] |
|
real(kind=wp), | intent(in) | :: | dt |
time step [sec] |
||
real(kind=wp), | intent(out), | dimension(6) | :: | rvf |
final state [km, km/s] |
pure subroutine propagate(mu, rv0, dt, rvf) implicit none real(wp),intent(in) :: mu !! grav. parameter [km^3/s^2] real(wp),dimension(6),intent(in) :: rv0 !! initial state [km, km/s] real(wp),intent(in) :: dt !! time step [sec] real(wp),dimension(6),intent(out) :: rvf !! final state [km, km/s] real(wp),dimension(6) :: e !convert to elements, increment time, ! then convert back to cartesian: call pv3els(mu, rv0, e) e(6) = e(6) + dt call els3pv(mu, e, rvf) end subroutine propagate