AB Subroutine

public subroutine AB(pnat, v, s, bm1, ppr)

Apply aberration to transform natural direction into proper direction.

Status: support routine.

Notes

  1. The algorithm is based on Expr. (7.40) in the Explanatory Supplement (Urban & Seidelmann 2013), but with the following changes:

    • Rigorous rather than approximate normalization is applied.

    • The gravitational potential term from Expr. (7) in Klioner (2003) is added, taking into account only the Sun's contribution. This has a maximum effect of about 0.4 microarcsecond.

  2. In almost all cases, the maximum accuracy will be limited by the supplied velocity. For example, if the SOFA EPV00 routine is used, errors of up to 5 microarcseconds could occur.

References

  • Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to the Astronomical Almanac, 3rd ed., University Science Books (2013).

  • Klioner, Sergei A., "A practical relativistic model for micro- arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003).

History

  • IAU SOFA revision: 2013 August 31

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: pnat

natural direction to the source (unit vector)

real(kind=wp), intent(in), dimension(3):: v

observer barycentric velocity in units of c

real(kind=wp), intent(in) :: s

distance between the Sun and the observer (au)

real(kind=wp), intent(in) :: bm1

sqrt(1-|v|^2): reciprocal of Lorenz factor

real(kind=wp), intent(out), dimension(3):: ppr

proper direction to source (unit vector)


Calls

proc~~ab~~CallsGraph proc~ab AB proc~pdp PDP proc~ab->proc~pdp

Called by

proc~~ab~~CalledByGraph proc~ab AB proc~atciq ATCIQ proc~atciq->proc~ab proc~aticqn ATICQN proc~aticqn->proc~ab proc~atciqn ATCIQN proc~atciqn->proc~ab proc~aticq ATICQ proc~aticq->proc~ab proc~atciqz ATCIQZ proc~atciqz->proc~ab proc~atci13 ATCI13 proc~atci13->proc~atciq proc~atco13 ATCO13 proc~atco13->proc~atciq proc~atic13 ATIC13 proc~atic13->proc~aticq proc~atoc13 ATOC13 proc~atoc13->proc~aticq

Contents

Source Code

AB

Source Code

    subroutine AB ( pnat, v, s, bm1, ppr )

    implicit none

    real(wp),dimension(3),intent(in) :: pnat !! natural direction to the source (unit vector)
    real(wp),dimension(3),intent(in) :: v !! observer barycentric velocity in units of c
    real(wp),intent(in) :: s !! distance between the Sun and the observer (au)
    real(wp),intent(in) :: bm1 !! sqrt(1-|v|^2): reciprocal of Lorenz factor
    real(wp),dimension(3),intent(out) :: ppr !! proper direction to source (unit vector)

    !  Schwarzschild radius of the Sun (au)
    !  = 2 * 1.32712440041e20 / (2.99792458e8)^2 / 1.49597870700e11
    real(wp),parameter :: srs = 1.97412574336e-08_wp

    integer :: i
    real(wp) :: pdv, w1, w2, r2, w, p(3), r

    call PDP ( pnat, v, pdv )
    w1 = 1.0_wp + pdv/(1.0_wp+bm1)
    w2 = srs / s
    r2 = 0.0_wp
    do i=1,3
       w = pnat(i)*bm1 + w1*v(i) + w2*(v(i)-pdv*pnat(i))
       p(i) = w
       r2 = r2 + w*w
    end do
    r = sqrt ( r2 )
    do i=1,3
       ppr(i) = p(i) / r
    end do

    end subroutine AB