aboutsummaryrefslogtreecommitdiff
path: root/math/slalib/prec.f
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /math/slalib/prec.f
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'math/slalib/prec.f')
-rw-r--r--math/slalib/prec.f97
1 files changed, 97 insertions, 0 deletions
diff --git a/math/slalib/prec.f b/math/slalib/prec.f
new file mode 100644
index 00000000..e8eadce7
--- /dev/null
+++ b/math/slalib/prec.f
@@ -0,0 +1,97 @@
+ SUBROUTINE slPREC (EP0, EP1, RMATP)
+*+
+* - - - - -
+* P R E C
+* - - - - -
+*
+* Form the matrix of precession between two epochs (IAU 1976, FK5)
+* (double precision)
+*
+* Given:
+* EP0 dp beginning epoch
+* EP1 dp ending epoch
+*
+* Returned:
+* RMATP dp(3,3) precession matrix
+*
+* Notes:
+*
+* 1) The epochs are TDB (loosely ET) Julian epochs.
+*
+* 2) The matrix is in the sense V(EP1) = RMATP * V(EP0)
+*
+* 3) Though the matrix method itself is rigorous, the precession
+* angles are expressed through canonical polynomials which are
+* valid only for a limited time span. There are also known
+* errors in the IAU precession rate. The absolute accuracy
+* of the present formulation is better than 0.1 arcsec from
+* 1960AD to 2040AD, better than 1 arcsec from 1640AD to 2360AD,
+* and remains below 3 arcsec for the whole of the period
+* 500BC to 3000AD. The errors exceed 10 arcsec outside the
+* range 1200BC to 3900AD, exceed 100 arcsec outside 4200BC to
+* 5600AD and exceed 1000 arcsec outside 6800BC to 8200AD.
+* The SLALIB routine slPREL implements a more elaborate
+* model which is suitable for problems spanning several
+* thousand years.
+*
+* References:
+* Lieske,J.H., 1979. Astron.Astrophys.,73,282.
+* equations (6) & (7), p283.
+* Kaplan,G.H., 1981. USNO circular no. 163, pA2.
+*
+* Called: slDEUL
+*
+* P.T.Wallace Starlink 23 August 1996
+*
+* Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+* License:
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program (see SLA_CONDITIONS); if not, write to the
+* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+* Boston, MA 02110-1301 USA
+*
+* Copyright (C) 1995 Association of Universities for Research in Astronomy Inc.
+*-
+
+ IMPLICIT NONE
+
+ DOUBLE PRECISION EP0,EP1,RMATP(3,3)
+
+* Arc seconds to radians
+ DOUBLE PRECISION AS2R
+ PARAMETER (AS2R=0.484813681109535994D-5)
+
+ DOUBLE PRECISION T0,T,TAS2R,W,ZETA,Z,THETA
+
+
+
+* Interval between basic epoch J2000.0 and beginning epoch (JC)
+ T0 = (EP0-2000D0)/100D0
+
+* Interval over which precession required (JC)
+ T = (EP1-EP0)/100D0
+
+* Euler angles
+ TAS2R = T*AS2R
+ W = 2306.2181D0+(1.39656D0-0.000139D0*T0)*T0
+
+ ZETA = (W+((0.30188D0-0.000344D0*T0)+0.017998D0*T)*T)*TAS2R
+ Z = (W+((1.09468D0+0.000066D0*T0)+0.018203D0*T)*T)*TAS2R
+ THETA = ((2004.3109D0+(-0.85330D0-0.000217D0*T0)*T0)
+ : +((-0.42665D0-0.000217D0*T0)-0.041833D0*T)*T)*TAS2R
+
+* Rotation matrix
+ CALL slDEUL('ZYZ',-ZETA,THETA,-Z,RMATP)
+
+ END