Extended IDL Help

This page was created by the IDL library routine mk_html_help. For more information on this routine, refer to the IDL Online Help Navigator or type:

     ? mk_html_help

at the IDL command line prompt.

Last modified: Tue Aug 18 15:38:05 2015.


List of Routines


Routine Descriptions

ET2JD

[Next Routine] [List of Routines]
 NAME:
   et2jd

 PURPOSE:
   converts ET to julian date (ET = TDB seconds after J2000)

 DESCRIPTION:
   converts ET to julian date (ET = TDB seconds after J2000)

 CALLING SEQUENCE:
   jd = et2jd(et) 

 INPUTS:
   et - may be a double, or an array or matrix of doubles

 KEYWORDS
 OUTPUTS:
  jd - Julian date. Same dimensions as et.
 
 PROCEDURE:
  Calls cspice_et2jd to get the year, month, day;
  raparse to get the fractional day, and
  jdcnv to get the conversion to julian date.
  REVISON HISTORY:
   2006 Apr 12 Leslie Young.  Based on single_eph

(See ../naif/et2jd.pro)


ET2UTC

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   et2utc

 PURPOSE:
   converts ET to strings (ET = TDB seconds after J2000)

 DESCRIPTION:
   converts ET to strings (ET = TDB seconds after J2000)

 CALLING SEQUENCE:
   utc = et2utc(et) 

 INPUTS:
   et - may be a double, or an array or matrix of doubles

 KEYWORDS
   format =the scalar string format of the output time string,
               it may be any of the following:
      "C"      Calendar format, UTC
      "D"      Day-of-Year format, UTC
      "J"      Julian Date format, UTC
      "ISOC"   ISO Calendar format, UTC
      "ISOD"   ISO Day-of-Year format, UTC
      DEFAULT IS "C"

   prec     the scalar integer number of decimal places of precision to 
            which fractional seconds (for Calendar and Day-of-Year
            formats) or days (for Julian Date format) are to be 
            computed 
      DEFAULT IS 3 (or 5 for format = 'J')
 OUTPUTS:
  utc - String representation of et. Same dimensions as et.
 
 PROCEDURE:
  Just calls cspice_et2utc 
  REVISON HISTORY:
   2006 Jan 05 Leslie Young.  Based on single_eph

(See ../naif/et2utc.pro)


ET2UTCS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   et2utcs

 PURPOSE:
   converts ET (TDB) to UTC seconds after J2000

 DESCRIPTION:
   converts ET (TDB) to UTC seconds after J2000

 CALLING SEQUENCE:
   utcs = et2utcs(et) 

 INPUTS:
   et - may be a double, or an array or matrix of doubles

 OUTPUTS:
  utcs - UTC seconds after J2000
 
 PROCEDURE:
  cspice_et2utc  and cspice_deltaet
  REVISON HISTORY:
   2008 Mar 25 Leslie Young.  

(See ../naif/et2utcs.pro)


ET2UTCY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   et2utcy

 PURPOSE:
   converts ET (TDB) seconds to UTC years after J2000

 CALLING SEQUENCE:
   utcy = et2utcy(et) 

 INPUTS:
   et - may be a double, or an array or matrix of doubles

 OUTPUTS:
  utcy - UTC years 
 
  REVISON HISTORY:
   2008 Mar 25 Leslie Young.  

(See ../naif/et2utcy.pro)


GETDIR

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  getdir
 PURPOSE: (one line)
   find the directory that filename is in
 DESCRIPTION:

 CATEGORY:
  Miscellaneous
 CALLING SEQUENCE:
  getdir, filename, dirname, dirsep
 INPUTS:
  filename
 OPTIONAL INPUT PARAMETERS:
 none

 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  dirname - the directory that filename.pro is in
 COMMON BLOCKS:
  None.
 SIDE EFFECTS:
  Defines the system variable !eph using defsysv
 RESTRICTIONS:
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2005 January 15, by Cathy Olkin, SwRI

(See ../naif/getdir.pro)


