source: trunk/FACT++/pal/palAirmas.c@ 20063

Last change on this file since 20063 was 18347, checked in by tbretz, 9 years ago
File size: 3.0 KB
Line 
1/*
2*+
3* Name:
4* palAirmas
5
6* Purpose:
7* Air mass at given zenith distance
8
9* Language:
10* Starlink ANSI C
11
12* Type of Module:
13* Library routine
14
15* Invocation:
16* double palAirmas( double zd );
17
18* Arguments:
19* zd = double (Given)
20* Observed zenith distance (radians)
21
22* Description:
23* Calculates the airmass at the observed zenith distance.
24
25* Authors:
26* PTW: Patrick Wallace (STFC)
27* TIMJ: Tim Jenness (JAC, Hawaii)
28* {enter_new_authors_here}
29
30* Notes:
31* - The "observed" zenith distance referred to above means "as
32* affected by refraction".
33* - Uses Hardie's (1962) polynomial fit to Bemporad's data for
34* the relative air mass, X, in units of thickness at the zenith
35* as tabulated by Schoenberg (1929). This is adequate for all
36* normal needs as it is accurate to better than 0.1% up to X =
37* 6.8 and better than 1% up to X = 10. Bemporad's tabulated
38* values are unlikely to be trustworthy to such accuracy
39* because of variations in density, pressure and other
40* conditions in the atmosphere from those assumed in his work.
41* - The sign of the ZD is ignored.
42* - At zenith distances greater than about ZD = 87 degrees the
43* air mass is held constant to avoid arithmetic overflows.
44
45* See Also:
46* - Hardie, R.H., 1962, in "Astronomical Techniques"
47* ed. W.A. Hiltner, University of Chicago Press, p180.
48* - Schoenberg, E., 1929, Hdb. d. Ap.,
49* Berlin, Julius Springer, 2, 268.
50
51* History:
52* 2012-03-02 (TIMJ):
53* Initial version from the SLA/F version including documentation.
54* Adapted with permission from the Fortran SLALIB library.
55* {enter_further_changes_here}
56
57* Copyright:
58* Copyright (C) 1999 Rutherford Appleton Laboratory.
59* Copyright (C) 2012 Science and Technology Facilities Council.
60* All Rights Reserved.
61
62* Licence:
63* This program is free software; you can redistribute it and/or
64* modify it under the terms of the GNU General Public License as
65* published by the Free Software Foundation; either version 3 of
66* the License, or (at your option) any later version.
67*
68* This program is distributed in the hope that it will be
69* useful, but WITHOUT ANY WARRANTY; without even the implied
70* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
71* PURPOSE. See the GNU General Public License for more details.
72*
73* You should have received a copy of the GNU General Public License
74* along with this program; if not, write to the Free Software
75* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
76* MA 02110-1301, USA.
77
78* Bugs:
79* {note_any_bugs_here}
80*-
81*/
82
83#include "pal.h"
84#include "palmac.h"
85
86double palAirmas ( double zd ) {
87 double seczm1;
88 double airmass;
89
90 /* Have maximum zenith distance of 87 deg */
91 const double MAXZD = 87.0 * PAL__DD2R;
92
93 zd = fabs(zd);
94 zd = ( zd > MAXZD ? MAXZD : zd );
95
96 seczm1 = (1.0 / cos(zd)) - 1.0;
97 airmass = 1.0 + seczm1*(0.9981833 - seczm1*(0.002875 + 0.0008083*seczm1));
98 return airmass;
99}
Note: See TracBrowser for help on using the repository browser.