/******************************************************************************* *$ Component_name: * FKEP_LOCATE *$ Abstract: * Returns the position and velocity of a satellite at a specified time, * based on its orbital elements. *$ Keywords: * KEPLER, ORBITAL_MOTION * FORTRAN, PUBLIC *$ Declarations: * subroutine FKEP_LOCATE( time, location, velocity ) * real*8 time, location(3), velocity(3) *$ Inputs: * time time (sec) at which to determine location. *$ Outputs: * location(1..3) a vector consisting of the satellite's (x,y,z) * position coordinates at the selected time, in km. * velocity(1..3) a vector consisting of the satellite's (x,y,z) * velocity coordinates at the selected time, in km/sec. * * For these coordinates, the origin is the center of the planet; the z * axis coincides with the planetary axis; the x axis points toward the * reference longitude within the equatorial plane. *$ Returns: * none *$ Detailed_description: * This FORTRAN-callable function returns the position and velocity of a * satellite at a specified time. Its orbit must have been defined * previously using subroutine FKEP_SETORBIT(). Note that the accuracy of * the returned values can be controlled using FKEP_SETERROR(). *$ External_references: * Kep_Locate(), fKep_Orbit *$ Examples: * none *$ Error_handling: * none *$ Limitations: * Results should be exact for a small body on a circular orbit about an * oblate planet, or on an eccentric/inclined orbit about a spherical * planet. Perturbations from the sun and any other moons and rings are * not included. When the planet is oblate, errors will increase with time * due to inaccurate apsidal/nodal precession rates (cf. FKEP_APSE() and * FKEP_NODE()). Accuracy will also be reduced for orbits with * eccentricity very close to unity. *$ Author_and_institution: * Mark R. Showalter * NASA/Ames Research Center *$ Version_and_date: * 1991 June 18 *$ Change_history: * none *******************************************************************************/ #include "fortran.h" #include "kepler.h" extern KEP_ORBIT fKep_Orbit; void FORTRAN_NAME(fkep_locate) ( time, location, velocity ) double *time, location[3], velocity[3]; { Kep_Locate( &fKep_Orbit, *time, location, velocity ); return; } /******************************************************************************/