ELP/MPP02 is a semi-analytic solution for the lunar motion developed by J. Chapront and G. Francou in 2002. It is an improvement of the ELP2000-82B lunar theory.
Source paper: The lunar theory ELP revisited. Introduction of new planetary perturbations by J. Chapront and G. Francou, Astronomy and Astrophysics, v.404, p.735-742 (2003). See also references to ELP2000-82B theory in the paper.
The authors provide data files, a FORTRAN code and a pdf documentation on this ftp site. ELP/MPP02 theory provides two sets of parameters adjusted to fit either the lunar laser ranging (LLR) observation data or JPL's DE405/DE406 ephemerides.
I have written C++ functions to compute the lunar positions based on the information on that ftp site. The full ELP/MPP02 theory contains series involving 35901 terms. High accuracy of lunar positions may not be necessary for some applications. It is therefore useful to create a truncated series to speed up computation. I have written routines that create a truncated series using 4 parameters. I also wrote a function to estimate the accuracy of the truncated series.
JavaScript is convenient for HTML-based applications, such as my local star charts and equatorial star charts pages. I wrote C++ routines that generate JavaScript functions to compute a truncated ELP/MPP02 series.
The following is a summary of the files in this package. See this pdf file for documentation. Files can be downloaded on my GitHub code page.
elp_main.long
, elp_main.lat
, elp_main.dist
, elp_pert.longT0
, elp_pert.longT1
, elp_pert.longT2
, elp_pert.longT3
, elp_pert.latT0
, elp_pert.latT1
, elp_pert.latT2
, elp_pert.distT0
, elp_pert.distT1
, elp_pert.distT2
, elp_pert.distT3
. These data files are generated from the data files on the ftp site mentioned above. They are stored in a format more convenient for C++ implementation.ElpMpp02.cpp
: Contains functions that compute the lunar position and velocity using both sets of parameters fitted to LLR and DE405/DE406. This is basically a C++ version of the FORTRAN code. The file example.cpp
provides an example of using this code.ElpMpp_trim.cpp
: Contains functions that generate a truncated version of the ELP/MPP02 series. A C++ file and 14 data files will be created by the code to implement the truncated series. It also contains a function that estimates the accuracy of the truncated series by performing a Monte Carlo simulation. The file example_usingElpMpp_trim.cpp
provides an example of using this code.ElpMpp_JavaScript.cpp
: Contains routines that generate JavaScript functions to compute a truncated ELP/MPP02 series. Two javascript files will be created by this code. They contain exactly the same functions, but one is human-readable and the other is a minified version (for production run). No data files will be generated. Terms in the ELP/MPP02 series are written explicitly in the JavaScript code.ElpMpp02.html
: A web-based JavaScript calculator that computes the lunar position by ELP/MPP02 using both sets of parameters fitted to LLR and DE405/DE406. It is intended for code test.ElpMpp02v.html
: A web-based JavaScript calculator that computes both lunar position and velocity by ELP/MPP02 using both sets of parameters fitted to LLR and DE405/DE406. This is essentially a JavaScript version of the FORTRAN code. It is intended for code test.ElpMpp02_aux.js
, ElpMpp02LLR_min.js
, ElpMpp02DE_min.js
, ElpMpp02LLRv_min.js
, ElpMpp02DEv_min.js
: Contain JavaScript functions used by ElpMpp02.html
and ElpMpp02v.html
. ElpMpp02LLR_min.js
, ElpMpp02DE_min.js
, ElpMpp02LLRv_min.js
and ElpMpp02DEv_min.js
are generated by ElpMpp_JavaScript.cpp
to
compute the (untruncated) ELP/MPP02 series using parameters fitted to LLR and
DE405/DE406. ElpMpp02_aux.js
contains auxiliary functions to manage the
activities on ElpMpp02.html
and ElpMpp02v.html
.ElpMpp02.css
: Style file used by this html file, ElpMpp02.html
and ElpMpp02v.html
.