Loading...
Searching...
No Matches
nutation.c File Reference

SuperNOVAS implementations for the IAU2000 nutation series calculations, with varying trade-offs between computational cost and precision. More...

## Functions

int | iau2000a (double jd_tt_high, double jd_tt_low, double *restrict dpsi, double *restrict deps)
| Computes the IAU 2000A high-precision nutation series for the specified date, to 0.1 μas accuracy.
int | iau2000b (double jd_tt_high, double jd_tt_low, double *restrict dpsi, double *restrict deps)
| Computes the forced nutation of the non-rigid Earth based at reduced precision.
int | nu2000k (double jd_tt_high, double jd_tt_low, double *restrict dpsi, double *restrict deps)
int | nutation_angles (double t, enum novas_accuracy accuracy, double *restrict dpsi, double *restrict deps)
| Returns the IAU2000 / 2006 values for nutation in longitude and nutation in obliquity for a given TDB Julian date and the desired level of accuracy.

## Detailed Description

SuperNOVAS implementations for the IAU2000 nutation series calculations, with varying trade-offs between computational cost and precision.

It provides support for both the IAU 2000A, a truncated version with ~1 mas precision in the current epoch, and a NOVAS-specific reduced precision series with intermediate accuracy.

Based on the NOVAS C Edition, Version 3.1:

U. S. Naval Observatory
Astronomical Applications Dept.
Washington, DC
http://www.usno.navy.mil/USNO/astronomical-applications

Author
  Attila Kovacs and G. Kaplan

See also
  equator.c, earth.c, frames.c

## Function Documentation

## iau2000a()

int iau2000a | ( | double | jd_tt_high,
|  | double | jd_tt_low,
|  | double *restrict | dpsi,
|  | double *restrict | deps )

Computes the IAU 2000A high-precision nutation series for the specified date, to 0.1 μas accuracy.

It is rather expensive computationally.

NOTES:

1. As of SuperNOVAS v1.4.2, this function has been modified to replace the original IAU2000A model coefficients with the IAU2006 (a.k.a. IAU2000A R06) model coefficients, to provide an updated nutation model, which is dynamically consistent with the IAU2006 (P03) precession model of Capitaine et al. 2003. This is now the same model with respect to which the IERS Earth orientation parameters are computed and published.

REFERENCES:

1. IERS Conventions (2003), Chapter 5.
2. Simon et al. (1994) Astronomy and Astrophysics 282, 663-683, esp. Sections 3.4-3.5.
3. Capitaine, N. et al. (2003), Astronomy And Astrophysics 412, pp. 567-586.
4. https://hpiers.obspm.fr/eop-pc/models/nutations/nut.html

Parameters

  | jd_tt_high | [day] High-order part of the Terrestrial Time (TT) based Julian date. Typically it may be the integer part of a split date for the highest precision, or the full date for normal (reduced) precision.
  | jd_tt_low | [day] Low-order part of the Terrestrial Time (TT) based Julian date. Typically, it may be the fractional part of a split date for the highest precision, or 0.0 for normal (reduced) precision.
  [out] | dpsi | [rad] δψ Nutation (luni-solar + planetary) in longitude. It may be NULL if not required.
  [out] | deps | [rad] δε Nutation (luni-solar + planetary) in obliquity. It may be NULL if not required.

Returns
  0

See also
  iau2000b(), nu2000k(), nutation_angles(), nutation()

Referenced by nutation_angles().

## iau2000b()

int iau2000b | ( | double | jd_tt_high,
|  | double | jd_tt_low,
|  | double *restrict | dpsi,
|  | double *restrict | deps )

Computes the forced nutation of the non-rigid Earth based at reduced precision.

It reproduces the IAU 2000A (R06) model to a precision of 1 milliarcsecond in the interval 1995-2020, while being about 15x faster than iau2000a().

NOTES

1. Originally this was the IAU2000B series of McCarthy & Luzum (2003), consistent with the original IAU2000 precession model
2. As of SuperNOVAS v1.4.2, this function has been modified to use a truncated series for the IAU2006 (a.k.a. IAU 2000A R06) nutation model, whereby terms with amplitudes larger than 100 μas are omitted, resulting in 102 terms for the longitude and 57 terms the obliquity. This results in similar, or slightly better, precision than the original IAU2000B series of McCarthy & Luzum (2003), and it is now dynamically consistent with the IAU2006 (P03) precession model (Capitaine et al. 2005).

REFERENCES:

1. McCarthy, D. and Luzum, B. (2003). "An Abridged Model of the Precession &amp; Nutation of the Celestial Pole," Celestial Mechanics and Dynamical Astronomy, Volume 85, Issue 1, Jan. 2003, p. 37. (IAU 2000B) IERS Conventions (2003), Chapter 5.
2. Capitaine, N. et al. (2003), Astronomy And Astrophysics 412, pp. 567-586.

