SuperNOVAS C API v1.6
High-precision C/C++ astrometry library
Loading...
Searching...
No Matches
moon.c File Reference

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.

Detailed Description

Date
Created on Dec 11, 2025
Author
Attila Kovacs

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:

  1. Chapront-Touze, M., & Chapront, J., A&A, 190, 342 (1988)
  2. Chapront, J., Francou G., 2003, A&A, 404, 735
  3. Chapront, J., & Francou, G., "LUNAR SOLUTION ELP version ELP/MPP02", (October 2002), https://cyrano-se.obspm.fr/pub/2_lunar_solutions/2_elpmpp02/
See also
solsys-calceph.c, solsys-cspice.c, ephemeris.c

Function Documentation

◆ novas_moon_elp_ecl_vel()

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:

  1. The initial implementation (in v1.6) truncates the full series, keeping only terms with amplitudes larger than 1 mas (around 3400 harmonic terms in total).

REFERENCES:

  1. Chapront-Touze, M., & Chapront, J., A&A, 190, 342 (1988)
  2. Chapront, J., Francou G., 2003, A&A, 404, 735
  3. Chapront, J., & Francou, G., "LUNAR SOLUTION ELP version ELP/MPP02", (October 2002), https://cyrano-se.obspm.fr/pub/2_lunar_solutions/2_elpmpp02/
Parameters
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.
Returns
0 if successful, or else -1 if there was an error (errno will indicate the type of error.
Since
1.6
Author
Attila Kovacs
See also
novas_moon_elp_posvel(), novas_moon_elp_sky_pos()
novas_make_moon_orbit()

References novas_moon_elp_ecl_pos().

Referenced by novas_moon_elp_posvel_fp().