# Archive — Data Source Catalog
This directory is the single canonical store for every dataset, autogenerated
table, and static coefficient array used by `siderust`.
All files here are either:
- **Generated** at build time by scripts under `scripts/` and committed,
- **Build-time** (`OUT_DIR`) blobs produced from source BSP files, or
- **Static** tables transcribed from published papers or public data services.
---
## Catalog
### 1. VSOP87A — Heliocentric Ecliptic Rectangular (planets)
| **File** | `vsop87a.rs` (generated) |
| **Source** | Bretagnon & Francou (1988), IMCCE VSOP87 FTP |
| **URL** | <https://ftp.imcce.fr/pub/ephem/planets/vsop87/> |
| **License** | Public domain (scientific data) |
| **Consumed by** | `src/calculus/vsop87/vsop87a.rs` via `include!` |
| **Generation** | `cargo run --bin generate_vsop87` via `scripts/vsop87/` |
Bretagnon, P. & Francou, G. (1988). "Planetary theories in rectangular and
spherical variables: VSOP87 solution." *Astronomy and Astrophysics*, 202, 309–315.
---
### 2. VSOP87E — Barycentric Ecliptic Rectangular (planets + Sun)
| **File** | `vsop87e.rs` (generated) |
| **Source** | Bretagnon & Francou (1988), IMCCE VSOP87 FTP |
| **URL** | <https://ftp.imcce.fr/pub/ephem/planets/vsop87/> |
| **License** | Public domain (scientific data) |
| **Consumed by** | `src/calculus/vsop87/vsop87e.rs` via `include!` |
| **Generation** | `cargo run --bin generate_vsop87` via `scripts/vsop87/` |
Same paper as VSOP87A; variant E gives barycentric coordinates.
---
### 3. ELP2000-82B — Lunar Theory
| **File** | `elp_data.rs` (generated) |
| **Source** | Chapront-Touzé & Chapront (1988), CDS catalogue VI/79 |
| **URL** | <https://cdsarc.cds.unistra.fr/ftp/VI/79/> |
| **License** | Public domain (scientific data) |
| **Consumed by** | `src/calculus/elp2000/elp_series.rs` via `include!` |
| **Generation** | `cargo run --bin generate_elp2000` via `scripts/elp2000/` |
Chapront-Touzé, M. & Chapront, J. (1988). "ELP 2000-85: A semi-analytical
lunar ephemeris adequate for historical times." *Astronomy and Astrophysics*,
190, 342–352.
---
### 4. IERS EOP finals2000A — Earth Orientation Parameters
> **Data owned by `tempoch`.** Siderust no longer embeds a copy.
| **Source** | IERS Earth Orientation Centre, `finals2000A.all` |
| **URL** | <https://datacenter.iers.org/data/9/finals2000A.all> |
| **License** | IERS open data policy |
| **Consumed by** | `tempoch-core` (generated in `tempoch-core/src/generated/eop_data.rs`) |
| **Accessed via** | `siderust::astro::iers_data` (re-exports `tempoch::eop`) |
| | `siderust::astro::eop::IersEop` (typed EOP provider) |
The EOP table is generated and maintained by the `tempoch` crate's
`tempoch-time-data-updater` tool. Use `siderust::astro::eop::IersEop` for
the full typed EOP provider, or `siderust::astro::iers_data::builtin_eop_at`
for direct table access.
---
### 5. IAU 2000A Nutation Series
| **File** | `nut00a_tables.rs` (static) |
| **Source** | Mathews, Herring & Buffett (2002) MHB2000; IERS Conventions 2010 |
| **URL** | <https://www.iers.org/IERS/EN/Publications/TechnicalNotes/tn36.html> |
| **License** | Public domain (scientific data) |
| **Consumed by** | `src/astro/nutation/nut00a.rs` via `crate::archive::nut00a_tables` |
| **Generation** | Static (transcribed) |
Two tables: `NUT00A_LS` (1320 luni-solar terms) and `NUT00A_PL` (687 planetary
terms) for the IAU 2000A nutation model.
Mathews, P. M., Herring, T. A., & Buffett, B. A. (2002). "Modeling of nutation
and precession: New nutation series for nonrigid Earth and insights into the
Earth's interior." *Journal of Geophysical Research*, 107(B4).
---
### 6. JPL DE440 — Planetary + Lunar Ephemeris
| **File** | `jpl/de440/mod.rs` (build-time wrapper; coefficients in `OUT_DIR`) |
| **Source** | Park et al. (2021), JPL Solar System Dynamics / NAIF |
| **URL** | <https://ssd.jpl.nasa.gov/planets/eph_export.html> |
| **License** | U.S. Government public domain (NASA open data) |
| **Consumed by** | `src/calculus/jpl/de440/` via `crate::archive::jpl::de440` |
| **Generation** | Build-time BSP processing in `build.rs` (outputs to `OUT_DIR`) |
Park, R. S., et al. (2021). "The JPL Planetary and Lunar Ephemerides DE440 and
DE441." *The Astronomical Journal*, 161(3), 105.
---
### 7. JPL DE441 — Extended Planetary Ephemeris
| **File** | `jpl/de441/mod.rs` (build-time wrapper; coefficients in `OUT_DIR`) |
| **Source** | Park et al. (2021), JPL Solar System Dynamics / NAIF |
| **URL** | <https://ssd.jpl.nasa.gov/planets/eph_export.html> |
| **License** | U.S. Government public domain (NASA open data) |
| **Consumed by** | `src/calculus/jpl/de441/` via `crate::archive::jpl::de441` |
| **Generation** | Build-time BSP processing in `build.rs` (outputs to `OUT_DIR`) |
Same paper as DE440; DE441 extends the time span at slight cost to inner-planet
accuracy.
---
### 8. Pluto Abbreviated Series (Meeus / Williams)
| **File** | `pluto_tables.rs` (static) |
| **Source** | Meeus (1998), after Williams (1991) |
| **License** | Public domain (scientific data) |
| **Consumed by** | `src/calculus/pluto.rs` via `crate::archive::pluto_tables` |
| **Generation** | Static (transcribed) |
42-term trigonometric series for Pluto heliocentric ecliptic coordinates,
accurate to ~0.5″ in longitude over 1885–2099.
Meeus, J. (1998). *Astronomical Algorithms* (2nd ed.), ch. 36. Willmann-Bell.
Williams, T. G. (1991). "An optimized algorithm for Pluto." *Mem. Brit. Astron.
Assoc.* **99**(2), 75–82.
---
### 9. Bessell (1990) UBVRI Passbands
| **Files** | `data/passbands/bessell1990/{U,B,V,R,I}.dat` |
| **Source** | Bessell (1990), *Publications of the Astronomical Society of the Pacific* |
| **URL** | <https://ui.adsabs.harvard.edu/abs/1990PASP..102.1181B> |
| **License** | Public domain (scientific publication data) |
| **Consumed by** | `src/spectra/passbands/bessell1990.rs` via `include_str!` |
| **Generation** | Static (digitized filter curves) |
Standard photometric passbands for the Johnson–Cousins UBVRI system.
Bessell, M. S. (1990). "UBVRI passbands." *Publications of the Astronomical
Society of the Pacific*, 102, 1181–1199.
---
### 10. Ozone Transmission Table (`o3trans.dat`)
| **File** | `data/o3trans.dat` |
| **Source** | darknsb / NSB project (atmospheric O₃ cross-sections) |
| **License** | See file header |
| **Consumed by** | `src/atmosphere/ozone.rs` via `include_str!` |
| | `src/provenance/checksum.rs` via `include_bytes!` (integrity check) |
| **Generation** | Static (measured data) |
Wavelength-dependent ozone absorption cross-section used in atmospheric
extinction modelling.
---
## Adding a New Dataset
1. Place data files under `src/archive/data/<name>/` (binary/text) or add a
new `.rs` file at the top level / sub-module for Rust tables.
2. If the data is generated, update `scripts/update_generated_tables.sh` and
the relevant codegen script.
3. If the file is embedded with `include_str!` or `include_bytes!`, add an
entry to `src/provenance/checksum.rs` to pin its SHA-256.
4. Add a catalog entry to this README.
5. Update `datasets.lock.json` if applicable.