Parameters

  | jd_tt_high | [day] High-order part of the Terrestrial Time (TT) based Julian date. Typically it may be the integer part of a split date for the highest precision, or the full date for normal (reduced) precision.
  | jd_tt_low | [day] Low-order part of the Terrestrial Time (TT) based Julian date. Typically it may be the fractional part of a split date for the highest precision, or 0.0 for normal (reduced) precision.
  [out] | dpsi | [rad] δψ Nutation (luni-solar + planetary) in longitude, It may be NULL if not required.
  [out] | deps | [rad] δε Nutation (luni-solar + planetary) in obliquity. It may be NULL if not required.

Returns
  0

See also
  iau2000a(), nu2000k(), nutation_angles(), set_nutation_lp_provider(), nutation()

## nu2000k()

int nu2000k | ( | double | jd_tt_high,
|  | double | jd_tt_low,
|  | double *restrict | dpsi,
|  | double *restrict | deps )

Deprecated
  This intermediate precision non-standard, NOVAS specific, nutation model is outdated. It has not been fully adjusted for the R06 update, except for a coarse rescaling. You probably should prefer using the faster and more standard iau2000b() instead for reduced precision nutation, or else the somewhat slower iau2000a() series if full precision at the μas level is preferred.

Computes the forced nutation of the non-rigid Earth: Model NU2000K. This model is a modified version of the original IAU 2000A, which has been truncated for speed of execution. NU2000K agrees with IAU 2000A at the 0.1 milliarcsecond level from 1700 to 2300, while being about 5x faster than the more precise iau2000a().

NU2000K was compared to IAU 2000A over six centuries (1700-2300). The average error in dψ is 20 microarcseconds, with 98% of the errors < 60 microarcseconds; the average error in dεis 8 microarcseconds, with 100% of the errors < 60 microarcseconds.

NU2000K was developed by G. Kaplan (USNO) in March 2004

NOTES:

1. As of SuperNOVAS v1.4.2, this function has been modified to include a rescaling of the original IAU2000 nutation compatible values to 'IAU2006' (i.e. IAU2000A R06) compatible values, according to Coppola, Seago, and Vallado (2009). The rescaling makes this model more dynamically consistent with the IAU2006 (P03) precession model of Capitaine et al. (2003).

REFERENCES:

1. IERS Conventions (2003), Chapter 5.
2. Simon et al. (1994) Astronomy and Astrophysics 282, 663-683, esp. Sections 3.4-3.5.
3. Capitaine, N. et al. (2003), Astronomy And Astrophysics 412, pp. 567-586.
4. Coppola, V., Seago, G.H., & Vallado, D.A. (2009), AAS 09-159

Parameters

  | jd_tt_high | [day] High-order part of the Terrestrial Time (TT) based Julian date. Typically it may be the integer part of a split date for the highest precision, or the full date for normal (reduced) precision.
  | jd_tt_low | [day] Low-order part of the Terrestrial Time (TT) based Julian date. Typically it may be the fractional part of a split date for the highest precision, or 0.0 for normal (reduced) precision.
  [out] | dpsi | [rad] δψ Nutation (luni-solar + planetary) in longitude, It may be NULL if not required.
  [out] | deps | [rad] δε Nutation (luni-solar + planetary) in obliquity. It may be NULL if not required.

Returns
  0

See also
  iau2000a(), iau2000b(), nutation_angles(), set_nutation_lp_provider(), nutation()

References accum_prec(), novas_delaunay_args::D, novas_delaunay_args::F, fund_args(), novas_delaunay_args::l, novas_delaunay_args::l1, NOVAS_EARTH, NOVAS_JUPITER, NOVAS_MARS, NOVAS_SATURN, NOVAS_VENUS, novas_delaunay_args::Omega, and planet_lon().

## nutation_angles()

int nutation_angles | ( | double | t,
|  | enum novas_accuracy | accuracy,
|  | double *restrict | dpsi,
|  | double *restrict | deps )

Returns the IAU2000 / 2006 values for nutation in longitude and nutation in obliquity for a given TDB Julian date and the desired level of accuracy.

For NOVAS_FULL_ACCURACY (0), the IAU 2000A R06 nutation model is used. Otherwise, the model set by set_nutation_lp_provider() is used, or else the iau2000b() by default.

REFERENCES:

1. Kaplan, G. (2005), US Naval Observatory Circular 179.
2. Capitaine, N., P.T. Wallace and J. Chapront (2005), “Improvement of the IAU 2000 precession model.” Astronomy & Astrophysics, Vol. 432, pp. 355–67.
3. Coppola, V., Seago, G.H., & Vallado, D.A. (2009), AAS 09-159

Parameters

  | t | [cy] TDB time in Julian centuries since J2000.0
  | accuracy | NOVAS_FULL_ACCURACY (0) or NOVAS_REDUCED_ACCURACY (1)
  [out] | dpsi | [arcsec] Nutation in longitude in arcseconds.
  [out] | deps | [arcsec] Nutation in obliquity in arcseconds.

Returns
  0 if successful, or -1 if the output pointer arguments are NULL

See also
  nutation(), set_nutation_lp_provider()
  iau2000a(), iau2000b(), nu2000k()
  NOVAS_JD_J2000

References get_nutation_lp_provider(), iau2000a(), NOVAS_FULL_ACCURACY, and NOVAS_JD_J2000.

Referenced by e_tilt(), and novas_make_frame().