aboutsummaryrefslogtreecommitdiff
path: root/src/slalib/zd.f
blob: f3dd34fd089f87732133c2f4a0d3bb4978e52415 (plain) (blame)
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
DOUBLE PRECISION FUNCTION sla_ZD (HA, DEC, PHI)
*+
*     - - -
*      Z D
*     - - -
*
*  HA, Dec to Zenith Distance (double precision)
*
*  Given:
*     HA     d     Hour Angle in radians
*     DEC    d     declination in radians
*     PHI    d     observatory latitude in radians
*
*  The result is in the range 0 to pi.
*
*  Notes:
*
*  1)  The latitude must be geodetic.  In critical applications,
*      corrections for polar motion should be applied.
*
*  2)  In some applications it will be important to specify the
*      correct type of hour angle and declination in order to
*      produce the required type of zenith distance.  In particular,
*      it may be important to distinguish between the zenith distance
*      as affected by refraction, which would require the "observed"
*      HA,Dec, and the zenith distance in vacuo, which would require
*      the "topocentric" HA,Dec.  If the effects of diurnal aberration
*      can be neglected, the "apparent" HA,Dec may be used instead of
*      the topocentric HA,Dec.
*
*  3)  No range checking of arguments is done.
*
*  4)  In applications which involve many zenith distance calculations,
*      rather than calling the present routine it will be more efficient
*      to use inline code, having previously computed fixed terms such
*      as sine and cosine of latitude, and perhaps sine and cosine of
*      declination.
*
*  P.T.Wallace   Starlink   3 April 1994
*
*  Copyright (C) 1995 Rutherford Appleton Laboratory
*-

      IMPLICIT NONE

      DOUBLE PRECISION HA,DEC,PHI

      DOUBLE PRECISION SH,CH,SD,CD,SP,CP,X,Y,Z


      SH=SIN(HA)
      CH=COS(HA)
      SD=SIN(DEC)
      CD=COS(DEC)
      SP=SIN(PHI)
      CP=COS(PHI)
      X=CH*CD*SP-SD*CP
      Y=SH*CD
      Z=CH*CD*CP+SD*SP
      sla_ZD=ATAN2(SQRT(X*X+Y*Y),Z)

      END