MET2ET_NH

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  met2et_nh
 PURPOSE: (one line)
  Given an array or scalar of New Horizons MET, return Ephemeris Time
 DESCRIPTION:
 CATEGORY:
 CALLING SEQUENCE:
  et = met2et_nh
 INPUTS:
  met = mission elapsed time.  Should be a double.
 OUTPUTS:
  et = Ephemeris Time.  TDB (Barycentric Dynamical Time) since J2000.
  See NAIF documentation for details.
 RESTRICTIONS:
  MET should be double
  The New Horizons sclk kernel must be loaded.
 PROCEDURE:
  CSPICE_SCS2E interprets them as ".".  The major and minor ticks are defined in the SCLK kernel:
 
      In a particular partition of the NEW HORIZONS spacecraft clock,
      the clock read-out consists of two separate stages:
 
                            1/18424652:24251
 
      The first stage, a 32 bit field, represents the spacecraft
      clock seconds count.  The second, a 16 bit field, represents
      counts of 20 microsecond increments of the spacecraft clock.
 MODIFICATION HISTORY:
  Written 2015 July 19 (P+5), by Leslie Young, SwRI
  Many thanks to David Kaufman and 

(See ../naif/met2et_nh.pro)


NAIF

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  naif
 PURPOSE: (one line)
   prepare tnaif library and collect some constants into a system variable
 DESCRIPTION:
   see /usr/local/icy/doc/html/req/icy.html for ICY info

 CATEGORY:
  Astronomy
 CALLING SEQUENCE:
  naif
 INPUTS:
  none
 OPTIONAL INPUT PARAMETERS:
  forcedef - define !naif even if it is defined
  rw - allow !naif to be read-write
  kernelFile - the kernels to load.  This can take two different
    forms,  either a single string which is the 
    full path name of one kernel file (tls or bsp for
    example), or a metakernel file with the 
    names of the kernels to load.  If this optional
    argument is not defined, the file ; 
    "kernels.txt" is used. 
    This file is located in /User/naif/kernels.txt.  
    Note: under OSX, the cpsice_furnsh function expects the master 
       kernel file to have lines delimited
	by line feeds instead of carriage returns.

 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  None.
 COMMON BLOCKS:
  None.
 SIDE EFFECTS:
  Defines the system variable !eph using defsysv
 RESTRICTIONS:
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2004 May, by Leslie Young, SwRI
  Modified 2004 Dec 7, by Cathy Olkin, SwRI
		1. Moved "help, 'icy',/dlm" to be after package is loaded to remove error message.
		2. Added a kernel file
		3. Call cspice_furnsh on the kernel file
		4. Made a standard kernels.txt file and added an optional argument to override the
			standard kernel file.
	To do: 1.  Add to !naif, either the string passed to cspice_furnsh or the contents of the file
 		   loaded by cspice_furnsh.  I should be able to use the output from cspice_kdata to do this,
		   but I am not sure how to do this right now.

(See ../naif/naif.pro)


NAIFINIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  naifinit
 PURPOSE: (one line)
   prepare tnaif library and collect some constants into a system variable
 DESCRIPTION:
   see /usr/local/icy/doc/html/req/icy.html for ICY info

 CATEGORY:
  Astronomy
 CALLING SEQUENCE:
  naifinit
 INPUTS:
  none
 OPTIONAL INPUT PARAMETERS:
  forcedef - define !naif even if it is defined
  rw - allow !naif to be read-write
  kernelFile - the kernels to load.  This can take two different
               forms, either a single string which is the 
               full path name of one kernel file (tls or bsp for
               example), or a metakernel file with the 
               names of the kernels to load.  If this optional
               argument is not defined, the file 
               "kernels.tm" is used. This file is located 
               in the same directory as naifinit.pro.  
 
      Note: under OSX, the cpsice_furnsh function expects the master
      kernel file to have lines delimited
	by line feeds instead of carriage returns.

 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  None.
 COMMON BLOCKS:
  None.
 SIDE EFFECTS:
  Defines the system variable !eph using defsysv
 RESTRICTIONS:
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2004 May, by Leslie Young, SwRI
  Modified 2004 Dec 7, by Cathy Olkin, SwRI
		1. Moved "help, 'icy',/dlm" to be after package is
		loaded to remove error message.
		2. Added a kernel file
		3. Call cspice_furnsh on the kernel file
		4. Made a standard kernels.tm file and added an
		optional argument to override the
			standard kernel file.
	To do: 1.  Add to !naif the string passed to cspice_furnsh
 2005 Mar 3 Leslie Young.  Moved to $idl/layoung/naif
       Changed call to getdir to call to findpro, 
       Added more error checking
 2005 Apr 26 Leslie Young.  Added readonly to structure
 2005 Nov 16.Default to read-write; default TextMetakernel -> kernels.tm

