Skip to content
This repository was archived by the owner on Oct 25, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
2 changes: 2 additions & 0 deletions examples/chronometric.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
4 changes: 4 additions & 0 deletions src/height.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
17 changes: 17 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
@@ -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};
Expand Down
4 changes: 4 additions & 0 deletions src/normal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Loading