Code converted to Modern Fortran by David A. Minton Date: 2020-06-29
swiftest_orbel_SCHGET.F
PURPOSE: Given an angle, efficiently compute sinh and cosh.
Input:
angle ==> angle in radians (real scalar)
Output:
shx ==> sinh(angle) (real scalar)
chx ==> cosh(angle) (real scalar)
ALGORITHM: Obvious from the code
REMARKS: Based on the routine SCGET for sine's and cosine's.
We use the sqrt rather than cosh (it's faster)
BE SURE THE ANGLE IS IN RADIANS AND IT CAN'T BE LARGER THAN 300
OR OVERFLOWS WILL OCCUR!
AUTHOR: M. Duncan.
DATE WRITTEN: May 6, 1992.
REVISIONS:
Code converted to Modern Fortran by David A. Minton
Date: 2020-06-29
! swiftest_orbel_FLON.F
PURPOSE: Solves Kepler's eqn. for hyperbola using hybrid approach.
Input:
e ==> eccentricity anomaly. (real scalar)
capn ==> hyperbola mean anomaly. (real scalar)
Returns:
swiftest_orbel_flon ==> eccentric anomaly. (real scalar)
ALGORITHM: Uses power series for N in terms of F and Newton,s method
REMARKS: ONLY GOOD FOR LOW VALUES OF N (N < 0.636*e -0.6)
AUTHOR: M. Duncan
DATE WRITTEN: May 26, 1992.
REVISIONS:
Code converted to Modern Fortran by David A. Minton
Date: 2020-06-29
swiftest_orbel_FGET.F
PURPOSE: Solves Kepler's eqn. for hyperbola using hybrid approach.
Input:
e ==> eccentricity anomaly. (real scalar)
capn ==> hyperbola mean anomaly. (real scalar)
Returns:
swiftest_orbel_fget ==> eccentric anomaly. (real scalar)
ALGORITHM: Based on pp. 70-72 of Fitzpatrick's book "Principles of
Cel. Mech. ". Quartic convergence from Danby's book.
REMARKS:
AUTHOR: M. Duncan
DATE WRITTEN: May 11, 1992.
REVISIONS: 2/26/93 hfl
Code converted to Modern Fortran by David A. Minton
Date: 2020-06-29
swiftest_orbel_ZGET.F
PURPOSE: Solves the equivalent of Kepler's eqn. for a parabola
given Q (Fitz. notation.)
Input:
q ==> parabola mean anomaly. (real scalar)
Returns:
swiftest_orbel_zget ==> eccentric anomaly. (real scalar)
ALGORITHM: p. 70-72 of Fitzpatrick's book "Princ. of Cel. Mech."
REMARKS: For a parabola we can solve analytically.
AUTHOR: M. Duncan
DATE WRITTEN: May 11, 1992.
REVISIONS: May 27 - corrected it for negative Q and use power
series for small Q.
Code converted to Modern Fortran by David A. Minton
Date: 2020-06-29
swiftest_orbel_ESOLMD.F
PURPOSE: Solves Kepler's eqn. e is ecc. m is mean anomaly.
Input:
e ==> eccentricity anomaly. (real scalar)
m ==> mean anomaly. (real scalar)
Returns:
swiftest_orbel_esolmd ==> eccentric anomaly. (real scalar)
ALGORITHM: Some sort of quartic convergence from Wisdom.
REMARKS: ONLY GOOD FOR SMALL ECCENTRICITY SINCE IT ONLY
ITERATES ONCE. (GOOD FOR PLANET CALCS.)
ALSO DOES NOT PUT M OR E BETWEEN 0. AND 2*PI
INCLUDES: needs SCGET.F
AUTHOR: M. Duncan
DATE WRITTEN: May 7, 1992.
REVISIONS: 2/26/93 hfl
Code converted to Modern Fortran by David A. Minton
Date: 2020-06-29
swiftest_orbel_EHIE.F
PURPOSE: Solves Kepler's eqn. e is ecc. m is mean anomaly.
Input:
e ==> eccentricity anomaly. (real scalar)
m ==> mean anomaly. (real scalar)
Returns:
swiftest_orbel_ehybrid ==> eccentric anomaly. (real scalar)
ALGORITHM: Use Danby's quartic for 3 iterations.
Eqn. is f(x) = x - e*sin(x+M). Note that
E = x + M. First guess is very good for e near 1.
Need to first get M between 0. and PI and use
symmetry to return right answer if M between PI and 2PI REMARKS: Modifies M so that both E and M are in range (0,TWOPI) AUTHOR: M. Duncan DATE WRITTEN: May 25,1992. REVISIONS:
Code converted to Modern Fortran by David A. Minton
Date: 2020-06-29
swiftest_orbel_EGET.F
PURPOSE: Solves Kepler's eqn. e is ecc. m is mean anomaly.
Input:
e ==> eccentricity anomaly. (real scalar)
m ==> mean anomaly. (real scalar)
Returns:
swiftest_orbel_eget ==> eccentric anomaly. (real scalar)
ALGORITHM: Quartic convergence from Danby
REMARKS: For results very near roundoff, give it M between
0 and 2*pi. One can condition M before calling EGET
by calling my double precision function MOD2PI(M).
This is not done within the routine to speed it up
and because it works fine even for large M.
AUTHOR: M. Duncan
DATE WRITTEN: May 7, 1992.
REVISIONS: May 21, 1992. Now have it go through EXACTLY two iterations
with the premise that it will only be called if
we have an ellipse with e between 0.15 and 0.8
Code converted to Modern Fortran by David A. Minton
Date: 2020-06-29
swiftest_orbel_EHYBRID.F
PURPOSE: Solves Kepler's eqn. e is ecc. m is mean anomaly.
Input:
e ==> eccentricity anomaly. (real scalar)
m ==> mean anomaly. (real scalar)
Returns:
swiftest_orbel_ehybrid ==> eccentric anomaly. (real scalar)
ALGORITHM: For e < 0.18 uses fast routine ESOLMD
For larger e but less than 0.8, uses EGET
For e > 0.8 uses EHIE
REMARKS: Only EHIE brings M and E into range (0,TWOPI)
AUTHOR: M. Duncan
DATE WRITTEN: May 25,1992.
REVISIONS: 2/26/93 hfl
Code converted to Modern Fortran by David A. Minton
Date: 2020-06-29
swiftest_orbel_FHYBRID.F
PURPOSE: Solves Kepler's eqn. for hyperbola using hybrid approach.
Input:
e ==> eccentricity anomaly. (real scalar)
n ==> hyperbola mean anomaly. (real scalar)
Returns:
swiftest_orbel_fhybrid ==> eccentric anomaly. (real scalar)
ALGORITHM: For abs(N) < 0.636*ecc -0.6 , use FLON
For larger N, uses FGET
REMARKS:
AUTHOR: M. Duncan
DATE WRITTEN: May 26,1992.
REVISIONS::
REVISIONS: 2/26/93 hfl