(See ../naif/naifinit.pro)


NAIFREINIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  naifreinit
 PURPOSE: (one line)
   unload existing kernels and reload new kernels for naif
 DESCRIPTION:
   see /usr/local/icy/doc/html/req/icy.html for ICY info

 CATEGORY:
  Astronomy
 CALLING SEQUENCE:
  naifreinit
 INPUTS:
  none
 OPTIONAL INPUT PARAMETERS:
  kernelFile - the kernels to load.  This can take two different
               forms, either a single string which is the 
               full path name of one kernel file (tls or bsp for
               example), or a metakernel file with the 
               names of the kernels to load.  If this optional
               argument is not defined, the file 
               "kernels.tm" is used. This file is located 
               in the same directory as naifinit.pro.  
 
      Note: under OSX, the cpsice_furnsh function expects the master
      kernel file to have lines delimited
	by line feeds instead of carriage returns.

 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  None.
 COMMON BLOCKS:
  None.
 SIDE EFFECTS:
  Defines the system variable !naif using defsysv
 RESTRICTIONS:
 PROCEDURE:
 MODIFICATION HISTORY:
 2005 Apr 26 Leslie Young.  based on naifinit
 2005 Nov 16 Leslie Young. Default file -> kernels.tm (Text Metakernel)

(See ../naif/naifreinit.pro)


NAIF_ID

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   naif_id

 PURPOSE:
  Given an integer or a string return the naif id of target

 DESCRIPTION:
  Given an integer or a string return the naif id of target

 CALLING SEQUENCE:
   id = naif_id(idin, found)

 INPUTS:
   idin - scalar or array of integers or strings
 OUTPUTS:
  found - scalar or array, 1 if found, 0 if not found
  id - scalar or array of longs, the naif ID

 REVISON HISTORY:
  2007 Sep 12 LAY
  2009 May  5 LAY change to use size instead of datatype

(See ../naif/naif_id.pro)


NAIF_LOADEDKERNELS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  naif_loadedkernels
 PURPOSE: (one line)
   return the loaded kernels
 DESCRIPTION:
   see /usr/local/icy/doc/html/req/icy.html for ICY info

 CATEGORY:
  Astronomy
 CALLING SEQUENCE:
  naifinit
 INPUTS:
  none
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  Array of strings containing the loaded kernels
 COMMON BLOCKS:
  None.
 SIDE EFFECTS:
  Defines the system variable !eph using defsysv
 RESTRICTIONS:
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2005 Dec 26, by Leslie Young, SwRI

(See ../naif/naif_loadedkernels.pro)


NAIF_PHYS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  naif_phys
 PURPOSE: (one line)
   calculate physical data for a target
 DESCRIPTION:
   calculate physical data for a target: sub observer and solar lat
   and lon, phase angle 
 CATEGORY:
  Astronomy
 CALLING SEQUENCE:
  naif_phys
 INPUTS:
  target - target string or code
  obset - ET (TDB s after J2000) at the observer
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  obs - observer code
  lonlatlat - [east long in rad, geodetic lat in rad, alt in km]
  
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
   a structure with
     subobslat = sub-observer latitude (radian)
     subobslon = sub-observer longitude (radian)
     subsollat = sub-solar latitude (radian)
     subsollon = sub-solar longitude (radian)
     phase     = observer-target-sun angle (radian)
     obsdist   = observer-target distance (km)
     soldist   = sun-target distance (km)
  
 COMMON BLOCKS:
  None.
 SIDE EFFECTS:
 RESTRICTIONS:
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2006 May 11 Leslie Young, SwRI
  2007 June 06 LAY - corrected documentation
  2008 Mar 25 LAY - corrected sign error in subsollon
  2011 Jan 13 LAY - Added calls to naif_id to all targ to be string

(See ../naif/naif_phys.pro)


OCPLUTO_POS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   ocpluto_pos

 PURPOSE:
   Calculates position of Pluto, Charon, barycenter, and photocenter

 DESCRIPTION:
   Calculates position of Pluto, Charon, barycenter, and photocenter

 CALLING SEQUENCE:

 INPUTS:
   et - the ET at which you want to know the coordinates (may be an
        array).  Units are seconds of TDB (barycentric dynamical
        time) after J2000.

 KEYWORD INPUT
   lonlatalt - lon, lat, altitude for topocentric
               ephemerides. Default geocentric
 KEYWORD OUTPUT:
   pluto - pluto body center. pluto[0,*] = ra, etc
   Charon - Charon body center
   barycener - barycenter
   photocenter - system photocenter

 RESTRICTIONS
   For geocentric observations, ltime and position can be off by
    Re/c = 21 ms.
 
  REVISON HISTORY:
   2006 Jan 02 Leslie Young.  Based on single_eph
   2006 May 11 LAY Added ltime

