mirror of
https://github.com/eddyem/BTA_lib.git
synced 2026-03-21 17:21:03 +03:00
copy
This commit is contained in:
193
slalib/aoppa.f
Normal file
193
slalib/aoppa.f
Normal file
@@ -0,0 +1,193 @@
|
||||
SUBROUTINE sla_AOPPA ( DATE, DUT, ELONGM, PHIM, HM,
|
||||
: XP, YP, TDK, PMB, RH, WL, TLR, AOPRMS )
|
||||
*+
|
||||
* - - - - - -
|
||||
* A O P P A
|
||||
* - - - - - -
|
||||
*
|
||||
* Precompute apparent to observed place parameters required by
|
||||
* sla_AOPQK and sla_OAPQK.
|
||||
*
|
||||
* Given:
|
||||
* DATE d UTC date/time (modified Julian Date, JD-2400000.5)
|
||||
* DUT d delta UT: UT1-UTC (UTC seconds)
|
||||
* ELONGM d mean longitude of the observer (radians, east +ve)
|
||||
* PHIM d mean geodetic latitude of the observer (radians)
|
||||
* HM d observer's height above sea level (metres)
|
||||
* XP d polar motion x-coordinate (radians)
|
||||
* YP d polar motion y-coordinate (radians)
|
||||
* TDK d local ambient temperature (K; std=273.15D0)
|
||||
* PMB d local atmospheric pressure (mb; std=1013.25D0)
|
||||
* RH d local relative humidity (in the range 0D0-1D0)
|
||||
* WL d effective wavelength (micron, e.g. 0.55D0)
|
||||
* TLR d tropospheric lapse rate (K/metre, e.g. 0.0065D0)
|
||||
*
|
||||
* Returned:
|
||||
* AOPRMS d(14) star-independent apparent-to-observed parameters:
|
||||
*
|
||||
* (1) geodetic latitude (radians)
|
||||
* (2,3) sine and cosine of geodetic latitude
|
||||
* (4) magnitude of diurnal aberration vector
|
||||
* (5) height (HM)
|
||||
* (6) ambient temperature (TDK)
|
||||
* (7) pressure (PMB)
|
||||
* (8) relative humidity (RH)
|
||||
* (9) wavelength (WL)
|
||||
* (10) lapse rate (TLR)
|
||||
* (11,12) refraction constants A and B (radians)
|
||||
* (13) longitude + eqn of equinoxes + sidereal DUT (radians)
|
||||
* (14) local apparent sidereal time (radians)
|
||||
*
|
||||
* Notes:
|
||||
*
|
||||
* 1) It is advisable to take great care with units, as even
|
||||
* unlikely values of the input parameters are accepted and
|
||||
* processed in accordance with the models used.
|
||||
*
|
||||
* 2) The DATE argument is UTC expressed as an MJD. This is,
|
||||
* strictly speaking, improper, because of leap seconds. However,
|
||||
* as long as the delta UT and the UTC are consistent there
|
||||
* are no difficulties, except during a leap second. In this
|
||||
* case, the start of the 61st second of the final minute should
|
||||
* begin a new MJD day and the old pre-leap delta UT should
|
||||
* continue to be used. As the 61st second completes, the MJD
|
||||
* should revert to the start of the day as, simultaneously,
|
||||
* the delta UTC changes by one second to its post-leap new value.
|
||||
*
|
||||
* 3) The delta UT (UT1-UTC) is tabulated in IERS circulars and
|
||||
* elsewhere. It increases by exactly one second at the end of
|
||||
* each UTC leap second, introduced in order to keep delta UT
|
||||
* within +/- 0.9 seconds.
|
||||
*
|
||||
* 4) IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.
|
||||
* The longitude required by the present routine is east-positive,
|
||||
* in accordance with geographical convention (and right-handed).
|
||||
* In particular, note that the longitudes returned by the
|
||||
* sla_OBS routine are west-positive, following astronomical
|
||||
* usage, and must be reversed in sign before use in the present
|
||||
* routine.
|
||||
*
|
||||
* 5) The polar coordinates XP,YP can be obtained from IERS
|
||||
* circulars and equivalent publications. The maximum amplitude
|
||||
* is about 0.3 arcseconds. If XP,YP values are unavailable,
|
||||
* use XP=YP=0D0. See page B60 of the 1988 Astronomical Almanac
|
||||
* for a definition of the two angles.
|
||||
*
|
||||
* 6) The height above sea level of the observing station, HM,
|
||||
* can be obtained from the Astronomical Almanac (Section J
|
||||
* in the 1988 edition), or via the routine sla_OBS. If P,
|
||||
* the pressure in millibars, is available, an adequate
|
||||
* estimate of HM can be obtained from the expression
|
||||
*
|
||||
* HM ~ -29.3D0*TSL*LOG(P/1013.25D0).
|
||||
*
|
||||
* where TSL is the approximate sea-level air temperature in K
|
||||
* (see Astrophysical Quantities, C.W.Allen, 3rd edition,
|
||||
* section 52). Similarly, if the pressure P is not known,
|
||||
* it can be estimated from the height of the observing
|
||||
* station, HM, as follows:
|
||||
*
|
||||
* P ~ 1013.25D0*EXP(-HM/(29.3D0*TSL)).
|
||||
*
|
||||
* Note, however, that the refraction is nearly proportional to the
|
||||
* pressure and that an accurate P value is important for precise
|
||||
* work.
|
||||
*
|
||||
* 7) Repeated, computationally-expensive, calls to sla_AOPPA for
|
||||
* times that are very close together can be avoided by calling
|
||||
* sla_AOPPA just once and then using sla_AOPPAT for the subsequent
|
||||
* times. Fresh calls to sla_AOPPA will be needed only when
|
||||
* changes in the precession have grown to unacceptable levels or
|
||||
* when anything affecting the refraction has changed.
|
||||
*
|
||||
* Called: sla_GEOC, sla_REFCO, sla_EQEQX, sla_AOPPAT
|
||||
*
|
||||
* Last revision: 2 December 2005
|
||||
*
|
||||
* Copyright P.T.Wallace. All rights reserved.
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA
|
||||
*
|
||||
*-
|
||||
|
||||
IMPLICIT NONE
|
||||
|
||||
DOUBLE PRECISION DATE,DUT,ELONGM,PHIM,HM,XP,YP,TDK,PMB,
|
||||
: RH,WL,TLR,AOPRMS(14)
|
||||
|
||||
DOUBLE PRECISION sla_EQEQX
|
||||
|
||||
* 2Pi
|
||||
DOUBLE PRECISION D2PI
|
||||
PARAMETER (D2PI=6.283185307179586476925287D0)
|
||||
|
||||
* Seconds of time to radians
|
||||
DOUBLE PRECISION S2R
|
||||
PARAMETER (S2R=7.272205216643039903848712D-5)
|
||||
|
||||
* Speed of light (AU per day)
|
||||
DOUBLE PRECISION C
|
||||
PARAMETER (C=173.14463331D0)
|
||||
|
||||
* Ratio between solar and sidereal time
|
||||
DOUBLE PRECISION SOLSID
|
||||
PARAMETER (SOLSID=1.00273790935D0)
|
||||
|
||||
DOUBLE PRECISION CPHIM,XT,YT,ZT,XC,YC,ZC,ELONG,PHI,UAU,VAU
|
||||
|
||||
|
||||
|
||||
* Observer's location corrected for polar motion
|
||||
CPHIM = COS(PHIM)
|
||||
XT = COS(ELONGM)*CPHIM
|
||||
YT = SIN(ELONGM)*CPHIM
|
||||
ZT = SIN(PHIM)
|
||||
XC = XT-XP*ZT
|
||||
YC = YT+YP*ZT
|
||||
ZC = XP*XT-YP*YT+ZT
|
||||
IF (XC.EQ.0D0.AND.YC.EQ.0D0) THEN
|
||||
ELONG = 0D0
|
||||
ELSE
|
||||
ELONG = ATAN2(YC,XC)
|
||||
END IF
|
||||
PHI = ATAN2(ZC,SQRT(XC*XC+YC*YC))
|
||||
AOPRMS(1) = PHI
|
||||
AOPRMS(2) = SIN(PHI)
|
||||
AOPRMS(3) = COS(PHI)
|
||||
|
||||
* Magnitude of the diurnal aberration vector
|
||||
CALL sla_GEOC(PHI,HM,UAU,VAU)
|
||||
AOPRMS(4) = D2PI*UAU*SOLSID/C
|
||||
|
||||
* Copy the refraction parameters and compute the A & B constants
|
||||
AOPRMS(5) = HM
|
||||
AOPRMS(6) = TDK
|
||||
AOPRMS(7) = PMB
|
||||
AOPRMS(8) = RH
|
||||
AOPRMS(9) = WL
|
||||
AOPRMS(10) = TLR
|
||||
CALL sla_REFCO(HM,TDK,PMB,RH,WL,PHI,TLR,1D-10,
|
||||
: AOPRMS(11),AOPRMS(12))
|
||||
|
||||
* Longitude + equation of the equinoxes + sidereal equivalent of DUT
|
||||
* (ignoring change in equation of the equinoxes between UTC and TDB)
|
||||
AOPRMS(13) = ELONG+sla_EQEQX(DATE)+DUT*SOLSID*S2R
|
||||
|
||||
* Sidereal time
|
||||
CALL sla_AOPPAT(DATE,AOPRMS)
|
||||
|
||||
END
|
||||
Reference in New Issue
Block a user