From f5d92b580adb99939ae40c0988fc2d786a901e0a Mon Sep 17 00:00:00 2001 From: Dan Garden Date: Sun, 25 Oct 2026 23:21:49 +1000 Subject: [PATCH 1/2] 0.6.0: the final release, folded into physica Every module and the two re-exported structs are deprecated with a note naming the new home in geopotential, gravimetry, gravitational, gravitics or metrology. The README and CHANGELOG map old to new and record the two defects the move found. Co-Authored-By: Claude Fable 5.1 --- CHANGELOG.md | 20 ++++++++++++++++++++ Cargo.toml | 4 ++-- README.md | 22 ++++++++++++++++++++++ src/height.rs | 4 ++++ src/lib.rs | 17 +++++++++++++++++ src/normal.rs | 4 ++++ 6 files changed, 69 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d610db..58adb0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,26 @@ All notable changes to `geo5d`. Plain semver; tags `vX.Y.Z` at the published commit. +## 0.6.0 — 2026-10-25, the final release + +geo5d is folded into [physica](https://github.com/FusionVault/physica), which `geopotential` +(its synthesis engine) already came from. Every module is deprecated with a note naming its new +home; nothing else changed, so existing code keeps working with the warnings: + +| geo5d | physica | +|---|---| +| `NormalGravity`, `constants::GRS80_*`, `WGS84_*` | `geopotential::normal::{NormalGravity, GRS80, WGS84}`, from the four defining constants | +| `GeopotentialNumber` | `geopotential::normal::NormalGravity::{dynamic_height, normal_height}` | +| `SphericalHarmonicModel` | `geopotential::Coefficients` (`read_gfc`), `Partials::{geopotential, gravity_neu, deflections}`, `normal::bruns`, `SecondPartials::tensor_neu` | +| `relativity` (clocks) | `gravimetry::clocks` | +| `relativity::{perihelion_advance, geodetic_precession}` | `gravitational::energy::{periastron_advance, geodetic_precession}` | +| `relativity::{lense_thirring_*, gyroscope_frame_dragging, MAS_PER_YEAR}` | `gravitics::gem` | +| `transfer` | `gravimetry::clocks` | +| `constants::{L_G, L_B, W0_IAU, W0_IHRS, EARTH_ANGULAR_MOMENTUM, GM_SUN, …}` | `metrology` | + +Two defects found in the move, fixed on the physica side: the "GRS80 normal field" carried +WGS84's even zonals, and its C̄₈₀ was ten times too large (0.346×10⁻¹⁰ for 0.346×10⁻¹¹). + ## 0.5.2 — 2026-10-25 - **New:** `relativity::perihelion_advance`, `6πGM/(c²a(1 − e²))` per orbit. diff --git a/Cargo.toml b/Cargo.toml index 9e44de5..6dda754 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,11 +10,11 @@ # unchanged from its own repository. [package] name = "geo5d" -version = "0.5.2" +version = "0.6.0" edition = "2021" rust-version = "1.85" license = "MIT" -description = "Gravity and relativity for geodesy: normal gravity, heights from the geopotential, spherical-harmonic gravity models, and clocks as height meters (chronometric levelling)." +description = "Folded into the physica crates (geopotential, gravimetry, gravitational, gravitics); this final release deprecates every item and names its new home." repository = "https://github.com/FusionVault/geo5d" readme = "README.md" documentation = "https://docs.rs/geo5d" diff --git a/README.md b/README.md index 18af20f..1de13b6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,27 @@ # geo5d +**Folded into [physica](https://github.com/FusionVault/physica).** Version 0.6.0 is the final +release: every item is deprecated with a note naming its new home, and nothing else changed. The +same formulas, tested against the same published values and more, now live in + +| geo5d | physica | +|---|---| +| `NormalGravity`, GRS80 and WGS84 constants | [`geopotential::normal`](https://docs.rs/geopotential) | +| `GeopotentialNumber` (heights) | `geopotential::normal::NormalGravity::{dynamic_height, normal_height}` | +| `SphericalHarmonicModel` (gravity, geoid, deflections, gradients) | `geopotential::Coefficients`, `Partials`, `normal::bruns` | +| `relativity` (clocks) and `transfer` | [`gravimetry::clocks`](https://docs.rs/gravimetry) | +| `relativity` (periapsis, de Sitter) | [`gravitational::energy`](https://docs.rs/gravitational) | +| `relativity` (frame dragging) | [`gravitics::gem`](https://docs.rs/gravitics) | +| `constants` | [`metrology`](https://docs.rs/metrology) | + +```bash +cargo add geopotential gravimetry +``` + +The original description follows. + +--- + Gravity and relativity for geodesy. It covers normal gravity, heights from the geopotential, gravity from spherical-harmonic models, and the link between clocks and heights: a clock runs faster the higher it is. Pure Rust, `f64`, no unsafe code. diff --git a/src/height.rs b/src/height.rs index ffc2879..509d3a9 100644 --- a/src/height.rs +++ b/src/height.rs @@ -15,6 +15,10 @@ use crate::normal::NormalGravity; /// let dyn_h = c.dynamic_height(NormalGravity::GRS80.gamma_45()); /// assert!((dyn_h - 1_000.0).abs() < 1e-6); /// ``` +#[deprecated( + since = "0.6.0", + note = "moved to geopotential::normal::NormalGravity::{dynamic_height, normal_height}" +)] #[derive(Clone, Copy, Debug, Default, PartialEq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct GeopotentialNumber { diff --git a/src/lib.rs b/src/lib.rs index 2c108c9..0027b24 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,12 +1,29 @@ #![doc = include_str!("../README.md")] +#![allow(deprecated)] #![forbid(unsafe_code)] #![warn(missing_docs)] +#[deprecated( + since = "0.6.0", + note = "moved to the metrology crate (GRS80_F, GRS80_GM, W0_IAU, W0_IHRS, L_G, L_B, EARTH_ANGULAR_MOMENTUM)" +)] pub mod constants; +#[deprecated( + since = "0.6.0", + note = "use geopotential::Coefficients with normal::bruns, Partials::gravity_neu and Partials::deflections" +)] pub mod gravity; mod height; mod normal; +#[deprecated( + since = "0.6.0", + note = "clocks moved to gravimetry::clocks; perihelion_advance and geodetic_precession to gravitational::energy; frame dragging to gravitics::gem" +)] pub mod relativity; +#[deprecated( + since = "0.6.0", + note = "moved to gravimetry::clocks (eccentricity_correction, sagnac, shapiro_delay, one_way_transfer, proper_time_offset)" +)] pub mod transfer; pub use constants::{L_G, W0_IAU, W0_IHRS}; diff --git a/src/normal.rs b/src/normal.rs index ab60946..ad944b6 100644 --- a/src/normal.rs +++ b/src/normal.rs @@ -18,6 +18,10 @@ use geo4d::Geodetic; /// // At 45° it equals the dynamic-height reference γ₄₅. /// assert!((NormalGravity::GRS80.at_latitude(45.0) - 9.806_199_203).abs() < 1e-6); /// ``` +#[deprecated( + since = "0.6.0", + note = "moved to geopotential::normal::{NormalGravity, GRS80, WGS84}, built from the four defining constants" +)] #[derive(Clone, Copy, Debug, PartialEq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct NormalGravity { From fc360813694b402aa9aececbee3fd7d8c0125371 Mon Sep 17 00:00:00 2001 From: Dan Garden Date: Sun, 25 Oct 2026 23:22:39 +1000 Subject: [PATCH 2/2] Allow the deprecated API in the example Co-Authored-By: Claude Fable 5.1 --- examples/chronometric.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/chronometric.rs b/examples/chronometric.rs index 5bb81b8..f6bd45b 100644 --- a/examples/chronometric.rs +++ b/examples/chronometric.rs @@ -4,6 +4,8 @@ //! //! `cargo run --example chronometric` +#![allow(deprecated)] // the crate is folded into physica; this example shows the old API + use geo5d::{ relativity, transfer, Duration, Ecef, Epoch, Geodetic, GeopotentialNumber, NormalGravity, SphericalHarmonicModel, StateVector, Trajectory, Vec3, W0_IHRS,