Loading...
Searching...
No Matches
Interferometric applications

Various tools supporting interferometric applications, such as u, v, w projections of observing stations and delay calculations along a line of sight. More...

## Functions

int | novas_los_to_xyz (const double *los, double lon, double lat, double *xyz)
| Converts a 3D line-of-sight vector (δφ, δθ, δr) to a rectangular equatorial (δx, δy, δz) vector.
int | novas_site_uvw (const novas_timespec *restrict ts, const on_surface *restrict station, const double *restrict geocentric_source, double xp, double yp, enum novas_accuracy accuracy, double *restrict uvw)
| Returns geocentric u,v,w coordinates for a ground-based interferometer station.
int | novas_uvw (const double *restrict station_pos, const double *restrict station_vel, const double *restrict phase_center, double *restrict uvw)
| Returns u,v,w coordinates for a space-based interferometer station.
int | novas_uvw_to_xyz (const double *uvw, double ha, double dec, double *xyz)
| Converts equatorial u,v,w projected (absolute or relative) coordinates to rectangular telescope x,y,z coordinates (in PEF) to for a specified line of sight.
int | novas_xyz_to_los (const double *xyz, double lon, double lat, double *los)
| Converts a 3D rectangular equatorial (δx, δy, δz) vector to a polar (δφ, δθ, δr) vector along a line-of-sight.
int | novas_xyz_to_uvw (const double *xyz, double ha, double dec, double *uvw)
| Converts rectangular telescope x,y,z (absolute or relative) coordinates (in PEF) to an equatorial u,v,w projection for a specified line of sight.

## Detailed Description

Various tools supporting interferometric applications, such as u, v, w projections of observing stations and delay calculations along a line of sight.

## Function Documentation

## novas_los_to_xyz()

int novas_los_to_xyz | ( | const double * | los,
|  | double | lon,
|  | double | lat,
|  | double * | xyz )

Converts a 3D line-of-sight vector (δφ, δθ, δr) to a rectangular equatorial (δx, δy, δz) vector.

Parameters

  | los | [arb.u.] Line-of-sight 3-vector (δφ, δθ, δr).
  | lon | [deg] Line-of-sight longitude.
  | lat | [deg] Line-of-sight latitude.
  [out] | xyz | [arb.u.] Output rectangular equatorial 3-vector (δx, δy, δz), in the same units as the input. It may be the same vector as the input.

Returns
  0 if successful, or else -1 if either vector argument is NULL (errno will be set to EINVAL).

Since
  1.3

Author
  Attila Kovacs

See also
  novas_xyz_to_los(), novas_uvw_to_xyz()

Referenced by novas_uvw_to_xyz(), starvectors(), and transform_cat().

## novas_site_uvw()

int novas_site_uvw | ( | const novas_timespec *restrict | ts,
|  | const on_surface *restrict | station,
|  | const double *restrict | geocentric_source,
|  | double | xp,
|  | double | yp,
|  | enum novas_accuracy | accuracy,
|  | double *restrict | uvw )

Returns geocentric u,v,w coordinates for a ground-based interferometer station.

That is, it returns u,v,w coordinates, for a geodetic station, relative to the geocenter, for a given apparent line-of-sight on the sky, observed at the specified time. The u and v coordinates are the projections of the site in the GCRS direction of the local East and North respectively, as seen from the source, relative to the geocenter, while w is the distance (inverse delay) from the geocenter along the line of sight.

For interferometers, each station is its own specific site, and the array is usually referenced to one of the stations, or to some other reference location (a virtual site). As such, one is typically interested in uvw coordinates relative to the reference position, which can be obtained from the geocentric uvw provided by this method, via simple vector differencing.

NOTES:

1. This method supports down to nanometer precision for sites on Earth or in Low Earth Orbit (LEO), and sub-micron (<μm) precision even at the distance of the Moon. However, because its calculations are based on geocentric positions, the precision degrades with increasing distance from Earth, and may not be suitable for interferometers far from Earth. When precision is a concern, you might use the more generic novas_uvw() instead, with positions (and velocities) of the stations defined relative to the array center – enabling higher precision projections than this function.

Parameters

  | ts | Astrometric time of observation.
  | station | Interferometric station site.
  | geocentric_source | [AU] Apparent true-of-date (TOD) position of a source, as seen from the geocenter at the time of observation.
  | xp | [arcsec] IERS polar offset xp, such as obtained from the IERS bulletins or online service.
  | yp | [arcsec] IERS polar offset yp, such as obtained from the IERS bulletins or online service.
  | accuracy | NOVAS_FULL_ACCYRACY (0) or NOVAS_REDUCED_ACCURACY (1)
  [out] | uvw | [m] output u, v, w coordinates, relative to geocenter, the u, and v coordinates are aligned with the local East and North directions in the GCRS.

Returns
  0 if successful or else -1 if any of the pointer arguments are NULL or if the accuracy is invalid (errno will be set to EINVAL).

Since
  1.6

Author
  Attila Kovacs

See also
  novas_uvw()

References novas_get_time(), novas_site_gcrs_posvel(), NOVAS_TDB, novas_uvw(), and tod_to_gcrs().

## novas_uvw()

int novas_uvw | ( | const double *restrict | station_pos,
|  | const double *restrict | station_vel,
|  | const double *restrict | phase_center,
|  | double *restrict | uvw )

Returns u,v,w coordinates for a space-based interferometer station.

That is, it returns the u,v,w coordinates of this astrometric place (of a station), measured relative to a reference point (array reference), for a given apparent line-of-sight on the sky (source) at the same time as when the station location is defined. The u and v coordinates are the projections of the site in the direction of the local East and North respectively, as seen from the source, relative to the array reference, while w is the distance (inverse delay) from the array reference along the line of sight.

