PRO CT2LST, lst, lng, tz, tme, day, mon, year ;+ ; NAME: ; CT2LST ; PURPOSE: ; To convert from Local Civil Time to Local Mean Sidereal Time. ; ; CALLING SEQUENCE: ; CT2LST, Lst, Lng, Tz, Time, [Day, Mon, Year] ; or ; CT2LST, Lst, Lng, dummy, JD ; ; INPUTS: ; Lng - The longitude in degrees (east of Greenwich) of the place for ; which the local sidereal time is desired, scalar. The Greenwich ; mean sidereal time (GMST) can be found by setting Lng = 0. ; Tz - The time zone of the site in hours. Use this to easily account ; for Daylight Savings time (e.g. 4=EDT, 5 = EST/CDT), scalar ; This parameter is not needed (and ignored) if Julian date is ; supplied. ; Time or JD - If more than four parameters are specified, then this is ; the time of day of the specified date in decimal hours. If ; exactly four parameters are specified, then this is the ; Julian date of time in question, scalar or vector ; ; OPTIONAL INPUTS: ; Day - The day of the month (1-31),integer scalar or vector ; Mon - The month, in numerical format (1-12), integer scalar or ; Year - The year (e.g. 1987) ; ; OUTPUTS: ; Lst The Local Sidereal Time for the date/time specified in hours. ; ; RESTRICTIONS: ; If specified, the date should be in numerical form. The year should ; appear as yyyy. ; ; PROCEDURE: ; The Julian date of the day and time is question is used to determine ; the number of days to have passed since 0 Jan 2000. This is used ; in conjunction with the GST of that date to extrapolate to the current ; GST; this is then used to get the LST. See Astronomical Algorithms ; by Jean Meeus, p. 84 (Eq. 11-4) for the constants used. ; ; EXAMPLE: ; Find the Greenwich mean sidereal time (GMST) on 1987 April 10, 19h21m UT ; ; For GMST, we set lng=0, and for UT we set Tz = 0 ; ; IDL> CT2LST, lst, 0, 0,ten(19,21), 10, 4, 1987 ; ; ==> lst = 8.5825249 hours (= 8h 34m 57.0896s) ; ; The Web site http://tycho.usno.navy.mil/sidereal.html contains more ; info on sidereal time, as well as an interactive calculator. ; PROCEDURES USED: ; jdcnv - Convert from year, month, day, hour to julian date ; ; MODIFICATION HISTORY: ; Adapted from the FORTRAN program GETSD by Michael R. Greason, STX, ; 27 October 1988. ; Use IAU 1984 constants Wayne Landsman, HSTX, April 1995, results ; differ by about 0.1 seconds ; Converted to IDL V5.0 W. Landsman September 1997 ; Longitudes measured *east* of Greenwich W. Landsman December 1998 ;- On_error,2 if N_params() LT 3 THEN BEGIN print,'Syntax - CT2LST, Lst, Lng, Tz, Time, Day, Mon, Year' print,' or' print,' CT2LST, Lst, Lng, Tz, JD' return endif ; If all parameters were given, then compute ; the Julian date; otherwise assume it is stored ; in Time. ; IF N_params() gt 4 THEN BEGIN time = tme + tz jdcnv, year, mon, day, time, jd ENDIF ELSE jd = double(tme) ; ; Useful constants, see Meeus, p.84 ; c = [280.46061837d0, 360.98564736629d0, 0.000387933d0, 38710000.0 ] jd2000 = 2451545.0D0 t0 = jd - jd2000 t = t0/36525 ; ; Compute GST in seconds. ; theta = c[0] + (c[1] * t0) + t^2*(c[2] - t/ c[3] ) ; ; Compute LST in hours. ; lst = ( theta + double(lng))/15.0d neg = where(lst lt 0.0D0, n) if n gt 0 then lst[neg] = 24.D0 + (lst[neg] mod 24) lst = lst mod 24.D0 ; RETURN END