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().