For space-based interferometers, this astrometric place can represent the momentary position of a station, relative to the array reference. As such, the returned uvw coordinates are relative to the array reference.

Parameters

  | station_pos | [AU] 3D position vector of interferometric station, relative to the array reference. It can be defined in any system, as long as the phase center is defined in the same coordinate reference system.
  | station_vel | [AU/day] 3D position vector of interferometric station, relative to the array reference, in the same coordinate reference system as the position. It may be NULL for a station that is not moving relative to the array reference.
  | phase_center | [AU] Apparent position vector of the interferometric phase center (observed source), as seen from the reference location at the time of observation, in the same coordinate reference system, in which the station vectors are defined.
  [out] | uvw | [m] output u, v, w coordinates, relative to reference place. The u, and v coordinates are aligned with the local East and North directions in the system, in which the coordinates were specified.

Returns
  0 if successful or else -1 if the station position or phase center is NULL (errno will be set to EINVAL).

Since
  1.6

Author
  Attila Kovacs

See also
  novas_site_uvw()

References aberration(), dec, NOVAS_AU, novas_xyz_to_los(), ra, and vector2radec().

Referenced by novas_site_uvw().

## novas_uvw_to_xyz()

int novas_uvw_to_xyz | ( | const double * | uvw,
|  | double | ha,
|  | double | dec,
|  | double * | xyz )

Converts equatorial u,v,w projected (absolute or relative) coordinates to rectangular telescope x,y,z coordinates (in PEF) to for a specified line of sight.

u,v,w are Cartesian coordinates, with (u,v) along the local East (R.A.) and North (declination) directions as seen from a direction on the sky (w). As such, they are effectively line-of-sight (LOS) coordinates.

x,y,z are Cartesian coordinates w.r.t the Greenwich meridian in the rotating Pseudo Earth Frame (PEF). The directions are x: long=0, lat=0; y: long=90, lat=0; z: lat=90. To convert thse to ITRS, use wobble() after calling this function. Or, for arcsecond-level precision you might use PEF and ITRS positions interchangeably.

Parameters

  | uvw | [arb.u.] Absolute or relative line of sight coordinates (double[3]).
  | ha | [h] Hourangle (LST - RA) i.e., the difference between the Local (apparent) Sidereal Time and the apparent (true-of-date) Right Ascension of observed source.
  | dec | [deg] Apparent (true-of-date) declination of source.
  [out] | xyz | [arb.u.] Converted x,y,z coordinates (double[3]) in the same unit as uvw, in the Pseudo Earth Frame (PEF). It may be the same vector as the input.

Returns
  0 if successful, or else -1 if either vector argument is NULL (errno will be set to EINVAL)

Since
  1.3

Author
  Attila Kovacs

See also
  novas_xyz_to_uvw(), wobble()

References dec, and novas_los_to_xyz().

## novas_xyz_to_los()

int novas_xyz_to_los | ( | const double * | xyz,
|  | double | lon,
|  | double | lat,
|  | double * | los )

Converts a 3D rectangular equatorial (δx, δy, δz) vector to a polar (δφ, δθ, δr) vector along a line-of-sight.

Parameters

  | xyz | [arb.u.] Rectangular equatorial 3-vector (δx, δy, δz).
  | lon | [deg] Line-of-sight longitude.
  | lat | [deg] Line-of-sight latitude.
  [out] | los | [arb.u.] Output line-of-sight 3-vector (δφ, δθ, δr), in the same units as the input. It may be the same vector as the input.

Returns
  0 if successful, or else -1 if either vector argument is NULL (errno will be set to EINVAL).

Since
  1.3

Author
  Attila Kovacs

See also
  novas_los_to_xyz(), novas_xyz_to_uvw()

Referenced by novas_uvw(), novas_xyz_to_uvw(), and transform_cat().

## novas_xyz_to_uvw()

int novas_xyz_to_uvw | ( | const double * | xyz,
|  | double | ha,
|  | double | dec,
|  | double * | uvw )

Converts rectangular telescope x,y,z (absolute or relative) coordinates (in PEF) to an equatorial u,v,w projection for a specified line of sight.

x,y,z are Cartesian coordinates w.r.t the Greenwich meridian, in the PEF frame. The directions are x: long=0, lat=0; y: long=90, lat=0; z: lat=90. To calculate PEF from ITRS, use wobble() first, before calling this function. Or, for arcsecond-level precision you might use PEF and ITRS positions interchangeably.

u,v,w are Cartesian coordinates, with (u,v) along the local East (R.A.) and North (declination) directions as seen from a direction on the sky (w). As such, they are effectively ITRS-based line-of-sight (LOS) coordinates.

Alternatively, use novas_site_uvw() instead to convert a geodetic (ITRS) site location more directly to a u, v, w projection.

Parameters

  | xyz | [arb.u.] Absolute or relative x,y,z coordinates (double[3]) in the Pseudo Earth Frame (PEF).
  | ha | [h] Hourangle (LST - RA) i.e., the difference between the Local (apparent) Sidereal Time and the apparent (true-of-date) Right Ascension of observed source, from the input location.
  | dec | [deg] Apparent (true-of-date) declination of source at the input location
  [out] | uvw | [arb.u.] Converted u,v,w coordinates (double[3]), in same units as the input xyz. It may be the same vector as the input.

Returns
  0 if successful, or else -1 if either vector argument is NULL (errno will be set to EINVAL)

Since
  1.3

Author
  Attila Kovacs

See also
  novas_site_uvw(), novas_uvw_to_xyz(), wobble()

References dec, and novas_xyz_to_los().