![]() |
SuperNOVAS C++ API v1.6
High-precision C/C++ astrometry library
|
Functions | |
| int | novas_make_moon_mean_orbit (double jd_tdb, novas_orbital *restrict orbit) |
| Gets mean orbital elements for the Moon relative to the geocenter for the specified epoch of observation. | |
| int | novas_make_moon_orbit (double jd_tdb, novas_orbital *restrict orbit) |
| Gets an approximation of the current Keplerian orbital elements for the Moon relative to the geocenter for the specified epoch of observation. | |
| int | novas_moon_elp_ecl_pos (double jd_tdb, double limit, double *pos) |
| Calculates the Moon's geocentric position using the ELP/MPP02 model by Chapront & Francou (2003), in the ELP2000 reference plane (i.e. | |
| int | novas_moon_elp_ecl_vel (double jd_tdb, double limit, double *vel) |
| Calculates the Moon's geocentric velocity using the ELP/MPP02 model by Chapront & Francou (2003), in the ELP2000 reference plane (i.e. | |
| int | novas_moon_elp_posvel (const novas_frame *restrict frame, enum novas_reference_system sys, double *restrict pos, double *restrict vel) |
| Returns the Moon's geometric position and velocity, relative to an Earth-based observer (or the geocenter), using the ELP/MPP02 model by Chapront & Francou (2003). | |
| int | novas_moon_elp_posvel_fp (const novas_frame *restrict frame, double limit, enum novas_reference_system sys, double *restrict pos, double *restrict vel) |
| Returns the Moon's geometric position and velocity, relative to an Earth-based observer (or the geocenter), using the ELP/MPP02 model by Chapront & Francou (2003). | |
| int | novas_moon_elp_sky_pos (const novas_frame *restrict frame, enum novas_reference_system sys, sky_pos *restrict pos) |
| Returns the Moon's apparent place, relative to an Earth-based observer (or the geocenter), using the ELP/MPP02 model by Chapront & Francou (2003). | |
| int | novas_moon_elp_sky_pos_fp (const novas_frame *restrict frame, double limit, enum novas_reference_system sys, sky_pos *restrict pos) |
| Returns the Moon's apparent place, relative to an Earth-based observer (or the geocenter), using the ELP/MPP02 model by Chapront & Francou (2003). | |
| double | novas_moon_phase (double jd_tdb) |
| Calculates the Moon's phase at a given time. | |
| double | novas_next_moon_phase (double phase, double jd_tdb) |
| Calculates the date / time at which the Moon will reach the specified phase next, after the specified time. | |
This module implements self-contained calculations for the Moon's position, such as via Keplerian orbital approximation, and through a semi-analytical model by Chapront-Touze & Chapront 1988 / Chapront & Francou 2002, 2003.
In principle, the latter can predict the Moon's position to the 10-m level precision, but is quite expensive to calculate with around 35,000 sinusoidal terms. In SuperNOVAS we offer only a truncated version, with 100-m level precision (typically), using up to 3408 terms. And, one may opt to truncate further to obtain less precises results faster if needed.
REFERENCES:
| int novas_make_moon_mean_orbit | ( | double | jd_tdb, |
| novas_orbital *restrict | orbit ) |
Gets mean orbital elements for the Moon relative to the geocenter for the specified epoch of observation.
It is based on the secular parameters of the ELP2000-85 model, not including the harmonic series the perturbation terms. As such it has accuracy at the few degrees level only, however it is 'valid' for long-term projections (i.e. for years around the orbit's reference epoch) at that coarse level.
For the short-term , novas_make_moon_orbit() can provide somewhat more accurate predictions for up to a day or so around the reference epoch of the orbit.
NOTES:
REFERENCES:
| jd_tdb | [day] Barycentric Dynamical Time (TDB) based Julian Date. | |
| [out] | orbit | Orbital elements data structure to populate. |
References NOVAS_AU, NOVAS_EARTH, NOVAS_ECLIPTIC_PLANE, NOVAS_J2000, NOVAS_JD_J2000, NOVAS_ORBIT_INIT, and TWOPI.
Referenced by supernovas::Orbital::moon_mean_orbit_at(), and novas_make_moon_orbit().
| int novas_make_moon_orbit | ( | double | jd_tdb, |
| novas_orbital *restrict | orbit ) |
Gets an approximation of the current Keplerian orbital elements for the Moon relative to the geocenter for the specified epoch of observation.
The orbit includes the most dominant Solar perturbation terms to produce results with an accuracy at the few arcmin level near (+- 0.5 days) the reference time argument of the orbit. The perturbed orbit is based on the ELP/MPP02 model.
While, the ELP/MPP02 model itself can be highly precise, the Moon's orbit is strongly non-Keplerian, and so any attempt to describe it in purely Keplerian terms is inherently flawed, which is the reason for the generally poor accuracy of this model.
REFERENCES:
| jd_tdb | [day] Barycentric Dynamical Time (TDB) based Julian Date. | |
| [out] | orbit | Orbital elements data structure to populate. |
References novas_delaunay_args::D, novas_delaunay_args::F, novas_delaunay_args::l, novas_delaunay_args::l1, NOVAS_AU, NOVAS_JD_J2000, NOVAS_KM, and novas_make_moon_mean_orbit().
Referenced by supernovas::Orbital::moon_orbit_at(), and novas_approx_heliocentric().
| int novas_moon_elp_ecl_pos | ( | double | jd_tdb, |
| double | limit, | ||
| double * | pos ) |
Calculates the Moon's geocentric position using the ELP/MPP02 model by Chapront & Francou (2003), in the ELP2000 reference plane (i.e.
the inertial ecliptic and equinox of J2000), down to the specified limiting term amplitude.
NOTES:
REFERENCES:
| jd_tdb | [day] Barycentric Dynamical Time (TDB) based Julian date. | |
| limit | [arcsec|km] Sum only the harmonic terms with amplitudes larger than this limit. | |
| [out] | pos | [AU] Output geocentric position vector w.r.t. the intertial ecliptic and equinox of J2000. |
References NOVAS_AU, NOVAS_EARTH, NOVAS_JD_J2000, NOVAS_KM, NOVAS_NEPTUNE, NOVAS_SATURN, NOVAS_VENUS, and planet_lon().
Referenced by novas_moon_elp_ecl_vel(), novas_moon_elp_posvel_fp(), and novas_moon_phase().
| int novas_moon_elp_ecl_vel | ( | double | jd_tdb, |
| double | limit, | ||
| double * | vel ) |
Calculates the Moon's geocentric velocity using the ELP/MPP02 model by Chapront & Francou (2003), in the ELP2000 reference plane (i.e.
the inertial ecliptic and equinox of J2000), down to the specified limiting term amplitude.
NOTES:
REFERENCES:
| jd_tdb | [day] Barycentric Dynamical Time (TDB) based Julian date. | |
| limit | [arcsec|km] Sum only the harmonic terms with amplitudes larger than this limit. | |
| [out] | vel | [AU/day] Output geocentric velocity vector w.r.t. the intertial ecliptic and equinox of J2000. |
References novas_moon_elp_ecl_pos().
Referenced by novas_moon_elp_posvel_fp().
| int novas_moon_elp_posvel | ( | const novas_frame *restrict | frame, |
| enum novas_reference_system | sys, | ||
| double *restrict | pos, | ||
| double *restrict | vel ) |
Returns the Moon's geometric position and velocity, relative to an Earth-based observer (or the geocenter), using the ELP/MPP02 model by Chapront & Francou (2003).
NOTES:
REFERENCES:
| Observing frames | Earth-based observing frame | |
| sys | The celestial coordinate reference system in which to return the result. (It may not be Earth-based TIRS or ITRS). | |
| [out] | pos | [AU] The Moon's position vector relative to the observer (or geocenter), in the specified coordinate reference system, or NULL if not required. |
| [out] | vel | [AU/day] The Moon's ICRS velocity vector relative to the observer (or geocenter), in the specified coordinate reference system, or NULL if not required. |
References novas_moon_elp_posvel_fp().
| int novas_moon_elp_posvel_fp | ( | const novas_frame *restrict | frame, |
| double | limit, | ||
| enum novas_reference_system | sys, | ||
| double *restrict | pos, | ||
| double *restrict | vel ) |
Returns the Moon's geometric position and velocity, relative to an Earth-based observer (or the geocenter), using the ELP/MPP02 model by Chapront & Francou (2003).
Only terms larger than the specified limit are used to provide a result with the desired precision.
NOTES:
REFERENCES:
| Observing frames | Earth-based observing frame | |
| limit | [arcsec|km] Sum only terms with amplitudes larger than this limit. The resulting accuracy is typically an order-of-magnitude above the set limiting amplitude. | |
| sys | The celestial coordinate reference system in which to return the result. (It may not be Earth-based TIRS or ITRS). | |
| [out] | pos | [AU] The Moon's position vector relative to the observer (or geocenter), in the specified coordinate reference system, or NULL if not required. |
| [out] | vel | [AU/day] The Moon's ICRS velocity vector relative to the observer (or geocenter), in the specified coordinate reference system, or NULL if not required. |
References ecl2equ_vec(), NOVAS_FULL_ACCURACY, novas_get_time(), NOVAS_J2000, NOVAS_JD_J2000, novas_make_transform(), NOVAS_MEAN_EQUATOR, novas_moon_elp_ecl_pos(), novas_moon_elp_ecl_vel(), NOVAS_REDUCED_ACCURACY, NOVAS_TDB, and novas_transform_vector().
Referenced by supernovas::Frame::geometric_moon_elp2000(), novas_moon_elp_posvel(), and novas_moon_elp_sky_pos_fp().
| int novas_moon_elp_sky_pos | ( | const novas_frame *restrict | frame, |
| enum novas_reference_system | sys, | ||
| sky_pos *restrict | pos ) |
Returns the Moon's apparent place, relative to an Earth-based observer (or the geocenter), using the ELP/MPP02 model by Chapront & Francou (2003).
NOTES:
REFERENCES:
| Observing frames | Earth-based observing frame. | |
| sys | The celestial coordinate reference system in which to return the result. (It may not be Earth-based TIRS or ITRS). | |
| [out] | pos | The Moon's position, relative to the true equator and equinox of date. |
References novas_moon_elp_sky_pos_fp().
| int novas_moon_elp_sky_pos_fp | ( | const novas_frame *restrict | frame, |
| double | limit, | ||
| enum novas_reference_system | sys, | ||
| sky_pos *restrict | pos ) |
Returns the Moon's apparent place, relative to an Earth-based observer (or the geocenter), using the ELP/MPP02 model by Chapront & Francou (2003).
Only terms larger than the specified limit are used to provide a result with the desired precision.
NOTES:
REFERENCES:
| Observing frames | Earth-based observing frame | |
| limit | [arcsec|km] Sum only terms with amplitudes larger than this limit. The resulting accuracy is typically an order-of-magnitude above the set limiting amplitude. | |
| sys | The celestial coordinate reference system in which to return the result. (It may not be Earth-based TIRS or ITRS). | |
| [out] | pos | The Moon's position, relative to the true equator and equinox of date. |
References aberration(), NOVAS_AU, NOVAS_DAY, NOVAS_ICRS, NOVAS_KM, novas_make_transform(), novas_moon_elp_posvel_fp(), novas_transform_vector(), novas_vlen(), and vector2radec().
Referenced by supernovas::Frame::apparent_moon_elp2000(), and novas_moon_elp_sky_pos().
| double novas_moon_phase | ( | double | jd_tdb | ) |
Calculates the Moon's phase at a given time.
It uses orbital models for Earth (E.M. Standish and J.G. Williams 1992), and the ELP2000/MPP02 semi-analytical model for the Moon (Chapront & Francou, 2002, 2003), and takes into account the slightly eccentric nature of both orbits.
NOTES:
NOTES:
REFERENCES:
| jd_tdb | [day] Barycentric Dynamical Time (TDB) based Julian Date. |
References NOVAS_EMB, novas_make_planet_orbit(), novas_moon_elp_ecl_pos(), NOVAS_ORBIT_INIT, novas_orbit_native_posvel(), and vector2radec().
Referenced by supernovas::Time::moon_phase(), and novas_next_moon_phase().
| double novas_next_moon_phase | ( | double | phase, |
| double | jd_tdb ) |
Calculates the date / time at which the Moon will reach the specified phase next, after the specified time.
It uses orbital models for Earth (E.M. Standish and J.G. Williams 1992), and the ELP2000/MPP02 semi-analytical model for the Moon (Chapront & Francou, 2002, 2003), and takes into account the slightly eccentric nature of both orbits.
NOTES:
REFERENCES:
| phase | [deg] The Moon's phase, or more precisely the ecliptic longitude difference between the Sun and the Moon, as seen from the geocenter. 0: New Moon, 90: 1st quarter, +/- 180 Full Moon, -90: 3rd quarter. |
| jd_tdb | [day] The lower bound date for the phase, as a Barycentric Dynamical Time (TDB) based Julian Date. |
References novas_inv_max_iter, NOVAS_JD_J2000, and novas_moon_phase().
Referenced by supernovas::Time::next_moon_phase().