SLA_REFV

Apply Refraction to Vector

ACTION:
Adjust an unrefracted Cartesian vector to include the effect of atmospheric refraction, using the simple Δζ = a tan ζ + b tan 3ζ model.
CALL:
CALL sla_REFV (VU, REFA, REFB, VR)
GIVEN:

VU

D

unrefracted position of the source ([Az, El] 3-vector)

REFA

D

tan ζ coefficient (radians)

REFB

D

tan 3ζ coefficient (radians)


RETURNED:

VR

D

refracted position of the source ([Az, El] 3-vector)


NOTES:
(1)
This routine applies the adjustment for refraction in the opposite sense to the usual one – it takes an unrefracted (in vacuo) position and produces an observed (refracted) position, whereas the Δζ = a tan ζ + b tan 3ζ model strictly applies to the case where an observed position is to have the refraction removed. The unrefracted to refracted case is harder, and requires an inverted form of the text-book refraction models; the algorithm used here is equivalent to one iteration of the Newton-Raphson method applied to the above formula.
(2)
Though optimized for speed rather than precision, the present routine achieves consistency with the refracted-to-unrefracted Δζ = a tan ζ + b tan 3ζ model at better than 1 microarcsecond within 30 of the zenith and remains within 1 milliarcsecond to ζ = 70. The inherent accuracy of the model is, of course, far worse than this – see the documentation for sla_REFCO for more information.
(3)
At low elevations (below about 3) the refraction correction is held back to prevent arithmetic problems and wildly wrong results. For optical/IR wavelengths, over a wide range of observer heights and corresponding temperatures and pressures, the following levels of accuracy (worst case) are achieved, relative to numerical integration through a model atmosphere:
ζobs error
80 ′′07
81 ′′13
82 ′′25
83 5
84 10
85 20
86 55
87 160
88 360
89 640
90 1100
91 1700 < high-altitude
92 2600 < sites only
The results for radio are slightly worse over most of the range, becoming significantly worse below ζ = 88 and unusable beyond ζ = 90.
(4)
See also the routine sla_REFZ, which performs the adjustment to the zenith distance rather than in [x, y, z]. The present routine is faster than sla_REFZ and, except very low down, is equally accurate for all practical purposes. However, beyond about ζ = 84 sla_REFZ should be used, and for the utmost accuracy iterative use of sla_REFRO should be considered.