6.11.  Epoch propagation #

6.11.1. 6-Parameter Epoch Propagation
6.11.2. Epoch Propagation of Positions Only

6.11.1. 6-Parameter Epoch Propagation #

double precision[6] epoch_prop(pos,  
 parallax,  
 pm_long,  
 pm_lat,  
 radial_velocity,  
 delta_t); 
spoint pos;
double precision parallax;
double precision pm_long;
double precision pm_lat;
double precision radial_velocity;
double precision delta_t;
 

Propagates a spherical phase vector in time (in particular, applies proper motion to positions)

Following both pg_sphere and, where missing, astronomical conventions makes units somewhat eclectic here; pm_long and pm_lat need to be in rad/yr, whereas parallax is in mas, and radial_velocity in km/s. The time difference must be in (Julian) years.

This function returns a 6-array of [long, lat, parallax, pm_long, pm_lat, radial_velocity] of the corresponding values delta_t years after the reference epoch for the original position. As in the function arguments, long and lat are in rad, pm_lon and pm_lat are in rad/yr, parallax is in mas, and radial_velocity is in km/s. If you are only interested in the position, consider the epoch_prop_pos functions below that have a somewhat less contorted signature.

It is an error to have either pos or delta_t NULL. For all other arguments, NULLs are turned into 0s, except for parallax, where some very small default is put in. Whatever is NULL on the input is NULL on the output. In addition, we null out a non-NULL input on one component of the proper motion if the other component is NULL, and we null out the radial velocity if the parallax is missing, as it would be horribly off with the propagation algorithm we use here.

This uses the rigorous method derived in "The Hipparcos and Tycho Catalogues", ESA Special Publication 1200 (1997), p 94f. It does not take into account relativistic effects, and it also does not account for secular aberration.

Example 6.25. Propagating Barnard's star into the past

SELECT
   to_char(DEGREES(tp[1]), '999D9999999999'),
   to_char(DEGREES(tp[2]), '999D9999999999'),
   to_char(tp[3], '999D999'),
   to_char(DEGREES(tp[4])*3.6e6, '999D999'),
   to_char(DEGREES(tp[5])*3.6e6, '99999D999'),
   to_char(tp[6], '999D999')
FROM (
  SELECT epoch_prop(
    spoint(radians(269.45207695), radians(4.693364966)), 546.9759,
    RADIANS(-801.551/3.6e6), RADIANS(10362/3.6e6), -110,
               -100) AS tp) AS q;
     to_char     |     to_char     | to_char  | to_char  |  to_char   | to_char
-----------------+-----------------+----------+----------+------------+----------
  269.4742714391 |    4.4072939987 |  543.624 | -791.442 |  10235.412 | -110.450
       

6.11.2. Epoch Propagation of Positions Only #

spoint epoch_prop_pos(pos,  
 parallax,  
 pm_long,  
 pm_lat,  
 radial_velocity,  
 delta_t); 
spoint pos;
double precision parallax;
double precision pm_long;
double precision pm_lat;
double precision radial_velocity;
double precision delta_t;
 
spoint epoch_prop_pos(pos,  
 pm_long,  
 pm_lat,  
 delta_t); 
spoint pos;
double precision pm_long;
double precision pm_lat;
double precision delta_t;
 

These are simplified versions of epoch_prop returning only spoints; the propagated values for the other coordinates are discarded (but still internallay computed; these functions do not run any faster than epoch_prop itself).

As with epoch_prop itself, missing values (except for pos and delta_t) are substituted by 0 (or a very small value in the case of parallax).

Example 6.26. Barnard's star, position and proper motion

SELECT epoch_prop_pos(
  spoint(radians(269.45207695), radians(4.693364966)),
  RADIANS(-801.551/3.6e6), RADIANS(10362/3.6e6),
  20) AS tp;
                   tp
-----------------------------------------
 (4.70274793061952 , 0.0829193989380876)