1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//! Layered gravity solver from constant g to post-Newtonian corrections.
//!
//! Implements 5 gravity layers:
//! 1. Constant gravity (uniform g)
//! 2. Poisson solver (local density fields)
//! 3. N-body with Barnes-Hut tree (O(N log N) far-field)
//! 4. Post-Newtonian corrections (1PN + 2.5PN)
//! 5. Numerical GR (BSSN, future work)
//!
//! # Example
//!
//! ```
//! use phyz_gravity::{GravityParticle, PostNewtonianSolver, GravitySolver};
//! use phyz_math::Vec3;
//!
//! // Solar system: Mercury perihelion precession
//! let m_sun = 1.989e30; // kg
//! let m_mercury = 3.285e23;
//!
//! let mut particles = vec![
//! GravityParticle::new(Vec3::zeros(), Vec3::zeros(), m_sun),
//! GravityParticle::new(
//! Vec3::new(57.9e9, 0.0, 0.0), // 57.9M km
//! Vec3::new(0.0, 47.4e3, 0.0), // 47.4 km/s
//! m_mercury,
//! ),
//! ];
//!
//! let mut solver = PostNewtonianSolver::new(2.5); // 2.5PN order
//! solver.compute_forces(&mut particles);
//! ```
pub use ConstantGravity;
pub use ;
pub use GravityParticle;
pub use ;
pub use PoissonSolver;
/// Trait for all gravity solvers.
/// Gravitational constant (m³ kg⁻¹ s⁻²).
pub const G: f64 = 6.67430e-11;
/// Speed of light (m/s).
pub const C: f64 = 299_792_458.0;
/// Standard Earth gravity (m/s²).
pub const G_EARTH: f64 = 9.80665;