Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

141 lines (128 sloc) 5.348 kb
SUBROUTINE sla_ATMDSP (TDK, PMB, RH, WL1, A1, B1, WL2, A2, B2)
*+
* - - - - - - -
* A T M D S P
* - - - - - - -
*
* Apply atmospheric-dispersion adjustments to refraction coefficients.
*
* Given:
* TDK d ambient temperature, K
* PMB d ambient pressure, millibars
* RH d ambient relative humidity, 0-1
* WL1 d reference wavelength, micrometre (0.4D0 recommended)
* A1 d refraction coefficient A for wavelength WL1 (radians)
* B1 d refraction coefficient B for wavelength WL1 (radians)
* WL2 d wavelength for which adjusted A,B required
*
* Returned:
* A2 d refraction coefficient A for wavelength WL2 (radians)
* B2 d refraction coefficient B for wavelength WL2 (radians)
*
* Notes:
*
* 1 To use this routine, first call sla_REFCO specifying WL1 as the
* wavelength. This yields refraction coefficients A1,B1, correct
* for that wavelength. Subsequently, calls to sla_ATMDSP specifying
* different wavelengths will produce new, slightly adjusted
* refraction coefficients which apply to the specified wavelength.
*
* 2 Most of the atmospheric dispersion happens between 0.7 micrometre
* and the UV atmospheric cutoff, and the effect increases strongly
* towards the UV end. For this reason a blue reference wavelength
* is recommended, for example 0.4 micrometres.
*
* 3 The accuracy, for this set of conditions:
*
* height above sea level 2000 m
* latitude 29 deg
* pressure 793 mb
* temperature 17 degC
* humidity 50%
* lapse rate 0.0065 degC/m
* reference wavelength 0.4 micrometre
* star elevation 15 deg
*
* is about 2.5 mas RMS between 0.3 and 1.0 micrometres, and stays
* within 4 mas for the whole range longward of 0.3 micrometres
* (compared with a total dispersion from 0.3 to 20.0 micrometres
* of about 11 arcsec). These errors are typical for ordinary
* conditions and the given elevation; in extreme conditions values
* a few times this size may occur, while at higher elevations the
* errors become much smaller.
*
* 4 If either wavelength exceeds 100 micrometres, the radio case
* is assumed and the returned refraction coefficients are the
* same as the given ones. Note that radio refraction coefficients
* cannot be turned into optical values using this routine, nor
* vice versa.
*
* 5 The algorithm consists of calculation of the refractivity of the
* air at the observer for the two wavelengths, using the methods
* of the sla_REFRO routine, and then scaling of the two refraction
* coefficients according to classical refraction theory. This
* amounts to scaling the A coefficient in proportion to (n-1) and
* the B coefficient almost in the same ratio (see R.M.Green,
* "Spherical Astronomy", Cambridge University Press, 1985).
*
* 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 TDK,PMB,RH,WL1,A1,B1,WL2,A2,B2
DOUBLE PRECISION F,TDKOK,PMBOK,RHOK,
: PSAT,PWO,W1,WLOK,WLSQ,W2,DN1,DN2
* Check for radio wavelengths
IF (WL1.GT.100D0.OR.WL2.GT.100D0) THEN
* Radio: no dispersion
A2 = A1
B2 = B1
ELSE
* Optical: keep arguments within safe bounds
TDKOK = MIN(MAX(TDK,100D0),500D0)
PMBOK = MIN(MAX(PMB,0D0),10000D0)
RHOK = MIN(MAX(RH,0D0),1D0)
* Atmosphere parameters at the observer
PSAT = 10D0**(-8.7115D0+0.03477D0*TDKOK)
PWO = RHOK*PSAT
W1 = 11.2684D-6*PWO
* Refractivity at the observer for first wavelength
WLOK = MAX(WL1,0.1D0)
WLSQ = WLOK*WLOK
W2 = 77.5317D-6+(0.43909D-6+0.00367D-6/WLSQ)/WLSQ
DN1 = (W2*PMBOK-W1)/TDKOK
* Refractivity at the observer for second wavelength
WLOK = MAX(WL2,0.1D0)
WLSQ = WLOK*WLOK
W2 = 77.5317D-6+(0.43909D-6+0.00367D-6/WLSQ)/WLSQ
DN2 = (W2*PMBOK-W1)/TDKOK
* Scale the refraction coefficients (see Green 4.31, p93)
IF (DN1.NE.0D0) THEN
F = DN2/DN1
A2 = A1*F
B2 = B1*F
IF (DN1.NE.A1) B2=B2*(1D0+DN1*(DN1-DN2)/(2D0*(DN1-A1)))
ELSE
A2 = A1
B2 = B1
END IF
END IF
END
Jump to Line
Something went wrong with that request. Please try again.