jbepoch.pro
3.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
;+
; NAME:
; JBEPOCH
;
; AUTHOR:
; Craig B. Markwardt, NASA/GSFC Code 662, Greenbelt, MD 20770
; craigm@lheamail.gsfc.nasa.gov
;
; PURPOSE:
; Compute Julian Day to/from Julian or Besselian Epoch
;
; CALLING SEQUENCE:
; EPOCH = JBEPOCH(/B, JDAY) ;; Julian Day to Besselian Epoch
; EPOCH = JBEPOCH(/J, JDAY) ;; Julian Day to Julian Epoch
;
; JDAY = JBEPOCH(/B, EPOCH, /TO_DAY) ;; Besselian Epoch to Julian Day
; JDAY = JBEPOCH(/J, EPOCH, /TO_DAY) ;; Julian Epoch to Julian Day
;
; DESCRIPTION:
;
; The function JBEPOCH computes the Julian or Besselian Epoch year
; number from a given Julian day number. Epochs of this form are
; often given in the astronomical literature as B1950.0 or J2000.0,
; but they can be different.
;
; Besselian year numbers are measured in tropical years of about
; 365.2422 days. Julian year numbers are measured in years whose
; lengths are exactly 365.25 days of 86400 second lengths. The "/J"
; or "/B" keywords identify which year numbering system is being
; used.
;
; JBEPOCH also computes the inverse transformation, from Julian or
; Besselian epoch to Julian Day, by specifying the /TO_DAY keyword.
;
; The computational logic is inspired by STARLINK (P.T. Wallace).
;
;
; INPUTS:
;
; EPOCH or JDAY - If TO_DAY is set, Besselian or Julian year number.
; If TO_DAY is not set, the Julian day number.
;
; KEYWORDS:
;
; B - if set, then year numbers (input/output) are expressed in
; Besselian years.
;
; J - if set, then year numbers (input/output) are expressed in
; Julian years.
;
; TO_DAY - if set, then convert EJ (assumed to be year number) into
; Julian day number.
;
; MJD - if set, then Julian days are expressed as "modified" Julian
; Days, or Julian days minus 2400000.5d.
;
;
; RETURNS:
;
; If TO_DAY is set, then returns Julian Days.
;
; If TO_DAY is not set, then returns year number.
;
;
; REFERENCES:
;
; Lieske, J. H. 1979, Astron & Astrophysics, 73, 282
;
; Wallace, P. T. 1999, SLALIB Software Library (STARLINK)
; http://star-www.st-and.ac.uk/starlink/
; (Routines sla_EPB2D, sla_EPJ2D, sla_EPB and sla_EPJ)
;
; SEE ALSO:
;
; JULDAY, CALDAT
;
; MODIFICATION HISTORY:
; Written, CM, 04 Mar 2002
; Documented, CM, 22 Mar 2002
;
; $Id: jbepoch.pro,v 1.3 2002/03/22 22:02:02 craigm Exp $
;
;-
; Copyright (C) 2002, Craig Markwardt
; This software is provided as is without any warranty whatsoever.
; Permission to use, copy, modify, and distribute modified or
; unmodified copies is granted, provided this copyright and disclaimer
; are included unchanged.
;-
function jbepoch, ep, b=b, j=j, to_day=today, mjd=mjd
if NOT keyword_set(mjd) then offset = 2400000.5d else offset = 0d
if keyword_set(b) then begin
if keyword_set(today) then begin
return, offset + 15019.81352D0 + (ep-1900D0)*365.242198781D0
endif else begin
return, 1900D0 + (ep-15019.81352D0-offset)/365.242198781D0
endelse
endif else if keyword_set(j) then begin
if keyword_set(today) then begin
return, offset + 51544.5D0 + (ep-2000D0)*365.25D0
endif else begin
return, 2000D0 + (ep-51544.5D0-offset)/365.25D0
endelse
endif
message, 'ERROR: you must specify the /B or /J keyword'
end