(See ../naif/oc_pluto_pos.pro)


OC_EPHICY.PRO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
     oc_ephicy.Pro

 PURPOSE:
     Returns a structure with the following information:
     {et, ra, dec, radot, decdot, ephinfo} where ephinfo
     contains the observer range and observer range rate.

 DESCRIPTION:
     Calculates the ra, dec, radot, decdot, observer range
     and range rate using the NAIF ICY routines.

 CALLING SEQUENCE:
     eph = oc_ephicy(target, observer, utcStrStart, utcStrEnd, dt, neph)

 INPUTS:
     target - the target for the ephemeris, i.e. "Pluto"
     observer - the observer location, i.e. "Earth"
     utcStrStart - the UTC string of the start time,
                i.e. "January 11, 2006 00:00:00"
     utcStrEnd - the UTC string of the end time
     dt - the increment in time, seconds
 OUTPUTS:
      eph - a structure with the following elements
      eph.et - ephemeris time at observer, in TDB s past J2000
      eph.ra - the target RA in radians
      eph.dec - the target Dec in radians
      eph.raerr - the error in cos(dec)*ra (-999 for undefined)
      eph.decerr - the error in Dec in radians  (-999 for undefined)
      eph.radot - the RA rate in radians/s (d(ra)*cos(dec)/dt)
      eph.decdot -- the Dec rate in radians/s
      eph.radoterr - the error in radot (-999 for undefined)
      eph.decdoterr - the error in decdot (-999 for undefined)
      eph.delta - target-obeserver distance in km
      eph.deltadot - change in target-obeserver distance in km/s
      eph.state - J2000 [X,Y,Z, X', Y', Z'] in km and km/s

      eph.naif - naif info structure
      eph.naif.target - NAIF target name
      eph.naif.observer - NAIF observer name
      eph.naif.targetcode - NAIF target code
      eph.naif.observercode - NAIF observer code
      eph.naif.frame - frame for returning state, eg 'J2000'
      eph.naif.abcorr - aberation correction, eg 'LT' for lighttime
      eph.naif.kernels - list of kernels loaded

       REVISON HISTORY:
       17-January-2005 CBO SwRI
       21-March-2005 LAY SwRI
          Changed from procedure to function
          Changed i from float to long
       12 March 2006 LAY SwRI
          Cleaned up docs to reflect new single_eph output
          Cast dt to be a double
       22 March 2006 LAY SwRI  added verbose, abcoor, frame,
       lonlatalt keywords
       02-July-2006 LAY SwRI add kernel keyword to single_eph  to avoid extra calls
                             to naif_laodedkernels

(See ../naif/oc_ephicy.pro)


OC_EPHICY_ARCLEN.PRO

[Previous Routine] [Next Routine] [List of Routines]
       NAME:
               oc_ephicy_arclen.Pro

       PURPOSE:
		Returns a structure with the following information:
                 {et, ra, dec, radot, decdot, ephinfo} where ephinfo
                 contains the observer range and observer range rate.

	DESCRIPTION:
              Calculates the ra, dec, radot, decdot, observer range
              and range rate using the NAIF ICY routines.

       CALLING SEQUENCE:
               oc_ephicy_arclen, target, observer, utcStrStart, utcStrEnd,
               arclen, eph

       INPUTS:
              target - the target for the ephemeris, i.e. "Pluto"
              observer - the observer location, i.e. "Earth"
              utcStrStart - the UTC string of the start time,
                            i.e. "January 11, 2006 00:00:00"
              utcStrEnd - the UTC string of the end time
              arclen - the increment in sky-plane distance traveled
                       by the target, radians
       OUTPUTS:
              eph - a structure with the following elements
              eph.ra - the Pluto RA in radians
              eph.dec - the Pluto Dec in radians
              eph.radot - the RA rate in radians/s
                          (d(ra)*cos(dec)/dt)
              eph.decdot -- the Dec rate in radians/s
              eph.ephinfo - the observer range (in km)
                                          and range rate (km/s).


       REVISON HISTORY:
       17-January-2005 CBO SwRI
       26-January-2005 LAY SwRI added newton-raphson step
       19-November-2005 LAY SwRI Changed from procedure to function
       20-November-2005 LAY SwRI added call to rd2xieta to
                            avoid xi=2pi when ra crosses zero 
       02-July-2006 LAY SwRI add kernel keyword to single_eph  to avoid extra calls
                             to naif_laodedkernels

(See ../naif/oc_ephicy_arclen.pro)


OC_EPHICY_ET.PRO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
     oc_ephicy_et.Pro

 PURPOSE:
     Returns a structure with the following information:
     {et, ra, dec, radot, decdot, ephinfo} where ephinfo
     contains the observer range and observer range rate.

 DESCRIPTION:
     Calculates the ra, dec, radot, decdot, observer range
     and range rate using the NAIF ICY routines.

 CALLING SEQUENCE:
     eph = oc_ephicy(target, observer, time, dt, neph)

 INPUTS:
     target - the target for the ephemeris, i.e. "Pluto"
     observer - the observer location, i.e. "Earth"
     time - either a list of UTC strings or a list of et
 OUTPUTS:
      eph - an ephemeris structure (see single_eph.pro)

 REVISON HISTORY:
       11-May-2006 LAY SwRI
       02-July-2006 LAY SwRI add kernel keyword to single_eph  to avoid extra calls
                             to naif_laodedkernels
       21-Sept-2006 LAY SwRI return correct neph

(See ../naif/oc_ephicy_et.pro)


OC_EPH_ET2FGH.PRO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   oc_eph_et2fgh.pro

 PURPOSE:
   returns [f,g,h,f',g',h'] for a eph at a given et

 DESCRIPTION:
   returns [f,g,h,f',g',h'] for a eph at a given et
   where h is toward a star, f is sky east, and g is sky north.

 CALLING SEQUENCE:
   fgh = oc_eph_et2fgh(et,eph, star, method)

 INPUTS:
   et - ephemeris time (seconds TDB after J2000)
   eph - array of eph structures
 OPTIONAL INPUT PARAMETERS:

 KEYWORDS
  method
    'piececub' - piecewise cubic interpolation of the state
    'naif'     - calls to naif routines, using eph.naif
 OUTPUTS:
  If et is a scalar, return [ra, dec].

  If et is an array, return [ radec_0, radec_1, ... ] where radec_i is for et[i]

  If et is a scalar and the eph is an array of structures
  then return [ radec_0, radec_1, ... ] where radec_i is for eph[i]
  
  If both et and the eph are arrays
  then return [ radec_0, radec_1, ... ] where radec_i is for et[i], eph[i]
  (if they are different lengths, then do up to the minimum)
 
  REVISON HISTORY:
   2006 Jan 02 Leslie Young.  

(See ../naif/oc_eph_et2fgh.pro)


OC_EPH_ET2STATE.PRO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   oc_eph_et2state.pro

 PURPOSE:
   returns [x,y,z,x',y',z'] for a eph at a given et

 DESCRIPTION:
   returns [x,y,z,x',y',z'] for an ephemeris structure at a given et
   where xyz are J2000 cartesian coordinates

 CALLING SEQUENCE:
   state = oc_eph_et2state(et,eph)

 INPUTS:
   et - ephemeris time (seconds TDB after J2000)
   eph - array of eph structures
 OPTIONAL INPUT PARAMETERS:

 KEYWORDS
  method
    'piececub' - piecewise cubic interpolation of the state
    'naif'     - calls to naif routines, using eph.naif
 OUTPUTS:
  If et is a scalar, return [ra, dec].

  If et is an array, return [ radec_0, radec_1, ... ] where radec_i is for et[i]

  If et is a scalar and the eph is an array of structures
  then return [ radec_0, radec_1, ... ] where radec_i is for eph[i]
  
  If both et and the eph are arrays
  then return [ radec_0, radec_1, ... ] where radec_i is for et[i], eph[i]
  (if they are different lengths, then do up to the minimum)
 
  REVISON HISTORY:
   2006 Jan 02 Leslie Young.  

(See ../naif/oc_eph_et2state.pro)


OC_FG2LLA.PRO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   oc_fg2lla.pro

 PURPOSE:
   Calculate the Earth' longitude and latitude for a given time and f, g

 DESCRIPTION:
   Calculate the longitude and latitude ON EARTH 
   from which, at a given time, a body center will have
   sky-place coordinates f, g

 CALLING SEQUENCE:
   lonlatalt = oc_fg2lla(et,targ,radec_star, fgh, $
      obs=obs,abcorr=abcorr,frame=frame)

 INPUTS:
   et - the ET at which you want to know the coordinates (may be an
        array).  Units are seconds of TDB (barycentric dynamical
        time) after J2000.
   targ = target code
   radec_star - vector of;
    A - right ascention in radians
    D - declination in radians
   fg - vector of [f, g] of TANGENT POINT - TARGET CENTER
 OPTIONAL INPUT PARAMETERS:

 KEYWORDS
   obs - the keyword argument that indicates the observer location, 
         default to Earth center (399).
   abcorr  - aberation correction.  Default 'LT'
   frame   - frame of state, ra, dec.  Default 'J2000'

 OUTPUTS:
  lonlatalt - array of [east longitude (radian), 
                        geodetic latitude (radian), 
                        0]
 
  REVISON HISTORY:
   2006 Jan 11 Leslie Young.  Based on single_eph

(See ../naif/oc_fg2lla.pro)


OC_FGH2LLA.PRO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   oc_fgh2lla.pro

 PURPOSE:
   Convert between fgh (skyplane) coordinates and lon, lat, alt

 DESCRIPTION:
   Convert between fgh (skyplane) coordinates and lon, lat, alt

 CALLING SEQUENCE:
   lonlatalt = oc_fgh2lla(targ,et,radec_star, fgh)

 INPUTS:
   et - the ET at the target for which you want to know the coordinates
   targ = target code
   radec_star - vector of;
    A - right ascention in radians
    D - declination in radians
   fgh - vector of [f, g, h] relative to target center
 OPTIONAL INPUT PARAMETERS:

 KEYWORDS
 OUTPUTS:
  lonlatalt - array of [east longitude (radian), 
                        geodetic latitude (radian), 
                        altitude (km)]
 
  REVISON HISTORY:
   2007 Sep 12 Leslie Young

(See ../naif/oc_fgh2lla.pro)


OC_NAIFFGH.PRO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   oc_naiffgh.pro

 PURPOSE:
   returns a 6-element fgh state vector (or a 6 x n matrix)

 DESCRIPTION:
   Calculates the state using the NAIF ICY routines.

 CALLING SEQUENCE:
   state = oc_naiffgh(et,targ,radec_star, dradec_star, $
      obs=obs,abcorr=abcorr,frame=frame,lonlatalt=lonlatalt)

 INPUTS:
   et - the ET at which you want to know the coordinates (may be an
        array).  Units are seconds of TDB (barycentric dynamical
        time) after J2000.
   targ = target code
   radec_star - vector of;
    A - right ascention in radians
    D - declination in radians
 OPTIONAL INPUT PARAMETERS:
  dradec_star - vector of
   dA = d(A)/dt (NOT cosdec dA/dt)
   dD = dD/dt

 KEYWORDS
   obs - the keyword argument that indicates the observer location, 
         default to Earth center (399).
   abcorr  - aberation correction.  Default 'LT'
   frame   - frame of state, ra, dec.  Default 'J2000'
   lonlatalt - lon, lat, altitude for topocentric
               ephemerides. Default geocentric
 OUTPUTS:
   If et is a double, then return fgh6 = [f,g,h,f',g',h'] in 
   km and km/s.
   If et is an array, return fgh6arr = [ [fgh0], [fgh1], ...]
   so single 6-element fgh arrays are accessed by fgh6arr[*,i]
 
  REVISON HISTORY:
   2006 Jan 02 Leslie Young.  Based on single_eph

(See ../naif/oc_naiffgh.pro)


OC_NAIFSTATE.PRO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   oc_naifstate.pro

 PURPOSE:
   returns a 6-element state (or a 6 x n matrix)

 DESCRIPTION:
   Calculates the state using the NAIF ICY routines.

 CALLING SEQUENCE:
   state = oc_naifstate(et,targ,$
      obs=obs,abcorr=abcorr,frame=frame,lonlatalt=lonlatalt)

 INPUTS:
   et - the ET at which you want to know the coordinates (may be an
        array).  Units are seconds of TDB (barycentric dynamical
        time) after J2000.
   targ = target code

 KEYWORDS
   obs - the keyword argument that indicates the observer location, 
         default to Earth center (399).
   abcorr  - aberation correction.  Default 'LT'
   frame   - frame of state, ra, dec.  Default 'J2000'
   lonlatalt - lon, lat, altitude for topocentric
               ephemerides. Default geocentric
 OUTPUTS:
   ltime - optional output of light-travel time
   
   If et is a double, then return state = [x,y,z,x',y',z'] in 
   km and km/s.
   If et is an array, return statearr = [ [state0], [state1], ...]
   so single states are accessed by statearr[*,i]

 RESTRICTIONS
   For geocentric observations, ltime and position can be off by
    Re/c = 21 ms.
 
  REVISON HISTORY:
   2006 Jan 02 Leslie Young.  Based on single_eph
   2006 May 11 LAY Added ltime
   2009 Oct 21 LAY Change i in loop to long

(See ../naif/oc_naifstate.pro)


OC_STAR_APPLY_PM

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   oc_star_apply_pm

 PURPOSE:
   Apply proper motion to a star

 DESCRIPTION:
   Apply proper motion to a star

 CALLING SEQUENCE:
   star_et = oc_star_apply_pm(star, et)

 INPUTS:
   star - star structure or array of structures
   et - ephemeris time (seconds TDB after J2000)

 OPTIONAL INPUT PARAMETERS:
  None

 KEYWORDS:
  None

 OUTPUTS:
  If et is a scalar and star is a single structure then
  return a star structure

  If et is an array and the star is a single structure
  then return [star_0,star_1,...] where star_i is for et[i]

  If et is a scalar and the star is an array of structures
  then return [ star_0, star_1, ... ] where star_i is for star[i]
  
  If both et and the star are arrays
  then return [ star_0, star_1, ... ] where star_i is for et[i], star[i]
  (if they are different lengths, then do up to the minimum)
 
  REVISON HISTORY:
   2006 Mar 08 Leslie Young.  
   2006 Mar 21 Henry Throop.  Modified to return proper ET.

(See ../naif/oc_star_apply_pm.pro)


OC_STAR_RADEC.PRO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   oc_star_radec.pro

 PURPOSE:
   returns [ra, dec] for a star at a given et

 DESCRIPTION:
   returns [ra, dec] for a star at a given et

 CALLING SEQUENCE:
   [ra,dec] = oc_star_radec(et,star, dradec, radecerr)

 INPUTS:
   et - ephemeris time (seconds TDB after J2000)
   star - star structure or array of structures
 OPTIONAL INPUT PARAMETERS:

 KEYWORDS
 OUTPUTS:
  If et is a scalar and star is a single structure then
  return [ra, dec].

  If et is an array and the star is a single structure
  then return [ radec_0, radec_1, ... ] where radec_i is for et[i]

  If et is a scalar and the star is an array of structures
  then return [ radec_0, radec_1, ... ] where radec_i is for star[i]
  
  If both et and the star are arrays
  then return [ radec_0, radec_1, ... ] where radec_i is for et[i], star[i]
  (if they are different lengths, then do up to the minimum)
 
  dradec is the derivatives of cos(dec) ra and dec w/ respect to time
  (radian/sec).  Note: cos(dec) d ra/dt, not dra/dt.

  REVISON HISTORY:
   2006 Jan 02 Leslie Young.  
   2006 Mar 08 LAY.  Corrected docs on dradec, added 2-element et,
                     added array of radecerr.

(See ../naif/oc_star_radec.pro)


OC_TRACKLLA

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   oc_tracklla

 PURPOSE:
   Calculate the longitude and latitude for occultation tracks

 DESCRIPTION:
   Calculate the longitude and latitude for occultation tracks

 CALLING SEQUENCE:
   oc_tracklonlat(et,targ,radec_star, r, lon, lat, found, fg0=fg0, $
      obs=obs,abcorr=abcorr,frame=frame, deg=deg)

 INPUTS:
   et - the ET at which you want to know the coordinates (may be an
        array).  Units are seconds of TDB (barycentric dynamical
        time) after J2000.
   targ = target code
   radec_star - vector of;
    A - right ascention in radians
    D - declination in radians
   r - km north (south if r < 0) of track centerline
 OPTIONAL INPUT PARAMETERS:

 KEYWORDS
   fg0 - final fg = nominal - fg0
   deg - if set, return lon, lat in decimal degrees
   obs - the keyword argument that indicates the observer location, 
         default to Earth center (399).
   abcorr  - aberation correction.  Default 'LT'
   frame   - frame of state, ra, dec.  Default 'J2000'

 OUTPUTS:
   lon - longitude
   lat - latitude
   found - 1 if lat, lon on Earth
 
  REVISON HISTORY:
   2006 Jan 11 Leslie Young.  Based on single_eph

(See ../naif/oc_tracklonlat.pro)


SINGLE_EPH.PRO

[Previous Routine] [Next Routine] [List of Routines]
       NAME:
               single_eph.Pro

       PURPOSE:
		Returns a structure with the following information:
                 {et, ra, dec, radot, decdot, ephinfo} where ephinfo
                 contains the observer range and observer range rate.

	DESCRIPTION:
              Calculates the ra, dec, radot, decdot, observer range
              and range rate using the NAIF ICY routines.

       CALLING SEQUENCE:
               eph = single_eph( target, et, neph, observer=observer,
               testing=testing)

       INPUTS:
		et - the ET at which you want to know the
                        coordinates
       KEYWORDS
               observer - the keyword argument that indicates the
                          observer location, default to Earth.
               verbose - a keyword argument.  If set, it
                         will print out error messages.
               abcorr  - aberation correction.  Default 'LT'
               frame   - frame of state, ra, dec.  Default 'J2000'
               lonlatalt - lon, lat, altitude for geocentric ephemerides 
       OUTPUTS:
              eph - a structure with the following elements
              eph.ra - the Pluto RA in radians
              eph.dec - the Pluto Dec in radians
              eph.radot - the RA rate in radians/s
                          (d(ra)*cos(dec)/dt)
              eph.decdot -- the Dec rate in radians/s
              eph.ephinfo.delta - the observer range (in km)
              eph.ephinfo.deltadot - the observer range rate (in km/s)
              eph.ephinfo.target - the target
              eph.ephinfo.observer - the observer name


       REVISON HISTORY:
       17-January-2005 CBO SwRI
       2005 Mar 3 Moved to $idl/layoung/naif  LAY
                  Also put long lines onto 2 lines
       2005 Apr 26 Return 1 for neph under usual circumstances
                   Bypass bodn2c if target or observer are integers
                   Change verbose = 0 for quiet, 1 for verbose,
                   and removed testing
       2005 Nov 20 LAY. Multliply dra/dt from rec5rad6 by cos(dec)
                   as per documentation and design docs.
       2005 Dec 29 LAY.  Add latlonlat
       2006 Jan 02 LAY.  Change substructure name to naif.
                         Keep ephinfo as an option for compatibility
       2006 Jul 02 LAY.  Add kernels as an input option for speed.
                         Avoids extra calls tp naif_loadedkernels()
       2009 May 05 LAY.  Call naif_id

(See ../naif/single_eph.pro)


UTC2ET

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   utc2et

 PURPOSE:
   converts strings to ET (TDB seconds after J2000)

 DESCRIPTION:
   converts strings to ET (TDB seconds after J2000)

 CALLING SEQUENCE:
   et = utc2et(utc) 

 INPUTS:
   utc - may be a string, or an array or matrix of strings

 KEYWORDS

 OUTPUTS:
  et - (double) seconds after J2000. Same dimensions as utc.
 
 PROCEDURE:
  Just calls cspice_str2et 
  REVISON HISTORY:
   2006 Jan 05 Leslie Young.  Based on single_eph

(See ../naif/utc2et.pro)


UTCS2ET

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   utcs2et

 PURPOSE:
   converts UTC seconds to ET (TDB) after J2000

 CALLING SEQUENCE:
   et = utcs2et(utcs) 

 INPUTS:
  utcs - UTC seconds after J2000
    may be a double, or an array or matrix of doubles
 
 OUTPUTS:
   et - 

 PROCEDURE:
  cspice_et2utc  and cspice_deltaet
  REVISON HISTORY:
   2008 Mar 25 Leslie Young.  

(See ../naif/utcs2et.pro)


UTCY2ET

[Previous Routine] [List of Routines]
 NAME:
   utcy2et

 PURPOSE:
   converts UTC years to ET (TDB) seconds after J2000

 CALLING SEQUENCE:
   utcy = utcy2et(utcy) 

 INPUTS:
   utcy - may be a double, or an array or matrix of doubles

 OUTPUTS:
  utcy - UTC years after J2000
 
  REVISON HISTORY:
   2008 Mar 25 Leslie Young.  

(See ../naif/utcy2et.pro)