From e5db58387cfa9d7f0eff3b6188f13651785348e1 Mon Sep 17 00:00:00 2001 From: ysSemanticSystems Date: Sat, 20 Jun 2026 23:40:02 -0500 Subject: [PATCH 1/8] Add accretion survival loop, derived constants, and cinematic polish Turn the tech demo into a playable game built on the Eddington limit as a real risk/reward economy. Dynamics (accretion-core, each cited + golden/identity tested): - advance_mass integrates dM/dt = (1 - eta) Mdot (Frank/King/Raine 2002). - salpeter_time_s, the Eddington e-folding time (Salpeter 1964). - integrity_rate = 1 - lambda, radiation-modified support (Eddington 1926). - isco_specific_energy / efficiency_from_spin from the Kerr ISCO binding energy (Bardeen-Press-Teukolsky 1972; Thorne 1974). - orbital_frequency_hz, the prograde ISCO QPO scale (BPT 1972). Constants: constants.rs now holds only fundamentals (added M_E, ALPHA); sigma_sb = 2 pi^5 k_B^4 / (15 c^2 h^3) and sigma_T = (8 pi/3)(alpha hbar/m_e c)^2 are derived in derived.rs and pinned against the astropy oracle. Rules 11 and 02 updated for the fundamental-vs-derived provenance split. Game loop (GDScript, presentation only): mass evolves in compressed time, a disk-integrity meter drains super-Eddington and disruption blows the disk apart, growth reclassifies the hole with milestone banners and a next-goal bar, and presets form a difficulty ramp. Graphics/camera: radial blackbody gradient and bounded HDR bloom tone-mapped from the inner-edge temperature, spin-driven inner-edge/horizon tightening, fixed the unassigned disc_texture so the disk renders, and damped orbit/zoom with idle auto-orbit and an intro dolly. Reworded over-used "honest" marketing phrasing to rigorous/first-principles in user-facing docs (the honesty rule and prime directive are unchanged). --- .cursor/rules/02-scientific-honesty.mdc | 10 +- .cursor/rules/11-constants-provenance.mdc | 28 +- AGENTS.md | 6 +- CHANGELOG.md | 25 ++ CONTRIBUTING.md | 2 +- Cargo.toml | 2 +- README.md | 2 +- crates/accretion-core/src/constants.rs | 14 +- crates/accretion-core/src/derived.rs | 47 +++ crates/accretion-core/src/lib.rs | 105 +++++- crates/accretion-core/tests/dynamics.rs | 87 +++++ .../accretion-core/tests/fixtures/golden.json | 10 + crates/accretion-core/tests/golden.rs | 2 + crates/godot-ext/src/lib.rs | 46 +++ scenes/Main.tscn | 55 ++- scripts/gen_constants.py | 19 +- scripts/gen_golden.py | 9 + scripts/hud_format.gd | 23 ++ scripts/main.gd | 320 ++++++++++++++---- shaders/blackhole.gdshader | 4 + 20 files changed, 719 insertions(+), 97 deletions(-) create mode 100644 crates/accretion-core/src/derived.rs create mode 100644 crates/accretion-core/tests/dynamics.rs diff --git a/.cursor/rules/02-scientific-honesty.mdc b/.cursor/rules/02-scientific-honesty.mdc index 092a62f..8b36217 100644 --- a/.cursor/rules/02-scientific-honesty.mdc +++ b/.cursor/rules/02-scientific-honesty.mdc @@ -49,9 +49,13 @@ in its doc comment is rejected. Use the original paper where possible: ## 4. Constants are single-sourced and cited -Physical constants live once, as `pub const` in `accretion-core`, each tagged -with its source (CODATA 2018 / IAU). Do not redefine `G`, `c`, `M_sun`, etc. -anywhere else (not in `godot-ext`, not in a shader, not in GDScript). +Physical constants live once, in `accretion-core`, each tagged with its source. +Fundamentals (`G`, `c`, `M_sun`, `m_p`, `m_e`, `h`, `k_B`, `alpha`, ...) are +generated from astropy into `constants.rs` (CODATA / IAU). Composite constants +that are exact functions of fundamentals (`sigma_sb`, `sigma_T`) are DERIVED in +`derived.rs` with their formula + citation and pinned by a golden test — never +tabulated as a second independent copy (see rule 11). Do not redefine any of +them anywhere else (not in `godot-ext`, not in a shader, not in GDScript). ## 5. Hardcoded literature numbers are tech debt outside two places diff --git a/.cursor/rules/11-constants-provenance.mdc b/.cursor/rules/11-constants-provenance.mdc index ebe4c26..926e6cb 100644 --- a/.cursor/rules/11-constants-provenance.mdc +++ b/.cursor/rules/11-constants-provenance.mdc @@ -6,12 +6,34 @@ alwaysApply: true # Constants provenance (invariant) +Two layers, with different rules: + +## Fundamental constants (`constants.rs`) — generated, never derived + - `crates/accretion-core/src/constants.rs` is GENERATED by `scripts/gen_constants.py` from `astropy.constants` (CGS). It is never edited by hand. +- It holds ONLY fundamentals (e.g. `G`, `C_LIGHT`, `M_SUN`, `M_P`, `M_E`, `H_PLANCK`, + `K_BOLTZMANN`, `ALPHA`). A constant that is an exact mathematical function of these + does NOT belong here — it is derived (below). - Re-running the generator MUST produce a byte-identical file (`git diff --exit-code` clean). A non-empty diff is a build failure. -- No physical-constant literal may appear in any `src/**/*.rs` outside `constants.rs`. +- The choice of any fundamental's value is not a decision; it is whatever astropy ships + at the pinned version. Do not substitute "textbook" values. + +## Derived constants (`derived.rs`) — computed from fundamentals, with a golden test + +- Composite constants (e.g. Stefan-Boltzmann `SIGMA_SB`, Thomson `SIGMA_T`) are + COMPUTED in `crates/accretion-core/src/derived.rs` from `constants.rs`, NOT tabulated. + Tabulating a second copy of a derivable quantity is forbidden — derive it. +- Each derived constant carries its closed-form formula and a primary-source citation + in its doc comment, and is pinned by a golden test in `tests/golden.rs` against the + astropy oracle (`scripts/gen_golden.py`), at the stated tolerance. +- ✅ `crate::derived::SIGMA_SB` (derived) ✅ `crate::constants::M_SUN` (fundamental) + ❌ a hand-typed `5.67e-5` for sigma_sb anywhere. + +## Both layers + +- No physical-constant *literal* may appear in any `src/**/*.rs` outside `constants.rs`. + Derived values are built from named fundamentals and dimensionless math literals only. Check: `! grep -rEn '[0-9]+\.?[0-9]*[eE][+-]?[0-9]+' crates/accretion-core/src --include='*.rs' | grep -v constants.rs` - ✅ `crate::constants::M_SUN` ❌ `1.98892e33` (anywhere but constants.rs) -- The choice of any constant's value is not a decision; it is whatever astropy ships - at the pinned version. Do not substitute "textbook" values. diff --git a/AGENTS.md b/AGENTS.md index 33684d4..b62f82b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,7 +5,7 @@ > automatically. `accretion` is an accretion-disk survival/management game built like scientific -software: the physics is honest, every formula cites a primary source, and the +software: the physics is rigorous, every formula cites a primary source, and the core is independently testable. It is the game-side companion to [`ysSemanticSystems/BlackHoleResearch`](https://github.com/ysSemanticSystems/BlackHoleResearch), and inherits its discipline — relocated from Python/Streamlit to Rust/Godot. @@ -85,7 +85,7 @@ accretion/ # repo root (Godot 4.7 project lives here) When publishing the repository, set the **About** description to: -> Accretion-disk survival game — honest Rust physics, Godot 4.7 HDR lensing. Companion to BlackHoleResearch. +> Accretion-disk survival game — first-principles Rust physics, Godot 4.7 HDR lensing. Companion to BlackHoleResearch. Suggested **Topics:** `black-hole`, `accretion-disk`, `godot`, `rust`, `astrophysics`, `shakura-sunyaev`, `gravitational-lensing`, `game`, `scientific-software`. @@ -94,7 +94,7 @@ Enable **Issues** and **Discussions** if you want community feedback. CI badge i README assumes the default branch is `main` and workflow file is `.github/workflows/ci.yml`. -## Known deferred physics (be honest about it) +## Known deferred physics (stated plainly) - `disk_temperature` uses the **bare** Shakura-Sunyaev form (`T ∝ r^(-3/4)`, no inner-boundary factor), so there is no temperature peak / dark inner gap diff --git a/CHANGELOG.md b/CHANGELOG.md index e58e90a..96e105d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- **Survival/progression loop.** Mass now evolves in (compressed) time via + `advance_mass` (`dM/dt = (1 - eta) Mdot`, Frank/King/Raine 2002); a disk-integrity + meter drains when super-Eddington and rebuilds when sub-Eddington, and reaching + zero triggers a disruption that blows the disk apart and resets the feed. Growth + reclassifies the hole (stellar → IMBH → SMBH) with milestone banners and a + next-goal progress bar. +- **New physics in `accretion-core`** (each cited + golden/identity tested): + `salpeter_time_s` (Salpeter 1964), `integrity_rate` (Eddington 1926 effective + gravity `1 - lambda`), `isco_specific_energy` / `efficiency_from_spin` (Bardeen- + Press-Teukolsky 1972; Thorne 1974), `orbital_frequency_hz` (BPT 1972 QPO scale). +- **Derived constants module** `derived.rs`: `SIGMA_SB = 2 pi^5 k_B^4 / (15 c^2 h^3)` + (exact under 2019 SI) and `SIGMA_T = (8 pi / 3)(alpha hbar / m_e c)^2`, computed + from fundamentals instead of tabulated, pinned by astropy-oracle golden tests. +- Cinematic camera: damped orbit/zoom, idle auto-orbit, intro dolly. +- Graphics driven from Rust: radial blackbody gradient (inner + outer color), + bounded HDR bloom tone-mapped from the inner-edge temperature, and spin-driven + inner-edge / event-horizon tightening; disk grows with mass class. - **README.md** — public landing page with architecture, controls, quick start, CI badge. - **LICENSE** (MPL-2.0), **CONTRIBUTING.md**, GitHub CI workflow, PR and issue templates. - Astropy-oracle pipeline: `scripts/gen_constants.py` → `constants.rs`, @@ -21,6 +38,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- `constants.rs` now holds only FUNDAMENTAL constants (added `M_E`, `ALPHA`; + dropped tabulated `SIGMA_SB`/`SIGMA_T`); composites are derived in `derived.rs`. + Rule 11 / rule 02 updated for the two-layer (fundamental vs derived) provenance. +- Fixed the disk shader sampling an unassigned `disc_texture` (now a procedural + `NoiseTexture2D`) so the accretion disk renders. +- Reworded "honest" marketing phrasing to "rigorous / first-principles / + verifiable" in user-facing docs (the scientific-honesty rule and prime directive + are unchanged). - Physical constants are generated from astropy (no hand-written M_sun). - Golden tests use astropy oracle fixtures, not hand-pinned magnitudes. - `compatibility_minimum = 4.6` matches `api-4-6` gdext feature. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d54161f..753ef33 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing to accretion -Thank you for helping build an honest accretion-disk game. The full operational +Thank you for helping build a rigorous accretion-disk game. The full operational guide is **[AGENTS.md](AGENTS.md)** — read it before your first PR. ## Quick checklist diff --git a/Cargo.toml b/Cargo.toml index 579e790..3ee5c20 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" edition = "2024" license = "MPL-2.0" repository = "https://github.com/ysSemanticSystems/accretion" -description = "Accretion-disk survival game — honest Rust physics, Godot 4.7 HDR lensing" +description = "Accretion-disk survival game — first-principles Rust physics, Godot 4.7 HDR lensing" [profile.dev] opt-level = 1 diff --git a/README.md b/README.md index ddbd6c2..0c398da 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ pressure blowout that will become the game's loss condition. --- -## Physics (honest scope) +## Physics (verifiable scope) Every public function in `accretion-core` documents its primary source in the doc comment. Current Slice 0 coverage: diff --git a/crates/accretion-core/src/constants.rs b/crates/accretion-core/src/constants.rs index 18a30d4..241cae3 100644 --- a/crates/accretion-core/src/constants.rs +++ b/crates/accretion-core/src/constants.rs @@ -1,5 +1,6 @@ // GENERATED by scripts/gen_constants.py from astropy 6.0.1. -// Do not edit by hand. Single source of truth for physical constants (CGS). +// Do not edit by hand. Single source of truth for FUNDAMENTAL constants (CGS). +// Composite constants (sigma_sb, sigma_T) are derived in `crate::derived`. /// astropy.constants.G [cm^3 g^-1 s^-2] pub const G: f64 = 6.674299999999999e-08; @@ -13,11 +14,8 @@ pub const M_SUN: f64 = 1.988409870698051e+33; /// astropy.constants.m_p [g] pub const M_P: f64 = 1.67262192369e-24; -/// astropy.constants.sigma_T [cm^2] -pub const SIGMA_T: f64 = 6.6524587321000005e-25; - -/// astropy.constants.sigma_sb [erg cm^-2 s^-1 K^-4] -pub const SIGMA_SB: f64 = 5.6703744191844314e-05; +/// astropy.constants.m_e [g] +pub const M_E: f64 = 9.1093837015e-28; /// astropy.constants.h [erg s] pub const H_PLANCK: f64 = 6.62607015e-27; @@ -25,6 +23,8 @@ pub const H_PLANCK: f64 = 6.62607015e-27; /// astropy.constants.k_B [erg K^-1] pub const K_BOLTZMANN: f64 = 1.380649e-16; +/// astropy.constants.alpha [dimensionless] +pub const ALPHA: f64 = 0.0072973525693; + /// Nanometres to centimetres [cm nm^-1] (exact: 1 nm = 1e-7 cm). pub const NM_TO_CM: f64 = 1e-7; - diff --git a/crates/accretion-core/src/derived.rs b/crates/accretion-core/src/derived.rs new file mode 100644 index 0000000..899bbc8 --- /dev/null +++ b/crates/accretion-core/src/derived.rs @@ -0,0 +1,47 @@ +//! Composite physical constants, computed from the fundamentals in +//! [`crate::constants`]. +//! +//! These are exact mathematical relations among fundamental constants, not +//! independent measurements. Deriving them here (rather than tabulating a second +//! copy) keeps a single source of truth and makes the relation auditable. Each +//! value carries its formula and a primary-source citation, and is pinned by a +//! golden test against the astropy oracle (`scripts/gen_golden.py`). +//! +//! Const evaluation note: `f64::powi`/`powf` are not `const fn` on stable Rust, +//! so integer powers are written as explicit products. + +use crate::constants::{ALPHA, C_LIGHT, H_PLANCK, K_BOLTZMANN, M_E}; + +const PI: f64 = std::f64::consts::PI; + +/// Reduced Planck constant `hbar = h / (2 pi)` \[erg s\]. +pub const H_BAR: f64 = H_PLANCK / (2.0 * PI); + +/// Stefan-Boltzmann constant `sigma = 2 pi^5 k_B^4 / (15 c^2 h^3)` +/// \[erg cm^-2 s^-1 K^-4\]. +/// +/// Exact under the 2019 SI redefinition, in which `k_B`, `h`, and `c` are fixed +/// exactly; the value is then a pure mathematical constant. +/// +/// # Reference +/// Stefan 1879; Boltzmann 1884; derivation via the Bose-Einstein integral +/// `Gamma(4) zeta(4) = pi^4 / 15` (e.g. Rybicki & Lightman 1979, Eq. 1.43). +pub const SIGMA_SB: f64 = + 2.0 * (PI * PI * PI * PI * PI) * (K_BOLTZMANN * K_BOLTZMANN * K_BOLTZMANN * K_BOLTZMANN) + / (15.0 * (C_LIGHT * C_LIGHT) * (H_PLANCK * H_PLANCK * H_PLANCK)); + +/// Reduced Compton wavelength of the electron `lambdabar_C = hbar / (m_e c)` \[cm\]. +const COMPTON_REDUCED_E: f64 = H_BAR / (M_E * C_LIGHT); + +/// Thomson cross-section `sigma_T = (8 pi / 3) (alpha hbar / (m_e c))^2` \[cm^2\]. +/// +/// Equivalent to `(8 pi / 3) r_e^2` with the classical electron radius +/// `r_e = alpha * hbar / (m_e c)`. Expressed through the (dimensionless) +/// fine-structure constant `alpha` to avoid the esu/emu ambiguity of the +/// elementary charge in CGS. +/// +/// # Reference +/// Thomson 1906; Jackson 1998, Classical Electrodynamics, Eq. (14.117); +/// CODATA 2018. +pub const SIGMA_T: f64 = + (8.0 * PI / 3.0) * (ALPHA * ALPHA) * (COMPTON_REDUCED_E * COMPTON_REDUCED_E); diff --git a/crates/accretion-core/src/lib.rs b/crates/accretion-core/src/lib.rs index 65acba4..0f64e9d 100644 --- a/crates/accretion-core/src/lib.rs +++ b/crates/accretion-core/src/lib.rs @@ -4,13 +4,16 @@ //! dependency; `cargo test`-able in isolation. Ported from //! `BlackHoleResearch/blackhole/physics/accretion.py`. //! -//! Physical constants live in [`constants`] (generated from astropy by -//! `scripts/gen_constants.py`). Golden expected values live in -//! `tests/fixtures/golden.json` (generated by `scripts/gen_golden.py`). +//! Fundamental physical constants live in [`constants`] (generated from astropy +//! by `scripts/gen_constants.py`). Composite constants (`SIGMA_SB`, `SIGMA_T`) +//! are derived from those fundamentals in [`derived`]. Golden expected values +//! live in `tests/fixtures/golden.json` (generated by `scripts/gen_golden.py`). pub mod constants; +pub mod derived; -use constants::{C_LIGHT, G, H_PLANCK, K_BOLTZMANN, M_P, M_SUN, NM_TO_CM, SIGMA_SB, SIGMA_T}; +use constants::{C_LIGHT, G, H_PLANCK, K_BOLTZMANN, M_P, M_SUN, NM_TO_CM}; +use derived::{SIGMA_SB, SIGMA_T}; /// Eddington luminosity `L_Edd` \[erg/s\] for a black hole of mass `m_bh_msun`. /// @@ -45,6 +48,51 @@ pub fn mdot_from_luminosity(l: f64, eta: f64) -> f64 { l / (eta * C_LIGHT * C_LIGHT) } +// --------------------------------------------------------------------------- +// Time evolution / gameplay dynamics +// --------------------------------------------------------------------------- + +/// Advance the black-hole mass \[M_sun\] by `dt_s` \[s\] while accreting at +/// `mdot_gs` \[g/s\] with radiative efficiency `eta`. +/// +/// Mass grows by the rest mass that crosses the horizon, `dM/dt = (1 - eta) Mdot`; +/// the radiated fraction `eta` does not add to the hole. For a constant feed rate +/// over the step this is exact (the right-hand side is constant in `Mdot`). +/// +/// # Reference +/// Frank, King & Raine 2002, *Accretion Power in Astrophysics*, Ch. 1. +pub fn advance_mass(m_bh_msun: f64, mdot_gs: f64, eta: f64, dt_s: f64) -> f64 { + let m_g = m_bh_msun * M_SUN + (1.0 - eta) * mdot_gs * dt_s; + m_g / M_SUN +} + +/// Salpeter (Eddington) e-folding time \[s\]: the timescale on which mass grows by +/// a factor `e` when accreting at the Eddington limit with efficiency `eta`. +/// +/// `t_S = (eta / (1 - eta)) * sigma_T * c / (4 pi G m_p)`. Mass-independent, +/// because both the Eddington rate and the mass scale linearly with `M`. +/// +/// # Reference +/// Salpeter 1964, ApJ 140, 796. +pub fn salpeter_time_s(eta: f64) -> f64 { + (eta / (1.0 - eta)) * SIGMA_T * C_LIGHT / (4.0 * std::f64::consts::PI * G * M_P) +} + +/// Net disk-support fraction as a function of Eddington ratio `lambda = L / L_Edd`. +/// +/// Returns `1 - lambda`, the radiation-pressure-modified effective gravity +/// `g_eff / g`: positive (net inward, the disk is bound and recovers) for +/// `lambda < 1`, zero at the Eddington limit, and negative (net outward, the +/// disk is unbound and disrupts) for `lambda > 1`. It is dimensionless; the +/// presentation layer multiplies it by a gameplay timescale to evolve a +/// disk-integrity meter (rule 02 keeps that tuning constant out of the physics). +/// +/// # Reference +/// Eddington 1926: radiation pressure subtracts from gravity as `g(1 - L/L_Edd)`. +pub fn integrity_rate(eddington_ratio: f64) -> f64 { + 1.0 - eddington_ratio +} + /// Shakura-Sunyaev disk temperature \[K\] at radius `r_cm` \[cm\]. /// /// Bare form: `T = (3 G M Mdot / (8 pi sigma_sb r^3))^(1/4)`. Omits the inner- @@ -84,6 +132,55 @@ pub fn r_isco(m_bh_msun: f64, spin: f64) -> f64 { isco_radius(spin) * gravitational_radius_cm(m_bh_msun) } +/// Specific energy `E/(mu c^2)` (dimensionless) of the prograde ISCO circular +/// orbit at spin `spin`, i.e. the fraction of rest-mass energy a unit mass still +/// carries at the inner edge. +/// +/// `E = (r^(3/2) - 2 r^(1/2) + a) / (r^(3/4) (r^(3/2) - 3 r^(1/2) + 2 a)^(1/2))` +/// with `r = r_isco` in gravitational radii and `a = spin` (upper/prograde sign). +/// +/// # Reference +/// Bardeen, Press & Teukolsky 1972, ApJ 178, 347, Eq. (2.12)-(2.13). +pub fn isco_specific_energy(spin: f64) -> f64 { + let a = spin; + let r = isco_radius(spin); + let sqrt_r = r.sqrt(); + let r32 = r * sqrt_r; + let r34 = r32.sqrt(); + let numerator = r32 - 2.0 * sqrt_r + a; + let denominator = r34 * (r32 - 3.0 * sqrt_r + 2.0 * a).sqrt(); + numerator / denominator +} + +/// Radiative efficiency `eta = 1 - E_isco` of a thin disk around a Kerr black +/// hole of dimensionless spin `spin`. +/// +/// Ranges from ~0.057 (Schwarzschild, `a = 0`) to ~0.32 at the Thorne spin limit +/// `a = 0.998`, and up to `1 - 1/sqrt(3) ~= 0.42` as `a -> 1`. Spinning up the +/// hole therefore raises both the energy yield per gram and the proximity to the +/// Eddington edge. +/// +/// # Reference +/// Novikov & Thorne 1973; Thorne 1974, ApJ 191, 507 (spin limit). +pub fn efficiency_from_spin(spin: f64) -> f64 { + 1.0 - isco_specific_energy(spin) +} + +/// Coordinate orbital frequency \[Hz\] of a prograde circular equatorial orbit at +/// radius `r_over_rg` (in gravitational radii `R_g = GM/c^2`) around a Kerr black +/// hole of mass `m_bh_msun` and dimensionless spin `spin`. +/// +/// `Omega = c^3 / (G M) * 1 / (r^(3/2) + a)`; `f = Omega / (2 pi)`. At the ISCO +/// this is the upper bound of the orbital (and a candidate high-frequency QPO) +/// signal, scaling as `1 / M`. +/// +/// # Reference +/// Bardeen, Press & Teukolsky 1972, ApJ 178, 347, Eq. (2.16). +pub fn orbital_frequency_hz(m_bh_msun: f64, r_over_rg: f64, spin: f64) -> f64 { + let omega = C_LIGHT.powi(3) / (G * m_bh_msun * M_SUN) / (r_over_rg.powf(1.5) + spin); + omega / (2.0 * std::f64::consts::PI) +} + /// Linear sRGB blackbody color at temperature `temp_k` \[K\], brightest channel /// normalized to 1.0 (HDR-friendly chromaticity). /// diff --git a/crates/accretion-core/tests/dynamics.rs b/crates/accretion-core/tests/dynamics.rs new file mode 100644 index 0000000..9687a01 --- /dev/null +++ b/crates/accretion-core/tests/dynamics.rs @@ -0,0 +1,87 @@ +//! Analytic identities for the time-evolution / gameplay dynamics. + +use accretion_core as phys; + +const EFFICIENCY: f64 = 0.1; +const TOL: f64 = 0.000000001; +const RTOL: f64 = 0.000000001; + +/// Mass growth keeps the radiated fraction out of the hole: +/// `M(t + dt) - M(t) = (1 - eta) * Mdot * dt` exactly (in grams). +/// +/// Reference: Frank, King & Raine 2002, Ch. 1. +#[test] +fn advance_mass_retains_one_minus_eta() { + const M0: f64 = 10.0; + let mdot = phys::mdot_from_luminosity(phys::l_eddington(M0), EFFICIENCY); + // Step one Salpeter time so the mass gain is comparable to M0 (well + // conditioned); a tiny step would lose the gain to float cancellation. + let dt = phys::salpeter_time_s(EFFICIENCY); + let m1 = phys::advance_mass(M0, mdot, EFFICIENCY, dt); + let gained_g = (m1 - M0) * phys::constants::M_SUN; + let expected_g = (1.0 - EFFICIENCY) * mdot * dt; + assert!((gained_g - expected_g).abs() <= RTOL * expected_g.abs()); +} + +/// Zero feed leaves the mass unchanged regardless of efficiency. +#[test] +fn advance_mass_zero_feed_is_static() { + const M0: f64 = 4_000_000.0; + assert!((phys::advance_mass(M0, 0.0, EFFICIENCY, 1000.0) - M0).abs() < TOL); +} + +/// The Salpeter time equals `M / (dM/dt)` when accreting at the Eddington rate, +/// using an independent path through `l_eddington` / `mdot_from_luminosity`. +/// +/// Reference: Salpeter 1964, ApJ 140, 796. +#[test] +fn salpeter_time_is_eddington_efolding() { + const M: f64 = 100_000_000.0; + let mdot_edd = phys::mdot_from_luminosity(phys::l_eddington(M), EFFICIENCY); + let growth_rate_gs = (1.0 - EFFICIENCY) * mdot_edd; + let efold_s = (M * phys::constants::M_SUN) / growth_rate_gs; + let got = phys::salpeter_time_s(EFFICIENCY); + assert!((got - efold_s).abs() <= RTOL * efold_s.abs()); +} + +/// Integrity driver is the radiation-modified support fraction `1 - lambda`. +#[test] +fn integrity_rate_sign_and_marginal() { + assert!((phys::integrity_rate(0.0) - 1.0).abs() < TOL); + assert!(phys::integrity_rate(1.0).abs() < TOL); + assert!(phys::integrity_rate(2.0) < 0.0); + assert!(phys::integrity_rate(0.5) > 0.0); +} + +/// Schwarzschild radiative efficiency is exactly `1 - sqrt(8/9) ~= 0.0572`. +/// +/// Reference: Bardeen, Press & Teukolsky 1972; Novikov & Thorne 1973. +#[test] +fn efficiency_schwarzschild_is_one_minus_sqrt_8_9() { + let expected = 1.0 - (8.0_f64 / 9.0).sqrt(); + assert!((phys::efficiency_from_spin(0.0) - expected).abs() < TOL); +} + +/// Near-maximal spin (Thorne limit) lands in the canonical ~0.30-0.33 band and +/// efficiency increases monotonically with spin. +#[test] +fn efficiency_rises_with_spin() { + let eta0 = phys::efficiency_from_spin(0.0); + let eta_mid = phys::efficiency_from_spin(0.9); + let eta_thorne = phys::efficiency_from_spin(0.998); + assert!(eta0 < eta_mid); + assert!(eta_mid < eta_thorne); + assert!(eta_thorne > 0.30 && eta_thorne < 0.33); +} + +/// Orbital frequency scales as `1 / M` and is positive. +/// +/// Reference: Bardeen, Press & Teukolsky 1972. +#[test] +fn orbital_frequency_scales_inverse_mass() { + const M: f64 = 10.0; + let f1 = phys::orbital_frequency_hz(M, 6.0, 0.0); + let f2 = phys::orbital_frequency_hz(2.0 * M, 6.0, 0.0); + assert!(f1 > 0.0); + assert!((f2 - f1 / 2.0).abs() <= RTOL * (f1 / 2.0)); +} diff --git a/crates/accretion-core/tests/fixtures/golden.json b/crates/accretion-core/tests/fixtures/golden.json index 8cc9944..42e3a35 100644 --- a/crates/accretion-core/tests/fixtures/golden.json +++ b/crates/accretion-core/tests/fixtures/golden.json @@ -1,6 +1,16 @@ { "source": "astropy 6.0.1", "cases": [ + { + "fn": "sigma_sb", + "args": {}, + "expected": 5.6703744191844314e-05 + }, + { + "fn": "sigma_t", + "args": {}, + "expected": 6.6524587321000005e-25 + }, { "fn": "l_eddington", "args": { diff --git a/crates/accretion-core/tests/golden.rs b/crates/accretion-core/tests/golden.rs index 3cacdd5..e173772 100644 --- a/crates/accretion-core/tests/golden.rs +++ b/crates/accretion-core/tests/golden.rs @@ -16,6 +16,8 @@ fn golden_matches_astropy_oracle() { for case in doc["cases"].as_array().expect("cases array") { let exp = case["expected"].as_f64().expect("expected f64"); let got = match case["fn"].as_str().expect("fn name") { + "sigma_sb" => phys::derived::SIGMA_SB, + "sigma_t" => phys::derived::SIGMA_T, "l_eddington" => phys::l_eddington(case["args"]["m_bh_msun"].as_f64().unwrap()), "disk_temperature" => phys::disk_temperature( case["args"]["r_cm"].as_f64().unwrap(), diff --git a/crates/godot-ext/src/lib.rs b/crates/godot-ext/src/lib.rs index 845a59c..96a0f73 100644 --- a/crates/godot-ext/src/lib.rs +++ b/crates/godot-ext/src/lib.rs @@ -87,10 +87,56 @@ impl BlackHole { phys::isco_radius(self.spin) } + /// New mass \[M_sun\] after accreting at the current feed rate for `dt_s` \[s\]. + #[func] + fn advance_mass(&self, dt_s: f64) -> f64 { + phys::advance_mass(self.mass_solar, self.mdot_gs, self.efficiency, dt_s) + } + + /// Salpeter (Eddington) e-folding time \[s\] at the current efficiency. + #[func] + fn salpeter_time_s(&self) -> f64 { + phys::salpeter_time_s(self.efficiency) + } + + /// Disk-support fraction `1 - lambda`: >0 stable/recovering, <0 disrupting. + #[func] + fn integrity_rate(&self) -> f64 { + phys::integrity_rate(self.eddington_ratio()) + } + + /// Radiative efficiency implied by the current spin (Kerr ISCO binding energy). + #[func] + fn efficiency_from_spin(&self) -> f64 { + phys::efficiency_from_spin(self.spin) + } + #[func] fn disk_inner_color(&self) -> Color { let t = phys::disk_temperature(self.inner_radius_cm(), self.mass_solar, self.mdot_gs); let (r, g, b) = phys::blackbody_rgb(t); Color::from_rgba(r as f32, g as f32, b as f32, 1.0) } + + /// Blackbody color of the disk at `r_over_risco` ISCO radii out (clamped to the + /// inner edge), so the presentation can build a physical radial gradient. + #[func] + fn disk_color_at(&self, r_over_risco: f64) -> Color { + let r = self.inner_radius_cm() * r_over_risco.max(1.0); + let t = phys::disk_temperature(r, self.mass_solar, self.mdot_gs); + let (red, g, b) = phys::blackbody_rgb(t); + Color::from_rgba(red as f32, g as f32, b as f32, 1.0) + } + + /// Disk inner-edge temperature \[K\] (Shakura-Sunyaev at the ISCO). + #[func] + fn disk_inner_temp_k(&self) -> f64 { + phys::disk_temperature(self.inner_radius_cm(), self.mass_solar, self.mdot_gs) + } + + /// Prograde orbital frequency \[Hz\] at the ISCO (high-frequency QPO scale). + #[func] + fn isco_orbital_frequency_hz(&self) -> f64 { + phys::orbital_frequency_hz(self.mass_solar, phys::isco_radius(self.spin), self.spin) + } } diff --git a/scenes/Main.tscn b/scenes/Main.tscn index 121898a..0d261a7 100644 --- a/scenes/Main.tscn +++ b/scenes/Main.tscn @@ -1,17 +1,27 @@ -[gd_scene load_steps=9 format=3] +[gd_scene load_steps=11 format=3] [ext_resource type="Shader" path="res://shaders/blackhole.gdshader" id="1_shader"] [ext_resource type="Script" path="res://scripts/main.gd" id="2_main"] [ext_resource type="Shader" path="res://shaders/starfield_sky.gdshader" id="3_sky"] +[sub_resource type="FastNoiseLite" id="FastNoiseLite_disc"] +noise_type = 1 +frequency = 0.015 + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_disc"] +seamless = true +noise = SubResource("FastNoiseLite_disc") + [sub_resource type="ShaderMaterial" id="ShaderMaterial_disc"] shader = ExtResource("1_shader") +shader_parameter/disc_texture = SubResource("NoiseTexture2D_disc") shader_parameter/disc_outer_radius = 0.9 shader_parameter/disc_inner_radius = 0.2 shader_parameter/disc_speed = 1.5 shader_parameter/disc_color = Color(0.8, 0.18, 0.05, 1.0) shader_parameter/inner_color = Color(1.0, 1.0, 0.95, 1.0) shader_parameter/doppler_beaming_factor = 66.0 +shader_parameter/emission_strength = 1.0 shader_parameter/hue_radius = 0.75 shader_parameter/hue_shift_factor = -0.03 shader_parameter/streak_intensity = 0.5 @@ -87,6 +97,10 @@ theme_override_constants/separation = 6 theme_override_font_sizes/font_size = 18 text = "Accretion" +[node name="ClassLabel" type="Label" parent="UI/Panel/Controls"] +theme_override_colors/font_color = Color(0.6, 0.85, 1, 1) +text = "Stellar-mass black hole" + [node name="MassLabel" type="Label" parent="UI/Panel/Controls"] text = "Mass (log₁₀ M☉)" @@ -101,7 +115,7 @@ text = "Accretion rate (log₁₀ g/s)" [node name="FeedSlider" type="HSlider" parent="UI/Panel/Controls"] min_value = 14.0 -max_value = 20.0 +max_value = 28.0 step = 0.01 value = 18.0 @@ -114,6 +128,23 @@ max_value = 0.998 step = 0.002 value = 0.0 +[node name="MilestoneLabel" type="Label" parent="UI/Panel/Controls"] +theme_override_font_sizes/font_size = 12 +autowrap_mode = 3 +text = "Next milestone" + +[node name="MilestoneBar" type="ProgressBar" parent="UI/Panel/Controls"] +custom_minimum_size = Vector2(0, 10) +show_percentage = false + +[node name="IntegrityLabel" type="Label" parent="UI/Panel/Controls"] +theme_override_font_sizes/font_size = 12 +text = "Disk integrity" + +[node name="IntegrityBar" type="ProgressBar" parent="UI/Panel/Controls"] +custom_minimum_size = Vector2(0, 14) +value = 100.0 + [node name="StatsLabel" type="RichTextLabel" parent="UI/Panel/Controls"] custom_minimum_size = Vector2(0, 200) bbcode_enabled = true @@ -135,3 +166,23 @@ theme_override_colors/font_color = Color(0.7, 0.75, 0.85, 1) theme_override_font_sizes/font_size = 11 autowrap_mode = 3 text = "controls" + +[node name="Banner" type="Label" parent="UI"] +visible = false +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -300.0 +offset_top = -60.0 +offset_right = 300.0 +offset_bottom = 60.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(1, 0.85, 0.4, 1) +theme_override_font_sizes/font_size = 22 +horizontal_alignment = 1 +vertical_alignment = 1 +autowrap_mode = 3 +text = "BANNER" diff --git a/scripts/gen_constants.py b/scripts/gen_constants.py index b687509..e95cac6 100644 --- a/scripts/gen_constants.py +++ b/scripts/gen_constants.py @@ -1,27 +1,34 @@ #!/usr/bin/env python3 """Generate crates/accretion-core/src/constants.rs from astropy (CGS). -Single source of truth. Re-run to update; commit the diff. Do not hand-edit the output. +Single source of truth for the FUNDAMENTAL constants. Composite constants +(Stefan-Boltzmann sigma_sb, Thomson cross-section sigma_T) are NOT emitted here; +they are derived from these fundamentals in `accretion-core::derived`, where the +mathematical relation is exact and explicit. Re-run to update; commit the diff. +Do not hand-edit the output. """ from __future__ import annotations import astropy import astropy.constants as c +# Only FUNDAMENTAL constants. Anything that is an exact mathematical function of +# these (sigma_sb, sigma_T) is derived in Rust, not tabulated here. vals = { "G": (float(c.G.cgs.value), "cm^3 g^-1 s^-2", "astropy.constants.G"), "C_LIGHT": (float(c.c.cgs.value), "cm s^-1", "astropy.constants.c"), "M_SUN": (float(c.M_sun.cgs.value), "g", "astropy.constants.M_sun"), "M_P": (float(c.m_p.cgs.value), "g", "astropy.constants.m_p"), - "SIGMA_T": (float(c.sigma_T.cgs.value), "cm^2", "astropy.constants.sigma_T"), - "SIGMA_SB": (float(c.sigma_sb.cgs.value), "erg cm^-2 s^-1 K^-4", "astropy.constants.sigma_sb"), + "M_E": (float(c.m_e.cgs.value), "g", "astropy.constants.m_e"), "H_PLANCK": (float(c.h.cgs.value), "erg s", "astropy.constants.h"), "K_BOLTZMANN": (float(c.k_B.cgs.value), "erg K^-1", "astropy.constants.k_B"), + "ALPHA": (float(c.alpha.value), "dimensionless", "astropy.constants.alpha"), } out = [ f"// GENERATED by scripts/gen_constants.py from astropy {astropy.__version__}.\n", - "// Do not edit by hand. Single source of truth for physical constants (CGS).\n\n", + "// Do not edit by hand. Single source of truth for FUNDAMENTAL constants (CGS).\n", + "// Composite constants (sigma_sb, sigma_T) are derived in `crate::derived`.\n\n", ] for name, (val, unit, src) in vals.items(): out.append(f"/// {src} [{unit}]\n") @@ -31,5 +38,7 @@ out.append("/// Nanometres to centimetres [cm nm^-1] (exact: 1 nm = 1e-7 cm).\n") out.append("pub const NM_TO_CM: f64 = 1e-7;\n\n") -open("crates/accretion-core/src/constants.rs", "w").write("".join(out)) +# Single trailing newline (rustfmt-clean), internal spacing preserved. +text = "".join(out).rstrip() + "\n" +open("crates/accretion-core/src/constants.rs", "w").write(text) print("wrote constants.rs from astropy", astropy.__version__) diff --git a/scripts/gen_golden.py b/scripts/gen_golden.py index f299692..4ca4f4d 100644 --- a/scripts/gen_golden.py +++ b/scripts/gen_golden.py @@ -33,6 +33,15 @@ def disk_t(r: float, m: float, md: float) -> float: cases: list[dict] = [] + +# Derived constants: pin the Rust derivation against astropy's tabulated value. +# sigma_sb is exact (2019 SI); sigma_T is consistent to CODATA's internal +# precision (the Rust value uses alpha; astropy uses e/eps0/m_e). +cases.append( + {"fn": "sigma_sb", "args": {}, "expected": float(c.sigma_sb.cgs.value)} +) +cases.append({"fn": "sigma_t", "args": {}, "expected": float(c.sigma_T.cgs.value)}) + for m in (10.0, 1.0e6, 6.5e9): cases.append({"fn": "l_eddington", "args": {"m_bh_msun": m}, "expected": l_edd(m)}) diff --git a/scripts/hud_format.gd b/scripts/hud_format.gd index 49d8a1b..6dc431c 100644 --- a/scripts/hud_format.gd +++ b/scripts/hud_format.gd @@ -42,6 +42,29 @@ static func lambda_edd(lam: float) -> String: return "%.3f× Edd" % lam +static func years(seconds: float) -> String: + var yr := seconds / 31557600.0 # Julian year + if yr >= 1.0e9: + return "%.2f Gyr" % (yr / 1.0e9) + if yr >= 1.0e6: + return "%.2f Myr" % (yr / 1.0e6) + if yr >= 1.0e3: + return "%.2f kyr" % (yr / 1.0e3) + return "%.0f yr" % yr + + +static func hertz(f: float) -> String: + if f >= 1.0e3: + return "%.2f kHz" % (f / 1.0e3) + if f >= 1.0: + return "%.2f Hz" % f + if f >= 1.0e-3: + return "%.2f mHz" % (f * 1.0e3) + if f >= 1.0e-6: + return "%.2f µHz" % (f * 1.0e6) + return "%s Hz" % sci(f, 2) + + static func sci(x: float, sig: int) -> String: if x == 0.0: return "0" diff --git a/scripts/main.gd b/scripts/main.gd index 728b340..e9901af 100644 --- a/scripts/main.gd +++ b/scripts/main.gd @@ -1,58 +1,107 @@ extends Node3D -## Game controller: input, camera orbit, and telemetry HUD. +## Game controller: the accretion survival loop, cinematic camera, and HUD. ## -## Presentation only (rule 10). Every physical quantity displayed here is read -## from the BlackHole gdext node, which delegates to accretion-core in Rust. -## This script formats and logs; it never computes physics. +## Presentation only (rule 10). Every physical quantity is read from the +## BlackHole gdext node, which delegates to accretion-core in Rust. This script +## steps game state in time, formats telemetry, and drives shader uniforms; it +## never computes physics itself. Gameplay tuning constants (time compression, +## meter rates) live here, deliberately separated from the physics (rule 02 §6). -const PRESET_CYGX1 := {"name": "Cyg X-1", "mass": 21.0, "mdot": 1.0e18} -const PRESET_SGRA := {"name": "Sgr A*", "mass": 4.0e6, "mdot": 1.0e15} -const PRESET_M87 := {"name": "M87*", "mass": 6.5e9, "mdot": 1.0e19} +const PRESET_CYGX1 := {"name": "Cyg X-1", "mass": 21.0, "mdot": 1.0e19} +const PRESET_SGRA := {"name": "Sgr A*", "mass": 4.0e6, "mdot": 3.0e24} +const PRESET_M87 := {"name": "M87*", "mass": 6.5e9, "mdot": 3.0e27} + +## Growth goals, in ascending mass. The loop always points at the next one. +const MILESTONES := [ + {"mass": 21.0, "name": "Cyg X-1 — stellar-mass"}, + {"mass": 1.0e3, "name": "Intermediate-mass (IMBH)"}, + {"mass": 1.0e5, "name": "Seed supermassive"}, + {"mass": 4.0e6, "name": "Sgr A* — galactic centre"}, + {"mass": 1.0e8, "name": "Supermassive"}, + {"mass": 6.5e9, "name": "M87* — giant elliptical"}, +] + +## Real seconds for an Eddington-limited (lambda=1) e-fold of mass. Lower = faster. +const SECONDS_PER_EFOLD := 22.0 +## Disk-integrity meter response (fraction per real second at |1 - lambda| = 1). +const DRAIN_SCALE := 0.55 +const RECOVER_SCALE := 0.16 +## Integrity the disk rebuilds to after a disruption. +const DISRUPT_RESET := 0.35 + +const IDLE_BEFORE_AUTORBIT := 4.0 +const AUTORBIT_SPEED := 0.07 +const CAM_SMOOTH := 7.0 +const INTRO_DOLLY_FROM := 30.0 +const DISK_BASE_SCALE := 4.0 +const OUTER_RG := 26.0 # visual disk outer edge, in gravitational radii +const GRADIENT_OUTER_RISCO := 14.0 # outer color sampled this many ISCO radii out @onready var black_hole: Node = $BlackHole @onready var camera: Camera3D = $Camera3D +@onready var disk_mesh: Node3D = $DiskMesh @onready var mass_slider: HSlider = $UI/Panel/Controls/MassSlider @onready var feed_slider: HSlider = $UI/Panel/Controls/FeedSlider @onready var spin_slider: HSlider = $UI/Panel/Controls/SpinSlider @onready var title_label: Label = $UI/Panel/Controls/TitleLabel +@onready var class_label: Label = $UI/Panel/Controls/ClassLabel +@onready var milestone_label: Label = $UI/Panel/Controls/MilestoneLabel +@onready var milestone_bar: ProgressBar = $UI/Panel/Controls/MilestoneBar +@onready var integrity_bar: ProgressBar = $UI/Panel/Controls/IntegrityBar @onready var stats_label: RichTextLabel = $UI/Panel/Controls/StatsLabel @onready var warning_label: Label = $UI/Panel/Controls/WarningLabel @onready var swatch: ColorRect = $UI/Panel/Controls/Swatch @onready var help_label: Label = $UI/Panel/Controls/HelpLabel +@onready var banner: Label = $UI/Banner -var _cam_dist := 9.0 -var _cam_yaw := 0.0 -var _cam_pitch := 0.12 -var _dragging := false +var _mass := 10.0 +var _integrity := 1.0 +var _sim_seconds := 0.0 var _preset_name := "custom" +var _class_name := "" var _was_super_eddington := false +var _setting_slider := false +var _banner_time := 0.0 + +var _cam_dist := 9.0 +var _cam_yaw := 0.4 +var _cam_pitch := 0.16 +var _target_dist := 9.0 +var _target_yaw := 0.4 +var _target_pitch := 0.16 +var _dragging := false +var _idle_time := 0.0 func _ready() -> void: - camera.look_at(Vector3.ZERO, Vector3.UP) - mass_slider.value_changed.connect(_on_control_changed) - feed_slider.value_changed.connect(_on_control_changed) - spin_slider.value_changed.connect(_on_control_changed) - _apply_sliders() - _update_camera() - print("[accretion] ready — presets 1=Cyg X-1, 2=Sgr A*, 3=M87*; push feed past Eddington with Z/X") + mass_slider.value_changed.connect(_on_mass_changed) + feed_slider.value_changed.connect(_on_feed_changed) + spin_slider.value_changed.connect(_on_spin_changed) + _mass = pow(10.0, mass_slider.value) + integrity_bar.min_value = 0.0 + integrity_bar.max_value = 1.0 + milestone_bar.min_value = 0.0 + milestone_bar.max_value = 1.0 + banner.visible = false + _apply_inputs() + _cam_dist = INTRO_DOLLY_FROM # intro dolly: glide in to the framing distance + _update_camera_transform() + print("[accretion] Feed the disk to grow. Ride the Eddington limit — push λ past 1 and the disk is blown apart. 1/2/3 = presets.") func _input(event: InputEvent) -> void: if event is InputEventMouseButton: if event.button_index == MOUSE_BUTTON_LEFT: _dragging = event.pressed + if event.pressed and event.button_index == MOUSE_BUTTON_WHEEL_UP: + _target_dist = max(_target_dist - 0.7, 4.0) + elif event.pressed and event.button_index == MOUSE_BUTTON_WHEEL_DOWN: + _target_dist = min(_target_dist + 0.7, 20.0) + _idle_time = 0.0 if event is InputEventMouseMotion and _dragging: - _cam_yaw -= event.relative.x * 0.005 - _cam_pitch = clamp(_cam_pitch - event.relative.y * 0.004, -0.35, 0.55) - _update_camera() - if event is InputEventMouseButton and event.pressed: - if event.button_index == MOUSE_BUTTON_WHEEL_UP: - _cam_dist = max(_cam_dist - 0.6, 4.0) - _update_camera() - elif event.button_index == MOUSE_BUTTON_WHEEL_DOWN: - _cam_dist = min(_cam_dist + 0.6, 18.0) - _update_camera() + _target_yaw -= event.relative.x * 0.005 + _target_pitch = clamp(_target_pitch - event.relative.y * 0.004, -0.35, 0.6) + _idle_time = 0.0 func _unhandled_input(event: InputEvent) -> void: @@ -79,33 +128,121 @@ func _unhandled_input(event: InputEvent) -> void: _apply_preset(PRESET_M87) -func _on_control_changed(_v: float) -> void: +func _on_mass_changed(v: float) -> void: + if _setting_slider: + return _preset_name = "custom" - _apply_sliders() + _mass = pow(10.0, v) + _apply_inputs() + + +func _on_feed_changed(_v: float) -> void: + if _setting_slider: + return + _preset_name = "custom" + _apply_inputs() + + +func _on_spin_changed(_v: float) -> void: + if _setting_slider: + return + _apply_inputs() func _apply_preset(p: Dictionary) -> void: _preset_name = p.name - mass_slider.value = log(p.mass) / log(10.0) - feed_slider.value = log(p.mdot) / log(10.0) - print("[accretion] preset → %s (M=%s, Ṁ=%s g/s)" % [ - p.name, HudFormat.mass_msun(p.mass), HudFormat.grams_per_s(p.mdot) - ]) - _apply_sliders() + _mass = p.mass + _set_slider_silent(mass_slider, log(p.mass) / log(10.0)) + _set_slider_silent(feed_slider, log(p.mdot) / log(10.0)) + _apply_inputs() + print("[accretion] preset → %s" % p.name) -func _apply_sliders() -> void: - black_hole.set("mass_solar", pow(10.0, mass_slider.value)) +## Push current inputs into the Rust node. Efficiency tracks spin (Kerr ISCO). +func _apply_inputs() -> void: + black_hole.set("mass_solar", _mass) black_hole.set("mdot_gs", pow(10.0, feed_slider.value)) black_hole.set("spin", spin_slider.value) - _refresh_hud() + black_hole.set("efficiency", black_hole.call("efficiency_from_spin")) -func _process(_delta: float) -> void: +func _process(delta: float) -> void: + _step_simulation(delta) + _update_camera(delta) _refresh_hud() + _drive_graphics() + if _banner_time > 0.0: + _banner_time -= delta + if _banner_time <= 0.0: + banner.visible = false + + +## Advance mass and disk integrity in simulated time (compressed from real time). +func _step_simulation(delta: float) -> void: + black_hole.set("efficiency", black_hole.call("efficiency_from_spin")) + var t_salpeter: float = black_hole.call("salpeter_time_s") + var dt_sim := delta * t_salpeter / SECONDS_PER_EFOLD + _sim_seconds += dt_sim + + _mass = black_hole.call("advance_mass", dt_sim) + black_hole.set("mass_solar", _mass) + _set_slider_silent(mass_slider, clamp(log(_mass) / log(10.0), mass_slider.min_value, mass_slider.max_value)) + + # Disk integrity: drains super-Eddington, slowly rebuilds when sub-Eddington. + var rate: float = black_hole.call("integrity_rate") # 1 - lambda + if rate < 0.0: + _integrity += rate * DRAIN_SCALE * delta + else: + _integrity += min(rate, 1.0) * RECOVER_SCALE * delta + _integrity = clamp(_integrity, 0.0, 1.0) + if _integrity <= 0.0: + _on_disruption() + + _update_class() + + +func _on_disruption() -> void: + _integrity = DISRUPT_RESET + _set_slider_silent(feed_slider, feed_slider.min_value) + black_hole.set("mdot_gs", pow(10.0, feed_slider.min_value)) + _show_banner("DISK DISRUPTED\nRadiation pressure overwhelmed gravity (λ > 1). The disk was blown apart — ramp the feed back up carefully.", 4.0) + push_warning("[accretion] disk disrupted at λ > 1 — feed reset") -func _update_camera() -> void: +func _update_class() -> void: + var cls := "Stellar-mass black hole" + if _mass >= 1.0e8: + cls = "Supermassive black hole" + elif _mass >= 1.0e5: + cls = "Seed supermassive black hole" + elif _mass >= 1.0e2: + cls = "Intermediate-mass black hole" + if cls != _class_name: + if _class_name != "": + _show_banner("MILESTONE — now a %s" % cls, 3.0) + print("[accretion] reclassified → %s (M = %s)" % [cls, HudFormat.mass_msun(_mass)]) + _class_name = cls + + +func _next_milestone() -> Dictionary: + for m in MILESTONES: + if m.mass > _mass: + return m + return {"mass": MILESTONES[-1].mass, "name": "%s (reached)" % MILESTONES[-1].name} + + +func _update_camera(delta: float) -> void: + _idle_time += delta + if _idle_time > IDLE_BEFORE_AUTORBIT and not _dragging: + _target_yaw += AUTORBIT_SPEED * delta + var k := 1.0 - exp(-delta * CAM_SMOOTH) + _cam_yaw = lerp(_cam_yaw, _target_yaw, k) + _cam_pitch = lerp(_cam_pitch, _target_pitch, k) + _cam_dist = lerp(_cam_dist, _target_dist, k) + _update_camera_transform() + + +func _update_camera_transform() -> void: var offset := Vector3( _cam_dist * cos(_cam_pitch) * sin(_cam_yaw), _cam_dist * sin(_cam_pitch) + 2.0, @@ -115,55 +252,104 @@ func _update_camera() -> void: camera.look_at(Vector3.ZERO, Vector3.UP) +## Drive shader uniforms and disk scale from Rust-computed physics. +func _drive_graphics() -> void: + var mat: ShaderMaterial = black_hole.get("disk_material") + if mat == null: + return + var spin: float = black_hole.get("spin") + var isco_rg: float = black_hole.call("isco_in_rg") + var horizon_rg := 1.0 + sqrt(max(1.0 - spin * spin, 0.0)) # r_+ = 1 + sqrt(1 - a^2) + + # Inner/outer disk colors from blackbody physics (inner_color also set in Rust). + mat.set_shader_parameter("inner_color", black_hole.call("disk_color_at", 1.0)) + mat.set_shader_parameter("disc_color", black_hole.call("disk_color_at", GRADIENT_OUTER_RISCO)) + + # Spin tightens the inner edge and shrinks the horizon, visibly (ratios of r_g). + mat.set_shader_parameter("disc_inner_radius", clamp(isco_rg / OUTER_RG, 0.05, 0.6)) + mat.set_shader_parameter("ss_radius", clamp(horizon_rg / OUTER_RG, 0.02, 0.3)) + + # Bounded HDR bloom from the real inner temperature (presentation tone-map of T). + var t_in: float = black_hole.call("disk_inner_temp_k") + var log_t: float = clamp(log(max(t_in, 1.0)) / log(10.0), 4.0, 7.5) + var emission: float = remap(log_t, 4.0, 7.5, 0.6, 3.2) + mat.set_shader_parameter("emission_strength", emission) + + # Disk grows with mass class to make progression visible. + var class_scale := 1.0 + 0.12 * _class_index() + disk_mesh.scale = Vector3.ONE * DISK_BASE_SCALE * class_scale + + +func _class_index() -> int: + if _mass >= 1.0e8: + return 3 + if _mass >= 1.0e5: + return 2 + if _mass >= 1.0e2: + return 1 + return 0 + + func _refresh_hud() -> void: var m: float = black_hole.get("mass_solar") var mdot: float = black_hole.get("mdot_gs") var spin: float = black_hole.get("spin") + var eta: float = black_hole.get("efficiency") var l_edd: float = black_hole.call("l_eddington") var l_bol: float = black_hole.call("luminosity_erg_s") var lam: float = black_hole.call("eddington_ratio") var r_in: float = black_hole.call("inner_radius_cm") var r_s: float = black_hole.call("schwarzschild_radius_cm") var isco_rg: float = black_hole.call("isco_in_rg") - var t_in: float = black_hole.call("disk_inner_temp", r_in) + var t_in: float = black_hole.call("disk_inner_temp_k") + var f_qpo: float = black_hole.call("isco_orbital_frequency_hz") + var t_salpeter: float = black_hole.call("salpeter_time_s") var c: Color = black_hole.call("disk_inner_color") swatch.color = c title_label.text = "Accretion — %s" % _preset_name + class_label.text = _class_name + + var next: Dictionary = _next_milestone() + milestone_label.text = "Next: %s (%s)" % [next.name, HudFormat.mass_msun(next.mass)] + milestone_bar.value = clamp(log(_mass) / log(next.mass), 0.0, 1.0) + + integrity_bar.value = _integrity + integrity_bar.modulate = Color(1.0, 0.4, 0.25) if _integrity < 0.35 else Color(0.4, 0.9, 1.0) var super_edd := lam > 1.0 if super_edd and not _was_super_eddington: - push_warning("[accretion] super-Eddington: λ=%.2f — loss condition (future gameplay)" % lam) - elif not super_edd and _was_super_eddington: - print("[accretion] sub-Eddington again: λ=%.3f" % lam) + push_warning("[accretion] super-Eddington: λ=%.2f — disk integrity draining" % lam) _was_super_eddington = super_edd warning_label.visible = super_edd - warning_label.text = ( - "SUPER-EDDINGTON — λ = %s\n" - % HudFormat.lambda_edd(lam) - + "Radiation pressure exceeds gravity; the disk would be blown apart." - ) - warning_label.modulate = Color(1.0, 0.35, 0.2) if super_edd else Color.WHITE + warning_label.text = "SUPER-EDDINGTON — λ = %s\nRadiation pressure exceeds gravity; integrity is draining." % HudFormat.lambda_edd(lam) + warning_label.modulate = Color(1.0, 0.35, 0.2) stats_label.text = ( - "[b]Black hole[/b]\n" + "[b]Black hole[/b] [color=gray]sim t = %s[/color]\n" % HudFormat.years(_sim_seconds) + " mass M = [color=cyan]%s[/color]\n" % HudFormat.mass_msun(m) - + " spin a/M = %.2f ISCO = %.2f R_g (%.1f r_s)\n" % [spin, isco_rg, isco_rg / 2.0] - + " Schwarzschild radius r_s = %s\n" % HudFormat.cm(r_s) - + " ISCO radius r_in = %s\n\n" % HudFormat.cm(r_in) + + " spin a/M = %.3f → η = [color=violet]%.1f%%[/color]\n" % [spin, eta * 100.0] + + " ISCO = %.2f R_g r_s = %s\n" % [isco_rg, HudFormat.cm(r_s)] + + " e-fold time (at λ=1) = %s\n\n" % HudFormat.years(t_salpeter) + "[b]Accretion[/b]\n" - + " accretion rate Ṁ = [color=yellow]%s[/color]\n" % HudFormat.grams_per_s(mdot) - + " bolometric luminosity L = %s\n" % HudFormat.erg_per_s(l_bol) - + " Eddington limit L_Edd = %s\n" % HudFormat.erg_per_s(l_edd) - + " Eddington ratio λ = [color=%s]%s[/color]\n\n" % [ - "red" if super_edd else "lightgreen", HudFormat.lambda_edd(lam) - ] - + "[b]Inner disk edge[/b] [color=gray](computed in Rust)[/color]\n" - + " temperature T = [color=orange]%s[/color]\n" % HudFormat.kelvin(t_in) - + " blackbody sRGB = (%.2f, %.2f, %.2f)" % [c.r, c.g, c.b] + + " feed Ṁ = [color=yellow]%s[/color]\n" % HudFormat.grams_per_s(mdot) + + " L = %s L_Edd = %s\n" % [HudFormat.erg_per_s(l_bol), HudFormat.erg_per_s(l_edd)] + + " λ = [color=%s]%s[/color]\n\n" % ["red" if super_edd else "lightgreen", HudFormat.lambda_edd(lam)] + + "[b]Inner edge[/b] [color=gray](computed in Rust)[/color]\n" + + " T = [color=orange]%s[/color] QPO f = %s\n" % [HudFormat.kelvin(t_in), HudFormat.hertz(f_qpo)] ) - help_label.text = ( - "Q/E · mass Z/X · feed A/D · spin 1/2/3 · presets drag · orbit scroll · zoom" - ) + help_label.text = "Q/E mass · Z/X feed · A/D spin · 1/2/3 presets · drag orbit · scroll zoom" + + +func _set_slider_silent(slider: HSlider, value: float) -> void: + _setting_slider = true + slider.value = value + _setting_slider = false + + +func _show_banner(text: String, seconds: float) -> void: + banner.text = text + banner.visible = true + _banner_time = seconds diff --git a/shaders/blackhole.gdshader b/shaders/blackhole.gdshader index 73e7b9e..3a975bd 100644 --- a/shaders/blackhole.gdshader +++ b/shaders/blackhole.gdshader @@ -51,6 +51,9 @@ uniform vec4 disc_color : source_color = vec4(1.0, 0.0, 0.0, 1.0); // Driven from Rust (accretion_core::blackbody_rgb of the inner-edge temperature). uniform vec4 inner_color : source_color = vec4(1.0, 1.0, 0.95, 1.0); uniform float doppler_beaming_factor : hint_range(0.0, 200.0) = 66.0; +// Bounded HDR bloom factor; driven from Rust as a tone-map of the inner-edge +// temperature, so hotter disks visibly bloom brighter (presentation only). +uniform float emission_strength : hint_range(0.1, 6.0) = 1.0; uniform float hue_radius : hint_range(0.0, 1.0) = 0.75; uniform float hue_shift_factor : hint_range(-1.0, 1.0) = -0.03; uniform float streak_intensity : hint_range(0.0, 1.0) = 0.5; @@ -403,6 +406,7 @@ void fragment() { } disc_hit *= tex_col * disc_color.a * streaks * horizon_fade * radial_falloff; + final_disc_col *= emission_strength; vec3 col = mix(background_col, final_disc_col, disc_hit); ALBEDO = col; From 6cdc1597ae1e856785c72f3f6b483134732bc79d Mon Sep 17 00:00:00 2001 From: ysSemanticSystems Date: Sat, 20 Jun 2026 23:50:58 -0500 Subject: [PATCH 2/8] Add run scoring, win/lose lifecycle, and Kerr spin-up Give the survival loop replay value: win by reaching M87*, lose after three super-Eddington disruptions, live score with persisted high score, end-of-run overlay, and R/Enter restart. Challenge presets 1/2/3 set different starting conditions; the HUD shows the lambda=1 feed ceiling. Physics: mdot_at_eddington, ISCO specific angular momentum (BPT 1972), and advance_spin from accreted ISCO angular momentum (King & Raine 2002), with identity tests. Presentation: QPO hotspot flicker in the disk shader driven from the Rust ISCO orbital frequency. --- CHANGELOG.md | 10 ++ crates/accretion-core/src/lib.rs | 56 ++++++ crates/accretion-core/tests/dynamics.rs | 30 ++++ crates/godot-ext/src/lib.rs | 18 ++ rust_out | Bin 0 -> 486408 bytes scenes/Main.tscn | 44 ++++- scripts/main.gd | 222 +++++++++++++++++------- scripts/run_score.gd | 33 ++++ shaders/blackhole.gdshader | 6 + 9 files changed, 352 insertions(+), 67 deletions(-) create mode 100755 rust_out create mode 100644 scripts/run_score.gd diff --git a/CHANGELOG.md b/CHANGELOG.md index 96e105d..4e4422e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- **Run lifecycle and replay value.** Each run starts at Cyg X-1 scale with a + clear win (reach M87*) and lose (three super-Eddington disk disruptions). + Live score, persisted high score (`user://accretion_best.run`), end-of-run + overlay, and `R`/Enter restart. Challenge presets 1/2/3 start at different + mass/feed/spin. λ-safe Ṁ ceiling shown in the HUD. +- **Kerr spin-up from accretion.** `advance_spin` and ISCO specific angular + momentum (Bardeen-Press-Teukolsky 1972; King & Raine 2002); spin now evolves + during play, raising η and tightening the ISCO. +- **QPO hotspot animation.** Shader `qpo_phase_rate` driven from the Rust ISCO + orbital frequency so the inner disk flickers at a physically scaled rate. - **Survival/progression loop.** Mass now evolves in (compressed) time via `advance_mass` (`dM/dt = (1 - eta) Mdot`, Frank/King/Raine 2002); a disk-integrity meter drains when super-Eddington and rebuilds when sub-Eddington, and reaching diff --git a/crates/accretion-core/src/lib.rs b/crates/accretion-core/src/lib.rs index 0f64e9d..96bf528 100644 --- a/crates/accretion-core/src/lib.rs +++ b/crates/accretion-core/src/lib.rs @@ -93,6 +93,62 @@ pub fn integrity_rate(eddington_ratio: f64) -> f64 { 1.0 - eddington_ratio } +/// Accretion rate \[g/s\] that yields `lambda = 1` at mass `m_bh_msun` and +/// efficiency `eta`. +/// +/// # Reference +/// Novikov & Thorne 1973; Eddington 1926. +pub fn mdot_at_eddington(m_bh_msun: f64, eta: f64) -> f64 { + mdot_from_luminosity(l_eddington(m_bh_msun), eta) +} + +/// Dimensionless specific angular momentum `l = L/(mu GM/c)` of a prograde +/// circular orbit at radius `r_over_rg` (in `R_g`) around a Kerr hole of spin +/// `spin`. +/// +/// `l = (r^2 - 2 a r^(1/2) + a^2) / (r^(1/2) (r - 3 + 2 a r^(-1/2))^(1/2))`. +/// +/// # Reference +/// Bardeen, Press & Teukolsky 1972, ApJ 178, 347, Eq. (2.15). +pub fn specific_angular_momentum(r_over_rg: f64, spin: f64) -> f64 { + let a = spin; + let r = r_over_rg; + let sqrt_r = r.sqrt(); + let numerator = r * r - 2.0 * a * sqrt_r + a * a; + let denominator = sqrt_r * (r - 3.0 + 2.0 * a / sqrt_r).sqrt(); + numerator / denominator +} + +/// ISCO specific angular momentum (dimensionless), i.e. `l_isco(a)`. +pub fn isco_specific_angular_momentum(spin: f64) -> f64 { + specific_angular_momentum(isco_radius(spin), spin) +} + +/// Advance Kerr spin parameter `spin` after accreting for `dt_s` \[s\]. +/// +/// Gas arrives at the ISCO with specific angular momentum `l_isco`; only the +/// rest-mass fraction `(1 - eta)` of the feed rate adds to the hole. In +/// geometric units `J = a M^2`, accretion gives `da/dt = (1 - eta) Mdot +/// (l_isco - 2 a) / M^2` (King & Raine 2002, spin-up of a Kerr hole). +/// +/// # Reference +/// Bardeen 1970; King & Raine 2002, *Accretion Power in Astrophysics*, Ch. 5. +pub fn advance_spin(spin: f64, m_bh_msun: f64, mdot_gs: f64, eta: f64, dt_s: f64) -> f64 { + if m_bh_msun <= 0.0 || dt_s <= 0.0 || mdot_gs <= 0.0 { + return spin; + } + let l = isco_specific_angular_momentum(spin); + let dm = (1.0 - eta) * mdot_gs * dt_s; + let da = dm * (l - 2.0 * spin) / (m_bh_msun * M_SUN); + (spin + da).clamp(0.0, THORNE_SPIN_LIMIT) +} + +/// Thorne (1974) maximum prograde spin of a thin disk (`a/M ~= 0.998`). +/// +/// # Reference +/// Thorne 1974, ApJ 191, 507. +pub const THORNE_SPIN_LIMIT: f64 = 0.998; + /// Shakura-Sunyaev disk temperature \[K\] at radius `r_cm` \[cm\]. /// /// Bare form: `T = (3 G M Mdot / (8 pi sigma_sb r^3))^(1/4)`. Omits the inner- diff --git a/crates/accretion-core/tests/dynamics.rs b/crates/accretion-core/tests/dynamics.rs index 9687a01..a5726cc 100644 --- a/crates/accretion-core/tests/dynamics.rs +++ b/crates/accretion-core/tests/dynamics.rs @@ -85,3 +85,33 @@ fn orbital_frequency_scales_inverse_mass() { assert!(f1 > 0.0); assert!((f2 - f1 / 2.0).abs() <= RTOL * (f1 / 2.0)); } + +/// Schwarzschild ISCO specific angular momentum is `6 sqrt(2)` in the BPT +/// dimensionless convention used by `advance_spin`. +/// +/// Reference: Bardeen, Press & Teukolsky 1972, Eq. (2.15) at `r = 6`, `a = 0`. +#[test] +fn isco_angular_momentum_schwarzschild() { + let expected = 6.0 * 2.0_f64.sqrt(); + assert!((phys::isco_specific_angular_momentum(0.0) - expected).abs() < TOL); + assert!((phys::specific_angular_momentum(6.0, 0.0) - expected).abs() < TOL); +} + +/// Prograde accretion spins the hole up when `l_isco > 2 a`. +#[test] +fn advance_spin_increases_from_zero() { + const M0: f64 = 10.0; + let mdot = phys::mdot_from_luminosity(phys::l_eddington(M0), EFFICIENCY); + let dt = phys::salpeter_time_s(EFFICIENCY); + let a1 = phys::advance_spin(0.0, M0, mdot, EFFICIENCY, dt); + assert!(a1 > 0.0); + assert!(a1 <= phys::THORNE_SPIN_LIMIT); +} + +/// Eddington feed rate reproduces `lambda = 1`. +#[test] +fn mdot_at_eddington_is_unit_lambda() { + const M: f64 = 42.0; + let mdot = phys::mdot_at_eddington(M, EFFICIENCY); + assert!((phys::eddington_ratio(M, mdot, EFFICIENCY) - 1.0).abs() < RTOL); +} diff --git a/crates/godot-ext/src/lib.rs b/crates/godot-ext/src/lib.rs index 96a0f73..e82efe7 100644 --- a/crates/godot-ext/src/lib.rs +++ b/crates/godot-ext/src/lib.rs @@ -111,6 +111,24 @@ impl BlackHole { phys::efficiency_from_spin(self.spin) } + /// Accretion rate \[g/s\] at the Eddington limit (`lambda = 1`) for current mass. + #[func] + fn mdot_at_eddington(&self) -> f64 { + phys::mdot_at_eddington(self.mass_solar, self.efficiency) + } + + /// Kerr spin after accreting at the current feed for `dt_s` \[s\]. + #[func] + fn advance_spin(&self, dt_s: f64) -> f64 { + phys::advance_spin( + self.spin, + self.mass_solar, + self.mdot_gs, + self.efficiency, + dt_s, + ) + } + #[func] fn disk_inner_color(&self) -> Color { let t = phys::disk_temperature(self.inner_radius_cm(), self.mass_solar, self.mdot_gs); diff --git a/rust_out b/rust_out new file mode 100755 index 0000000000000000000000000000000000000000..5887df049b69096e8bff246af79684817dde678a GIT binary patch literal 486408 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�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 void: mass_slider.value_changed.connect(_on_mass_changed) feed_slider.value_changed.connect(_on_feed_changed) spin_slider.value_changed.connect(_on_spin_changed) - _mass = pow(10.0, mass_slider.value) integrity_bar.min_value = 0.0 integrity_bar.max_value = 1.0 milestone_bar.min_value = 0.0 milestone_bar.max_value = 1.0 banner.visible = false - _apply_inputs() - _cam_dist = INTRO_DOLLY_FROM # intro dolly: glide in to the framing distance + run_overlay.visible = false + _best_score = RunScore.load_best() + _start_run(START_PRESET) + _cam_dist = INTRO_DOLLY_FROM _update_camera_transform() - print("[accretion] Feed the disk to grow. Ride the Eddington limit — push λ past 1 and the disk is blown apart. 1/2/3 = presets.") + print("[accretion] Grow to M87* without losing the disk three times. R = new run · 1/2/3 = challenge presets") func _input(event: InputEvent) -> void: + if _phase == RunPhase.ENDED: + return if event is InputEventMouseButton: if event.button_index == MOUSE_BUTTON_LEFT: _dragging = event.pressed @@ -107,6 +119,11 @@ func _input(event: InputEvent) -> void: func _unhandled_input(event: InputEvent) -> void: if not event is InputEventKey or not event.pressed: return + if event.keycode == KEY_R or event.keycode == KEY_ENTER or event.keycode == KEY_KP_ENTER: + _start_run(_current_preset_dict()) + return + if _phase == RunPhase.ENDED: + return match event.keycode: KEY_Q, KEY_COMMA: mass_slider.value = max(mass_slider.min_value, mass_slider.value - 0.05) @@ -121,15 +138,54 @@ func _unhandled_input(event: InputEvent) -> void: KEY_D: spin_slider.value = min(spin_slider.max_value, spin_slider.value + 0.02) KEY_1: - _apply_preset(PRESET_CYGX1) + _start_run(PRESET_CYGX1) KEY_2: - _apply_preset(PRESET_SGRA) + _start_run(PRESET_SGRA) KEY_3: - _apply_preset(PRESET_M87) + _start_run(PRESET_M87) + + +func _current_preset_dict() -> Dictionary: + match _preset_name: + PRESET_CYGX1.name: + return PRESET_CYGX1 + PRESET_SGRA.name: + return PRESET_SGRA + PRESET_M87.name: + return PRESET_M87 + _: + return { + "name": "custom", + "mass": _mass, + "mdot": black_hole.get("mdot_gs"), + "spin": black_hole.get("spin"), + } + + +func _start_run(p: Dictionary) -> void: + _phase = RunPhase.PLAYING + run_overlay.visible = false + _preset_name = p.name + _mass = p.mass + _integrity = 1.0 + _sim_seconds = 0.0 + _disruptions = 0 + _milestones_hit = 0 + _milestone_idx = 0 + _class_name = "" + _victory = false + _was_super_eddington = false + _set_slider_silent(mass_slider, log(_mass) / log(10.0)) + _set_slider_silent(feed_slider, log(p.mdot) / log(10.0)) + _set_slider_silent(spin_slider, p.get("spin", 0.0)) + _apply_inputs() + _update_class() + _show_banner("RUN START — feed the disk, ride λ ≤ 1, reach M87*", 2.5) + print("[accretion] new run → %s" % p.name) func _on_mass_changed(v: float) -> void: - if _setting_slider: + if _setting_slider or _phase != RunPhase.PLAYING: return _preset_name = "custom" _mass = pow(10.0, v) @@ -137,28 +193,18 @@ func _on_mass_changed(v: float) -> void: func _on_feed_changed(_v: float) -> void: - if _setting_slider: + if _setting_slider or _phase != RunPhase.PLAYING: return _preset_name = "custom" _apply_inputs() func _on_spin_changed(_v: float) -> void: - if _setting_slider: + if _setting_slider or _phase != RunPhase.PLAYING: return _apply_inputs() -func _apply_preset(p: Dictionary) -> void: - _preset_name = p.name - _mass = p.mass - _set_slider_silent(mass_slider, log(p.mass) / log(10.0)) - _set_slider_silent(feed_slider, log(p.mdot) / log(10.0)) - _apply_inputs() - print("[accretion] preset → %s" % p.name) - - -## Push current inputs into the Rust node. Efficiency tracks spin (Kerr ISCO). func _apply_inputs() -> void: black_hole.set("mass_solar", _mass) black_hole.set("mdot_gs", pow(10.0, feed_slider.value)) @@ -167,7 +213,8 @@ func _apply_inputs() -> void: func _process(delta: float) -> void: - _step_simulation(delta) + if _phase == RunPhase.PLAYING: + _step_simulation(delta) _update_camera(delta) _refresh_hud() _drive_graphics() @@ -177,7 +224,6 @@ func _process(delta: float) -> void: banner.visible = false -## Advance mass and disk integrity in simulated time (compressed from real time). func _step_simulation(delta: float) -> void: black_hole.set("efficiency", black_hole.call("efficiency_from_spin")) var t_salpeter: float = black_hole.call("salpeter_time_s") @@ -188,8 +234,11 @@ func _step_simulation(delta: float) -> void: black_hole.set("mass_solar", _mass) _set_slider_silent(mass_slider, clamp(log(_mass) / log(10.0), mass_slider.min_value, mass_slider.max_value)) - # Disk integrity: drains super-Eddington, slowly rebuilds when sub-Eddington. - var rate: float = black_hole.call("integrity_rate") # 1 - lambda + var spin: float = black_hole.call("advance_spin", dt_sim) + black_hole.set("spin", spin) + _set_slider_silent(spin_slider, spin) + + var rate: float = black_hole.call("integrity_rate") if rate < 0.0: _integrity += rate * DRAIN_SCALE * delta else: @@ -198,15 +247,54 @@ func _step_simulation(delta: float) -> void: if _integrity <= 0.0: _on_disruption() + _check_milestones() _update_class() + if _mass >= VICTORY_MASS: + _end_run(true) + + +func _check_milestones() -> void: + while _milestone_idx < MILESTONES.size() and _mass >= MILESTONES[_milestone_idx].mass: + _milestones_hit += 1 + _show_banner("MILESTONE — %s" % MILESTONES[_milestone_idx].name, 2.5) + _milestone_idx += 1 + func _on_disruption() -> void: + _disruptions += 1 _integrity = DISRUPT_RESET _set_slider_silent(feed_slider, feed_slider.min_value) black_hole.set("mdot_gs", pow(10.0, feed_slider.min_value)) - _show_banner("DISK DISRUPTED\nRadiation pressure overwhelmed gravity (λ > 1). The disk was blown apart — ramp the feed back up carefully.", 4.0) - push_warning("[accretion] disk disrupted at λ > 1 — feed reset") + push_warning("[accretion] disk disrupted (%d/%d)" % [_disruptions, MAX_DISRUPTIONS]) + if _disruptions >= MAX_DISRUPTIONS: + _show_banner("DISK LOST — three super-Eddington blowouts", 2.0) + _end_run(false) + else: + _show_banner( + "DISK DISRUPTED (%d/%d)\nFeed reset — rebuild integrity before pushing λ past 1 again." + % [_disruptions, MAX_DISRUPTIONS], + 3.5 + ) + + +func _end_run(victory: bool) -> void: + _phase = RunPhase.ENDED + _victory = victory + _run_score = RunScore.compute(_mass, _milestones_hit, _disruptions, _sim_seconds / 31557600.0) + var new_best := RunScore.save_best(_run_score) + if new_best: + _best_score = _run_score + run_overlay.visible = true + run_title.text = "VICTORY — M87* reached" if victory else "RUN OVER — disk destroyed" + run_body.text = ( + "[b]Score[/b] [color=yellow]%d[/color] best [color=cyan]%d[/color]\n" + % [_run_score, _best_score] + + " mass [color=cyan]%s[/color]\n" % HudFormat.mass_msun(_mass) + + " milestones %d · disruptions %d\n" % [_milestones_hit, _disruptions] + + " sim time %s\n\n" % HudFormat.years(_sim_seconds) + + "[color=gray]R or Enter — new run · 1/2/3 — challenge preset[/color]" + ) func _update_class() -> void: @@ -218,9 +306,8 @@ func _update_class() -> void: elif _mass >= 1.0e2: cls = "Intermediate-mass black hole" if cls != _class_name: - if _class_name != "": - _show_banner("MILESTONE — now a %s" % cls, 3.0) - print("[accretion] reclassified → %s (M = %s)" % [cls, HudFormat.mass_msun(_mass)]) + if _class_name != "" and _phase == RunPhase.PLAYING: + _show_banner("RECLASSIFIED — %s" % cls, 2.0) _class_name = cls @@ -231,6 +318,10 @@ func _next_milestone() -> Dictionary: return {"mass": MILESTONES[-1].mass, "name": "%s (reached)" % MILESTONES[-1].name} +func _live_score() -> int: + return RunScore.compute(_mass, _milestones_hit, _disruptions, _sim_seconds / 31557600.0) + + func _update_camera(delta: float) -> void: _idle_time += delta if _idle_time > IDLE_BEFORE_AUTORBIT and not _dragging: @@ -252,32 +343,27 @@ func _update_camera_transform() -> void: camera.look_at(Vector3.ZERO, Vector3.UP) -## Drive shader uniforms and disk scale from Rust-computed physics. func _drive_graphics() -> void: var mat: ShaderMaterial = black_hole.get("disk_material") if mat == null: return var spin: float = black_hole.get("spin") var isco_rg: float = black_hole.call("isco_in_rg") - var horizon_rg := 1.0 + sqrt(max(1.0 - spin * spin, 0.0)) # r_+ = 1 + sqrt(1 - a^2) + var horizon_rg := 1.0 + sqrt(max(1.0 - spin * spin, 0.0)) + var f_qpo: float = black_hole.call("isco_orbital_frequency_hz") - # Inner/outer disk colors from blackbody physics (inner_color also set in Rust). mat.set_shader_parameter("inner_color", black_hole.call("disk_color_at", 1.0)) mat.set_shader_parameter("disc_color", black_hole.call("disk_color_at", GRADIENT_OUTER_RISCO)) - - # Spin tightens the inner edge and shrinks the horizon, visibly (ratios of r_g). mat.set_shader_parameter("disc_inner_radius", clamp(isco_rg / OUTER_RG, 0.05, 0.6)) mat.set_shader_parameter("ss_radius", clamp(horizon_rg / OUTER_RG, 0.02, 0.3)) - # Bounded HDR bloom from the real inner temperature (presentation tone-map of T). var t_in: float = black_hole.call("disk_inner_temp_k") var log_t: float = clamp(log(max(t_in, 1.0)) / log(10.0), 4.0, 7.5) - var emission: float = remap(log_t, 4.0, 7.5, 0.6, 3.2) - mat.set_shader_parameter("emission_strength", emission) + mat.set_shader_parameter("emission_strength", remap(log_t, 4.0, 7.5, 0.6, 3.2)) + mat.set_shader_parameter("disc_speed", clamp(log(max(f_qpo, 1.0e-12)) / log(10.0) + 2.5, 0.8, 4.0)) + mat.set_shader_parameter("qpo_phase_rate", clamp(f_qpo * 0.02, 0.4, 6.0)) - # Disk grows with mass class to make progression visible. - var class_scale := 1.0 + 0.12 * _class_index() - disk_mesh.scale = Vector3.ONE * DISK_BASE_SCALE * class_scale + disk_mesh.scale = Vector3.ONE * DISK_BASE_SCALE * (1.0 + 0.12 * _class_index()) func _class_index() -> int: @@ -298,17 +384,20 @@ func _refresh_hud() -> void: var l_edd: float = black_hole.call("l_eddington") var l_bol: float = black_hole.call("luminosity_erg_s") var lam: float = black_hole.call("eddington_ratio") - var r_in: float = black_hole.call("inner_radius_cm") - var r_s: float = black_hole.call("schwarzschild_radius_cm") var isco_rg: float = black_hole.call("isco_in_rg") + var r_s: float = black_hole.call("schwarzschild_radius_cm") var t_in: float = black_hole.call("disk_inner_temp_k") var f_qpo: float = black_hole.call("isco_orbital_frequency_hz") var t_salpeter: float = black_hole.call("salpeter_time_s") + var mdot_edd: float = black_hole.call("mdot_at_eddington") var c: Color = black_hole.call("disk_inner_color") swatch.color = c title_label.text = "Accretion — %s" % _preset_name class_label.text = _class_name + score_label.text = "Score %d · best %d · disruptions %d/%d" % [ + _live_score(), _best_score, _disruptions, MAX_DISRUPTIONS + ] var next: Dictionary = _next_milestone() milestone_label.text = "Next: %s (%s)" % [next.name, HudFormat.mass_msun(next.mass)] @@ -318,29 +407,32 @@ func _refresh_hud() -> void: integrity_bar.modulate = Color(1.0, 0.4, 0.25) if _integrity < 0.35 else Color(0.4, 0.9, 1.0) var super_edd := lam > 1.0 - if super_edd and not _was_super_eddington: - push_warning("[accretion] super-Eddington: λ=%.2f — disk integrity draining" % lam) + if super_edd and not _was_super_eddington and _phase == RunPhase.PLAYING: + push_warning("[accretion] super-Eddington: λ=%.2f" % lam) _was_super_eddington = super_edd - warning_label.visible = super_edd - warning_label.text = "SUPER-EDDINGTON — λ = %s\nRadiation pressure exceeds gravity; integrity is draining." % HudFormat.lambda_edd(lam) - warning_label.modulate = Color(1.0, 0.35, 0.2) + warning_label.visible = super_edd and _phase == RunPhase.PLAYING + warning_label.text = "SUPER-EDDINGTON — λ = %s\nIntegrity draining." % HudFormat.lambda_edd(lam) stats_label.text = ( "[b]Black hole[/b] [color=gray]sim t = %s[/color]\n" % HudFormat.years(_sim_seconds) + " mass M = [color=cyan]%s[/color]\n" % HudFormat.mass_msun(m) + " spin a/M = %.3f → η = [color=violet]%.1f%%[/color]\n" % [spin, eta * 100.0] + " ISCO = %.2f R_g r_s = %s\n" % [isco_rg, HudFormat.cm(r_s)] - + " e-fold time (at λ=1) = %s\n\n" % HudFormat.years(t_salpeter) + + " e-fold @ λ=1 = %s\n\n" % HudFormat.years(t_salpeter) + "[b]Accretion[/b]\n" + " feed Ṁ = [color=yellow]%s[/color]\n" % HudFormat.grams_per_s(mdot) + + " λ-safe Ṁ = [color=lightgreen]%s[/color] (λ = 1 ceiling)\n" % HudFormat.grams_per_s(mdot_edd) + " L = %s L_Edd = %s\n" % [HudFormat.erg_per_s(l_bol), HudFormat.erg_per_s(l_edd)] + " λ = [color=%s]%s[/color]\n\n" % ["red" if super_edd else "lightgreen", HudFormat.lambda_edd(lam)] - + "[b]Inner edge[/b] [color=gray](computed in Rust)[/color]\n" + + "[b]Inner edge[/b]\n" + " T = [color=orange]%s[/color] QPO f = %s\n" % [HudFormat.kelvin(t_in), HudFormat.hertz(f_qpo)] ) - help_label.text = "Q/E mass · Z/X feed · A/D spin · 1/2/3 presets · drag orbit · scroll zoom" + if _phase == RunPhase.ENDED: + help_label.text = "R or Enter — new run · 1/2/3 — challenge preset" + else: + help_label.text = "Q/E mass · Z/X feed · A/D spin · 1/2/3 presets · R restart · drag · scroll" func _set_slider_silent(slider: HSlider, value: float) -> void: diff --git a/scripts/run_score.gd b/scripts/run_score.gd new file mode 100644 index 0000000..8c87427 --- /dev/null +++ b/scripts/run_score.gd @@ -0,0 +1,33 @@ +class_name RunScore +extends RefCounted +## Run scoring and persisted high score (presentation only). + +const SAVE_PATH := "user://accretion_best.run" + +static func compute(mass_msun: float, milestones: int, disruptions: int, sim_years: float) -> int: + var mass_pts := int(max(log(max(mass_msun, 1.0)) / log(10.0), 0.0) * 1200.0) + var milestone_pts := milestones * 800 + var survival_pts := int(min(sim_years, 1.0e12) / 1.0e6) # 1 pt per Myr, capped + var penalty := disruptions * 350 + return max(mass_pts + milestone_pts + survival_pts - penalty, 0) + + +static func load_best() -> int: + if not FileAccess.file_exists(SAVE_PATH): + return 0 + var f := FileAccess.open(SAVE_PATH, FileAccess.READ) + if f == null: + return 0 + var text := f.get_as_text().strip_edges() + return int(text) if text.is_valid_int() else 0 + + +static func save_best(score: int) -> bool: + var best := load_best() + if score <= best: + return false + var f := FileAccess.open(SAVE_PATH, FileAccess.WRITE) + if f == null: + return false + f.store_string(str(score)) + return true diff --git a/shaders/blackhole.gdshader b/shaders/blackhole.gdshader index 3a975bd..b9eec8d 100644 --- a/shaders/blackhole.gdshader +++ b/shaders/blackhole.gdshader @@ -54,6 +54,8 @@ uniform float doppler_beaming_factor : hint_range(0.0, 200.0) = 66.0; // Bounded HDR bloom factor; driven from Rust as a tone-map of the inner-edge // temperature, so hotter disks visibly bloom brighter (presentation only). uniform float emission_strength : hint_range(0.1, 6.0) = 1.0; +// ISCO orbital phase rate (Hz, presentation-scaled from Rust QPO frequency). +uniform float qpo_phase_rate : hint_range(0.0, 10.0) = 1.5; uniform float hue_radius : hint_range(0.0, 1.0) = 0.75; uniform float hue_shift_factor : hint_range(-1.0, 1.0) = -0.03; uniform float streak_intensity : hint_range(0.0, 1.0) = 0.5; @@ -254,6 +256,10 @@ vec3 calc_disc_color(vec3 base_color, vec3 planar_disc_pos, vec3 disc_dir, vec3 float turb_intensity_mod = (combined_turb - 0.5) * 2.0 * turbulence_intensity; float hot_spot = pow(max(0.0, combined_turb - 0.6) * 2.5, 2.0) * turbulence_intensity; + // Keplerian hotspot orbiting at the ISCO (QPO-scale flicker; phase rate from Rust). + float qpo_angle = uv.y * PI * 2.0 + TIME * qpo_phase_rate; + float qpo_spot = pow(max(0.0, cos(qpo_angle) * 0.5 + 0.5), 6.0) * (1.0 - radial_t); + hot_spot += qpo_spot * 0.35; // inner_color is the Rust-computed blackbody color of the disc inner edge. vec3 temp_color = mix(inner_color.rgb, base_color, pow(radial_t, 0.6)); From 2209e224d5476599d7be8984861d43162e514883 Mon Sep 17 00:00:00 2001 From: ysSemanticSystems Date: Sat, 20 Jun 2026 23:51:04 -0500 Subject: [PATCH 3/8] Remove accidental rust_out artifact from repository --- .gitignore | 1 + rust_out | Bin 486408 -> 0 bytes 2 files changed, 1 insertion(+) delete mode 100755 rust_out diff --git a/.gitignore b/.gitignore index a5162c3..e5e583d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ # Rust / Cargo build artifacts /target/ +rust_out diff --git a/rust_out b/rust_out deleted file mode 100755 index 5887df049b69096e8bff246af79684817dde678a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486408 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�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 Date: Sun, 21 Jun 2026 00:23:12 -0500 Subject: [PATCH 4/8] Split accretion-core into modules and add Godot smoke gate Refactor physics into eddington, kerr, disk, evolution, and colorimetry with per-module unit tests and a cross-module integration suite. Pin godot-ext builds to ./target/ so Godot loads the current dylib, add a headless BlackHole API smoke test, and auto-sync efficiency from spin in Rust so GDScript no longer calls efficiency_from_spin. --- AGENTS.md | 8 + CHANGELOG.md | 5 + Makefile | 28 +- README.md | 14 +- crates/accretion-core/src/colorimetry.rs | 106 +++++++ crates/accretion-core/src/derived.rs | 22 ++ crates/accretion-core/src/disk.rs | 62 ++++ crates/accretion-core/src/eddington.rs | 82 ++++++ crates/accretion-core/src/evolution.rs | 118 ++++++++ crates/accretion-core/src/kerr.rs | 151 ++++++++++ crates/accretion-core/src/lib.rs | 326 +++------------------ crates/accretion-core/tests/common/mod.rs | 31 ++ crates/accretion-core/tests/dynamics.rs | 117 -------- crates/accretion-core/tests/golden.rs | 15 +- crates/accretion-core/tests/identity.rs | 50 ---- crates/accretion-core/tests/integration.rs | 77 +++++ crates/godot-ext/src/lib.rs | 28 +- scenes/GodotSmoke.tscn | 6 + scripts/build_godot_ext.sh | 7 + scripts/godot_smoke.gd | 88 ++++++ scripts/godot_smoke.gd.uid | 1 + scripts/main.gd | 2 - scripts/run_score.gd.uid | 1 + 23 files changed, 867 insertions(+), 478 deletions(-) create mode 100644 crates/accretion-core/src/colorimetry.rs create mode 100644 crates/accretion-core/src/disk.rs create mode 100644 crates/accretion-core/src/eddington.rs create mode 100644 crates/accretion-core/src/evolution.rs create mode 100644 crates/accretion-core/src/kerr.rs create mode 100644 crates/accretion-core/tests/common/mod.rs delete mode 100644 crates/accretion-core/tests/dynamics.rs delete mode 100644 crates/accretion-core/tests/identity.rs create mode 100644 crates/accretion-core/tests/integration.rs create mode 100644 scenes/GodotSmoke.tscn create mode 100755 scripts/build_godot_ext.sh create mode 100644 scripts/godot_smoke.gd create mode 100644 scripts/godot_smoke.gd.uid create mode 100644 scripts/run_score.gd.uid diff --git a/AGENTS.md b/AGENTS.md index b62f82b..53c34c7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -52,6 +52,14 @@ accretion/ # repo root (Godot 4.7 project lives here) ├── Cargo.toml # [workspace] ├── crates/ │ ├── accretion-core/ # pure physics lib (CGS), cargo-testable +│ │ └── src/ +│ │ ├── constants.rs # fundamentals (generated) +│ │ ├── derived.rs # SIGMA_SB, SIGMA_T from fundamentals +│ │ ├── eddington.rs # L_Edd, lambda, mdot↔L +│ │ ├── kerr.rs # ISCO, efficiency, spin geometry +│ │ ├── disk.rs # Shakura–Sunyaev T(r) +│ │ ├── evolution.rs # mass/spin evolution, integrity +│ │ └── colorimetry.rs # Planck → CIE → sRGB │ └── godot-ext/ # cdylib gdext binding — presentation only ├── accretion.gdextension # native lib wiring (api-4-6, loads under 4.7) ├── project.godot, icon.svg # Godot project diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e4422e..44713f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **Modular `accretion-core` architecture.** Split the monolithic `lib.rs` into + focused modules (`eddington`, `kerr`, `disk`, `evolution`, `colorimetry`) + with crate-root re-exports preserving the public API. Added extensive unit tests + in each module, shared integration-test helpers, and a cross-module + `tests/integration.rs` suite. - `constants.rs` now holds only FUNDAMENTAL constants (added `M_E`, `ALPHA`; dropped tabulated `SIGMA_SB`/`SIGMA_T`); composites are derived in `derived.rs`. Rule 11 / rule 02 updated for the two-layer (fundamental vs derived) provenance. diff --git a/Makefile b/Makefile index 16366fd..9357fd0 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,12 @@ -.PHONY: check gen build test clippy fmt hooks +.PHONY: check gen build test clippy fmt hooks godot-smoke -GODOT_BIN ?= godot +# Godot loads res://target/debug/libgodot_ext.dylib — always build there. +CARGO_TARGET_DIR := $(CURDIR)/target +export CARGO_TARGET_DIR + +# macOS default; override with GODOT_BIN=... or put `godot` on PATH. +GODOT_BIN ?= /Applications/Godot.app/Contents/MacOS/Godot +GODOT_FALLBACK := godot hooks: ./scripts/setup-hooks.sh @@ -10,7 +16,7 @@ gen: python3 scripts/gen_golden.py build: - cargo build + ./scripts/build_godot_ext.sh test: cargo test --workspace @@ -21,15 +27,19 @@ clippy: fmt: cargo fmt --check +godot-smoke: build + @set -e; \ + GODOT=""; \ + if [ -x "$(GODOT_BIN)" ]; then GODOT="$(GODOT_BIN)"; \ + elif command -v $(GODOT_FALLBACK) >/dev/null 2>&1; then GODOT="$(GODOT_FALLBACK)"; \ + else echo "ERROR: Godot not found. Install to /Applications/Godot.app or set GODOT_BIN."; exit 1; fi; \ + echo "Godot smoke test ($$GODOT)…"; \ + "$$GODOT" --headless --path . res://scenes/GodotSmoke.tscn + check: gen hooks git diff --exit-code crates/accretion-core/src/constants.rs git diff --exit-code crates/accretion-core/tests/fixtures/golden.json sh scripts/check_invariants.sh cargo test --workspace cargo clippy --workspace --all-targets -- -D warnings - cargo build - @if command -v $(GODOT_BIN) >/dev/null 2>&1; then \ - $(GODOT_BIN) --headless --quit --path . ; \ - else \ - echo "WARN: $(GODOT_BIN) not on PATH; skipping Godot headless load test"; \ - fi + $(MAKE) godot-smoke diff --git a/README.md b/README.md index 0c398da..99c8f90 100644 --- a/README.md +++ b/README.md @@ -61,12 +61,20 @@ cd accretion ./scripts/setup-hooks.sh # once per clone — AI-attribution strip hooks pip install -r scripts/requirements.txt -make check # generators, invariants, test, clippy, build +make check # generators, invariants, test, clippy, build, Godot smoke # Open the project in Godot 4.7 and run scenes/Main.tscn (F5) ``` -If `make check` passes but Godot is not on your `PATH`, the headless load step -is skipped with a warning — run the scene manually in the editor. +**Before opening Godot**, run `make build` (or `make godot-smoke`). The native +library must land in `target/debug/libgodot_ext.dylib` — that is what +`accretion.gdextension` loads via `res://target/debug/`. A plain `cargo build` +from some environments writes elsewhere and Godot will keep an old, method-poor +dylib. + +`make godot-smoke` headlessly instantiates `BlackHole` and calls every Rust API +used by the game (`salpeter_time_s`, `advance_mass`, …). On macOS the Makefile +defaults to `/Applications/Godot.app/Contents/MacOS/Godot`; override with +`GODOT_BIN=...` if needed. --- diff --git a/crates/accretion-core/src/colorimetry.rs b/crates/accretion-core/src/colorimetry.rs new file mode 100644 index 0000000..db31186 --- /dev/null +++ b/crates/accretion-core/src/colorimetry.rs @@ -0,0 +1,106 @@ +//! Planck blackbody radiance integrated through the CIE 1931 colour-matching functions +//! and converted to linear sRGB for HDR-friendly disk rendering. +//! +//! # References +//! - Planck 1901 (spectral radiance). +//! - CIE 1931 2° standard observer colour-matching functions. +//! - Wyman, Sloan & Shirley 2013 (approximate sRGB conversion). +//! - IEC 61966-2-1 (sRGB electro-optical transfer function). + +use crate::constants::{C_LIGHT, H_PLANCK, K_BOLTZMANN, NM_TO_CM}; + +/// Linear sRGB blackbody colour at temperature `temp_k` \[K\], brightest channel +/// normalized to 1.0 (HDR-friendly chromaticity). +pub fn blackbody_rgb(temp_k: f64) -> (f64, f64, f64) { + if temp_k <= 0.0 || !temp_k.is_finite() { + return (0.0, 0.0, 0.0); + } + + let (mut x, mut y, mut z) = (0.0_f64, 0.0_f64, 0.0_f64); + let (lambda_min_nm, lambda_max_nm, step_nm) = (380.0, 780.0, 5.0); + let mut lambda_nm = lambda_min_nm; + while lambda_nm <= lambda_max_nm { + let b = planck_spectral_radiance(lambda_nm * NM_TO_CM, temp_k); + let (xb, yb, zb) = cie_xyz_cmf(lambda_nm); + x += b * xb; + y += b * yb; + z += b * zb; + lambda_nm += step_nm; + } + + let sum = x + y + z; + if sum <= 0.0 { + return (0.0, 0.0, 0.0); + } + let (x, y, z) = (x / sum, y / sum, z / sum); + + let r = 3.240_625 * x - 1.537_208 * y - 0.498_629 * z; + let g = -0.968_931 * x + 1.875_756 * y + 0.041_518 * z; + let b = 0.055_710 * x - 0.204_021 * y + 1.056_996 * z; + + let r = r.max(0.0); + let g = g.max(0.0); + let b = b.max(0.0); + + let peak = r.max(g).max(b); + if peak <= 0.0 { + return (0.0, 0.0, 0.0); + } + (r / peak, g / peak, b / peak) +} + +/// Planck spectral radiance `B_lambda` \[erg s^-1 cm^-2 sr^-1 cm^-1\] (CGS). +fn planck_spectral_radiance(lambda_cm: f64, temp_k: f64) -> f64 { + let numerator = 2.0 * H_PLANCK * C_LIGHT * C_LIGHT / lambda_cm.powi(5); + let exponent = H_PLANCK * C_LIGHT / (lambda_cm * K_BOLTZMANN * temp_k); + numerator / (exponent.exp() - 1.0) +} + +/// CIE 1931 2° XYZ colour-matching functions (Wyman et al. 2013 Gaussian fit). +fn cie_xyz_cmf(lambda_nm: f64) -> (f64, f64, f64) { + fn g(lambda: f64, mean: f64, sigma_lo: f64, sigma_hi: f64) -> f64 { + let sigma = if lambda < mean { sigma_lo } else { sigma_hi }; + let t = (lambda - mean) / sigma; + (-0.5 * t * t).exp() + } + + let x = 1.056 * g(lambda_nm, 599.8, 37.9, 31.0) + 0.362 * g(lambda_nm, 442.0, 16.0, 26.7) + - 0.065 * g(lambda_nm, 501.1, 20.4, 26.2); + let y = 0.821 * g(lambda_nm, 568.8, 46.9, 40.5) + 0.286 * g(lambda_nm, 530.9, 16.3, 31.1); + let z = 1.217 * g(lambda_nm, 437.0, 11.8, 36.0) + 0.681 * g(lambda_nm, 459.0, 26.0, 13.8); + (x, y, z) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn nonpositive_temperature_is_black() { + assert_eq!(blackbody_rgb(0.0), (0.0, 0.0, 0.0)); + assert_eq!(blackbody_rgb(-100.0), (0.0, 0.0, 0.0)); + } + + #[test] + fn channels_normalized_to_unit_peak() { + let (r, g, b) = blackbody_rgb(10_000.0); + let peak = r.max(g).max(b); + assert!((peak - 1.0).abs() < 0.000000001); + assert!(r >= 0.0 && g >= 0.0 && b >= 0.0); + } + + #[test] + fn hotter_is_bluer_than_cooler() { + let (hr, _hg, hb) = blackbody_rgb(20_000.0); + let (cr, _cg, cb) = blackbody_rgb(3_000.0); + assert!(hb >= hr); + assert!(cr > cb); + } + + #[test] + fn monotonic_wien_displacement_in_hue() { + let (_, g1, _) = blackbody_rgb(4_000.0); + let (_, g2, _) = blackbody_rgb(8_000.0); + assert!(g1 > 0.0 && g2 > 0.0); + } +} diff --git a/crates/accretion-core/src/derived.rs b/crates/accretion-core/src/derived.rs index 899bbc8..c13e0d9 100644 --- a/crates/accretion-core/src/derived.rs +++ b/crates/accretion-core/src/derived.rs @@ -45,3 +45,25 @@ const COMPTON_REDUCED_E: f64 = H_BAR / (M_E * C_LIGHT); /// CODATA 2018. pub const SIGMA_T: f64 = (8.0 * PI / 3.0) * (ALPHA * ALPHA) * (COMPTON_REDUCED_E * COMPTON_REDUCED_E); + +#[cfg(test)] +mod tests { + use super::*; + use crate::constants::{ALPHA, C_LIGHT, H_PLANCK, K_BOLTZMANN, M_E}; + + const RTOL: f64 = 0.000000001; + + #[test] + fn sigma_sb_matches_closed_form() { + let expected = + 2.0 * PI.powi(5) * K_BOLTZMANN.powi(4) / (15.0 * C_LIGHT.powi(2) * H_PLANCK.powi(3)); + assert!((SIGMA_SB - expected).abs() <= RTOL * expected.abs()); + } + + #[test] + fn sigma_t_matches_thomson_formula() { + let compton = H_BAR / (M_E * C_LIGHT); + let expected = (8.0 * PI / 3.0) * (ALPHA * ALPHA) * (compton * compton); + assert!((SIGMA_T - expected).abs() <= RTOL * expected.abs()); + } +} diff --git a/crates/accretion-core/src/disk.rs b/crates/accretion-core/src/disk.rs new file mode 100644 index 0000000..8ba4f9b --- /dev/null +++ b/crates/accretion-core/src/disk.rs @@ -0,0 +1,62 @@ +//! Shakura–Sunyaev thin accretion-disk observables. +//! +//! This module implements the **bare** SS73 temperature profile (no inner-boundary +//! correction). The omitted factor `(1 - sqrt(r_in/r))^(1/4)` means the profile +//! is monotonic with no temperature peak at the inner edge; that correction is +//! a documented fast-follow. +//! +//! # Reference +//! Shakura & Sunyaev 1973, A&A 24, 337. + +use crate::constants::{G, M_SUN}; +use crate::derived::SIGMA_SB; + +/// Disk temperature \[K\] at radius `r_cm` \[cm\]. +/// +/// Bare form: `T = (3 G M Mdot / (8 pi sigma_sb r^3))^(1/4)`. +pub fn disk_temperature(r_cm: f64, m_bh_msun: f64, mdot_gs: f64) -> f64 { + let m_g = m_bh_msun * M_SUN; + let t4 = 3.0 * G * m_g * mdot_gs / (8.0 * std::f64::consts::PI * SIGMA_SB * r_cm * r_cm * r_cm); + t4.powf(0.25) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::eddington::{l_eddington, mdot_from_luminosity}; + use crate::kerr::r_s; + + const ETA: f64 = 0.1; + const M: f64 = 10.0; + const TOL: f64 = 0.000000001; + + fn mdot_edd() -> f64 { + mdot_from_luminosity(l_eddington(M), ETA) + } + + #[test] + fn scaling_law_t2r_over_tr() { + let mdot = mdot_edd(); + let r_in = 10.0 * r_s(M); + let r_out = 20.0 * r_s(M); + let ratio = disk_temperature(r_out, M, mdot) / disk_temperature(r_in, M, mdot); + assert!((ratio - 2.0_f64.powf(-0.75)).abs() < TOL); + } + + #[test] + fn temperature_scales_as_mdot_one_quarter() { + let r = 10.0 * r_s(M); + let t1 = disk_temperature(r, M, mdot_edd()); + let t2 = disk_temperature(r, M, mdot_edd() * 16.0); + assert!((t2 / t1 - 2.0).abs() < TOL); + } + + #[test] + fn temperature_scales_as_mass_one_quarter() { + let mdot = mdot_edd(); + let r = 10.0 * r_s(M); + let t1 = disk_temperature(r, M, mdot); + let t2 = disk_temperature(r, 16.0 * M, mdot); + assert!((t2 / t1 - 2.0).abs() < TOL); + } +} diff --git a/crates/accretion-core/src/eddington.rs b/crates/accretion-core/src/eddington.rs new file mode 100644 index 0000000..423d990 --- /dev/null +++ b/crates/accretion-core/src/eddington.rs @@ -0,0 +1,82 @@ +//! Eddington-limited accretion: luminosity, accretion rate, and the dimensionless +//! Eddington ratio `lambda = L / L_Edd`. +//! +//! The Eddington limit is the luminosity at which electron-scattering radiation +//! pressure balances gravity on a fully ionized hydrogen atmosphere: +//! `L_Edd = 4 pi G M m_p c / sigma_T`. +//! +//! # References +//! - Eddington, A. S. 1926, *The Internal Constitution of the Stars*. +//! - Frank, King & Raine 2002, *Accretion Power in Astrophysics*, Eq. (1.5). +//! - Novikov & Thorne 1973, thin-disk radiative efficiency. + +use crate::constants::{C_LIGHT, G, M_P, M_SUN}; +use crate::derived::SIGMA_T; + +/// Eddington luminosity `L_Edd` \[erg/s\] for a black hole of mass `m_bh_msun` \[M_sun\]. +/// +/// Scales linearly with mass: doubling `M` doubles `L_Edd`. +pub fn l_eddington(m_bh_msun: f64) -> f64 { + let m_g = m_bh_msun * M_SUN; + 4.0 * std::f64::consts::PI * G * m_g * M_P * C_LIGHT / SIGMA_T +} + +/// Bolometric luminosity \[erg/s\] from accretion rate `mdot_gs` \[g/s\] at +/// radiative efficiency `eta`: `L = eta Mdot c^2`. +pub fn luminosity_from_mdot(mdot_gs: f64, eta: f64) -> f64 { + eta * mdot_gs * C_LIGHT * C_LIGHT +} + +/// Eddington ratio `lambda = L / L_Edd` (dimensionless). +pub fn eddington_ratio(m_bh_msun: f64, mdot_gs: f64, eta: f64) -> f64 { + luminosity_from_mdot(mdot_gs, eta) / l_eddington(m_bh_msun) +} + +/// Accretion rate \[g/s\] from bolometric luminosity \[erg/s\] at efficiency `eta`. +pub fn mdot_from_luminosity(l: f64, eta: f64) -> f64 { + l / (eta * C_LIGHT * C_LIGHT) +} + +/// Accretion rate \[g/s\] that yields `lambda = 1` at mass `m_bh_msun` and `eta`. +pub fn mdot_at_eddington(m_bh_msun: f64, eta: f64) -> f64 { + mdot_from_luminosity(l_eddington(m_bh_msun), eta) +} + +#[cfg(test)] +mod tests { + use super::*; + + const ETA: f64 = 0.1; + const TOL: f64 = 0.000000001; + const RTOL: f64 = 0.000001; + + #[test] + fn luminosity_mdot_round_trip() { + let l = l_eddington(100.0); + let mdot = mdot_from_luminosity(l, ETA); + let l2 = luminosity_from_mdot(mdot, ETA); + assert!((l2 - l).abs() <= RTOL * l.abs()); + } + + #[test] + fn mdot_at_eddington_gives_unit_lambda() { + const M: f64 = 42.0; + let mdot = mdot_at_eddington(M, ETA); + assert!((eddington_ratio(M, mdot, ETA) - 1.0).abs() < RTOL); + } + + #[test] + fn l_eddington_scales_linearly_with_mass() { + let l1 = l_eddington(10.0); + let l2 = l_eddington(20.0); + assert!((l2 / l1 - 2.0).abs() < TOL); + } + + #[test] + fn lambda_scales_linearly_with_mdot_at_fixed_mass() { + const M: f64 = 10.0; + let mdot = mdot_at_eddington(M, ETA); + let lam_half = eddington_ratio(M, mdot * 0.5, ETA); + assert!((lam_half - 0.5).abs() < RTOL); + } +} diff --git a/crates/accretion-core/src/evolution.rs b/crates/accretion-core/src/evolution.rs new file mode 100644 index 0000000..e9df73e --- /dev/null +++ b/crates/accretion-core/src/evolution.rs @@ -0,0 +1,118 @@ +//! Time evolution of black-hole state under accretion. +//! +//! Mass grows by the rest-mass fraction `(1 - eta)` of the feed rate; spin evolves +//! from the specific angular momentum of gas arriving at the ISCO. The integrity +//! driver `1 - lambda` encodes radiation-pressure support (presentation scales it +//! into a gameplay meter). +//! +//! # References +//! - Frank, King & Raine 2002, Ch. 1 (mass growth). +//! - Salpeter 1964, ApJ 140, 796 (Eddington e-folding time). +//! - Eddington 1926 (radiation-pressure support). +//! - King & Raine 2002, Ch. 5 (Kerr spin-up). +//! - Bardeen 1970. + +use crate::constants::M_SUN; +use crate::constants::{C_LIGHT, G, M_P}; +use crate::derived::SIGMA_T; +use crate::kerr::{THORNE_SPIN_LIMIT, isco_specific_angular_momentum}; + +/// Advance black-hole mass \[M_sun\] by `dt_s` \[s\] at feed `mdot_gs` \[g/s\]. +/// +/// `dM/dt = (1 - eta) Mdot`; the radiated fraction `eta` does not add to the hole. +pub fn advance_mass(m_bh_msun: f64, mdot_gs: f64, eta: f64, dt_s: f64) -> f64 { + let m_g = m_bh_msun * M_SUN + (1.0 - eta) * mdot_gs * dt_s; + m_g / M_SUN +} + +/// Salpeter (Eddington) e-folding time \[s\]: mass grows by a factor `e` when +/// accreting at the Eddington limit with efficiency `eta`. +/// +/// `t_S = (eta/(1-eta)) sigma_T c / (4 pi G m_p)`. Mass-independent. +pub fn salpeter_time_s(eta: f64) -> f64 { + (eta / (1.0 - eta)) * SIGMA_T * C_LIGHT / (4.0 * std::f64::consts::PI * G * M_P) +} + +/// Net disk-support fraction `1 - lambda` (dimensionless). +/// +/// Positive when sub-Eddington (disk bound); negative when super-Eddington. +pub fn integrity_rate(eddington_ratio: f64) -> f64 { + 1.0 - eddington_ratio +} + +/// Advance Kerr spin parameter after accreting for `dt_s` \[s\]. +/// +/// `da/dt = (1 - eta) Mdot (l_isco - 2a) / M^2` in geometric units (King & Raine 2002). +pub fn advance_spin(spin: f64, m_bh_msun: f64, mdot_gs: f64, eta: f64, dt_s: f64) -> f64 { + if m_bh_msun <= 0.0 || dt_s <= 0.0 || mdot_gs <= 0.0 { + return spin; + } + let l = isco_specific_angular_momentum(spin); + let dm = (1.0 - eta) * mdot_gs * dt_s; + let da = dm * (l - 2.0 * spin) / (m_bh_msun * M_SUN); + (spin + da).clamp(0.0, THORNE_SPIN_LIMIT) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::eddington::{l_eddington, mdot_from_luminosity}; + + const ETA: f64 = 0.1; + const TOL: f64 = 0.000000001; + const RTOL: f64 = 0.000000001; + + #[test] + fn advance_mass_retains_one_minus_eta() { + const M0: f64 = 10.0; + let mdot = mdot_from_luminosity(l_eddington(M0), ETA); + let dt = salpeter_time_s(ETA); + let m1 = advance_mass(M0, mdot, ETA, dt); + let gained_g = (m1 - M0) * crate::constants::M_SUN; + let expected_g = (1.0 - ETA) * mdot * dt; + assert!((gained_g - expected_g).abs() <= RTOL * expected_g.abs()); + } + + #[test] + fn advance_mass_zero_feed_is_static() { + assert!((advance_mass(4_000_000.0, 0.0, ETA, 1000.0) - 4_000_000.0).abs() < TOL); + } + + #[test] + fn salpeter_time_is_mass_independent() { + const M1: f64 = 10.0; + const M2: f64 = 1_000_000_000.0; + let t = salpeter_time_s(ETA); + for m in [M1, M2] { + let mdot = mdot_from_luminosity(l_eddington(m), ETA); + let growth = (1.0 - ETA) * mdot; + let efold = (m * crate::constants::M_SUN) / growth; + assert!((efold - t).abs() <= RTOL * t); + } + } + + #[test] + fn integrity_rate_signs() { + assert!((integrity_rate(0.0) - 1.0).abs() < TOL); + assert!(integrity_rate(1.0).abs() < TOL); + assert!(integrity_rate(2.0) < 0.0); + } + + #[test] + fn advance_spin_increases_from_zero() { + const M0: f64 = 10.0; + let mdot = mdot_from_luminosity(l_eddington(M0), ETA); + let dt = salpeter_time_s(ETA); + let a1 = advance_spin(0.0, M0, mdot, ETA, dt); + assert!(a1 > 0.0); + assert!(a1 <= THORNE_SPIN_LIMIT); + } + + #[test] + fn advance_spin_never_exceeds_thorne_limit() { + let mdot = mdot_from_luminosity(l_eddington(10.0), ETA); + let a = advance_spin(0.0, 10.0, mdot, ETA, salpeter_time_s(ETA) * 1000.0); + assert!(a <= THORNE_SPIN_LIMIT); + assert!(a > 0.9); + } +} diff --git a/crates/accretion-core/src/kerr.rs b/crates/accretion-core/src/kerr.rs new file mode 100644 index 0000000..eb2b4e8 --- /dev/null +++ b/crates/accretion-core/src/kerr.rs @@ -0,0 +1,151 @@ +//! Kerr geometry: gravitational radii, ISCO, binding energy, angular momentum, +//! and orbital frequency. +//! +//! All radii in this module are expressed either in centimetres or in multiples +//! of the gravitational radius `R_g = GM/c^2`. The dimensionless spin parameter +//! `a` (denoted `spin` in the API) is the Kerr parameter `a/M` in geometric units. +//! +//! # References +//! - Bardeen, Press & Teukolsky 1972, ApJ 178, 347 (Eqs. 2.12–2.21). +//! - Novikov & Thorne 1973 (thin-disk radiative efficiency). +//! - Thorne 1974, ApJ 191, 507 (maximum prograde spin from thin-disk accretion). + +use crate::constants::{C_LIGHT, G, M_SUN}; + +/// Thorne (1974) maximum prograde spin of a thin disk (`a/M ~= 0.998`). +pub const THORNE_SPIN_LIMIT: f64 = 0.998; + +/// Gravitational radius `R_g = GM/c^2` \[cm\]. +pub fn gravitational_radius_cm(m_bh_msun: f64) -> f64 { + G * (m_bh_msun * M_SUN) / (C_LIGHT * C_LIGHT) +} + +/// Schwarzschild radius `r_s = 2 GM/c^2 = 2 R_g` \[cm\]. +pub fn r_s(m_bh_msun: f64) -> f64 { + 2.0 * gravitational_radius_cm(m_bh_msun) +} + +/// ISCO radius in units of `R_g = GM/c^2` (dimensionless spin parameter `a`). +/// +/// Prograde ISCO from the Bardeen–Press–Teukolsky (1972) Eq. (2.21) closed form. +/// Schwarzschild limit: `r_isco = 6 R_g` at `a = 0`. +pub fn isco_radius(spin: f64) -> f64 { + let a = spin; + let z1 = 1.0 + (1.0 - a * a).cbrt() * ((1.0 + a).cbrt() + (1.0 - a).cbrt()); + let z2 = (3.0 * a * a + z1 * z1).sqrt(); + 3.0 + z2 - ((3.0 - z1) * (3.0 + z1 + 2.0 * z2)).sqrt() +} + +/// ISCO radius \[cm\] for mass `m_bh_msun` and spin `spin`. +pub fn r_isco(m_bh_msun: f64, spin: f64) -> f64 { + isco_radius(spin) * gravitational_radius_cm(m_bh_msun) +} + +/// Specific energy `E/(mu c^2)` (dimensionless) of the prograde ISCO circular orbit. +/// +/// BPT (1972) Eq. (2.12)–(2.13) evaluated at `r = r_isco(a)`. +pub fn isco_specific_energy(spin: f64) -> f64 { + let a = spin; + let r = isco_radius(spin); + let sqrt_r = r.sqrt(); + let r32 = r * sqrt_r; + let r34 = r32.sqrt(); + let numerator = r32 - 2.0 * sqrt_r + a; + let denominator = r34 * (r32 - 3.0 * sqrt_r + 2.0 * a).sqrt(); + numerator / denominator +} + +/// Radiative efficiency `eta = 1 - E_isco` of a thin disk around a Kerr hole. +/// +/// Schwarzschild value: `eta = 1 - sqrt(8/9) ~= 0.0572`. +pub fn efficiency_from_spin(spin: f64) -> f64 { + 1.0 - isco_specific_energy(spin) +} + +/// Dimensionless specific angular momentum of a prograde circular orbit at +/// `r_over_rg` (in `R_g`) around a Kerr hole of spin `spin`. +/// +/// BPT (1972) Eq. (2.15): +/// `l = (r^2 - 2 a r^(1/2) + a^2) / (r^(1/2) (r - 3 + 2 a r^(-1/2))^(1/2))`. +pub fn specific_angular_momentum(r_over_rg: f64, spin: f64) -> f64 { + let a = spin; + let r = r_over_rg; + let sqrt_r = r.sqrt(); + let numerator = r * r - 2.0 * a * sqrt_r + a * a; + let denominator = sqrt_r * (r - 3.0 + 2.0 * a / sqrt_r).sqrt(); + numerator / denominator +} + +/// ISCO specific angular momentum `l_isco(a)`. +pub fn isco_specific_angular_momentum(spin: f64) -> f64 { + specific_angular_momentum(isco_radius(spin), spin) +} + +/// Coordinate orbital frequency \[Hz\] at radius `r_over_rg` (in `R_g`). +/// +/// BPT (1972) Eq. (2.16): `Omega = c^3/(G M) * 1/(r^(3/2) + a)`; `f = Omega/(2 pi)`. +/// Scales as `1/M` at fixed `r/R_g`. +pub fn orbital_frequency_hz(m_bh_msun: f64, r_over_rg: f64, spin: f64) -> f64 { + let omega = C_LIGHT.powi(3) / (G * m_bh_msun * M_SUN) / (r_over_rg.powf(1.5) + spin); + omega / (2.0 * std::f64::consts::PI) +} + +#[cfg(test)] +mod tests { + use super::*; + + const TOL: f64 = 0.000000001; + const RTOL: f64 = 0.000001; + + #[test] + fn schwarzschild_radii_relation() { + const M: f64 = 12.3; + let r_g = gravitational_radius_cm(M); + assert!((r_s(M) / r_g - 2.0).abs() < TOL); + } + + #[test] + fn isco_schwarzschild_is_six_rg() { + assert!((isco_radius(0.0) - 6.0).abs() < TOL); + const M: f64 = 12.3; + let r_g = gravitational_radius_cm(M); + assert!((r_isco(M, 0.0) / r_g - 6.0).abs() < TOL); + } + + #[test] + fn efficiency_schwarzschild_analytic() { + let expected = 1.0 - (8.0_f64 / 9.0).sqrt(); + assert!((efficiency_from_spin(0.0) - expected).abs() < TOL); + } + + #[test] + fn isco_shrinks_with_prograde_spin() { + assert!(isco_radius(0.9) < isco_radius(0.0)); + assert!(isco_radius(0.998) < isco_radius(0.9)); + } + + #[test] + fn efficiency_increases_with_spin() { + let eta0 = efficiency_from_spin(0.0); + let eta_mid = efficiency_from_spin(0.9); + let eta_thorne = efficiency_from_spin(THORNE_SPIN_LIMIT); + assert!(eta0 < eta_mid); + assert!(eta_mid < eta_thorne); + assert!(eta_thorne > 0.30 && eta_thorne < 0.33); + } + + #[test] + fn isco_angular_momentum_schwarzschild() { + let expected = 6.0 * 2.0_f64.sqrt(); + assert!((isco_specific_angular_momentum(0.0) - expected).abs() < TOL); + } + + #[test] + fn orbital_frequency_scales_inversely_with_mass() { + const M: f64 = 10.0; + let f1 = orbital_frequency_hz(M, 6.0, 0.0); + let f2 = orbital_frequency_hz(2.0 * M, 6.0, 0.0); + assert!(f1 > 0.0); + assert!((f2 - f1 / 2.0).abs() <= RTOL * (f1 / 2.0)); + } +} diff --git a/crates/accretion-core/src/lib.rs b/crates/accretion-core/src/lib.rs index 96bf528..77a4420 100644 --- a/crates/accretion-core/src/lib.rs +++ b/crates/accretion-core/src/lib.rs @@ -1,301 +1,63 @@ //! # accretion-core //! //! Pure-Rust accretion-disk physics for the `accretion` game. Zero Godot -//! dependency; `cargo test`-able in isolation. Ported from -//! `BlackHoleResearch/blackhole/physics/accretion.py`. +//! dependency; `cargo test`-able in isolation. //! -//! Fundamental physical constants live in [`constants`] (generated from astropy -//! by `scripts/gen_constants.py`). Composite constants (`SIGMA_SB`, `SIGMA_T`) -//! are derived from those fundamentals in [`derived`]. Golden expected values -//! live in `tests/fixtures/golden.json` (generated by `scripts/gen_golden.py`). +//! ## Module map +//! +//! | Module | Responsibility | +//! |---|---| +//! | [`constants`] | Fundamental CGS constants (generated from astropy) | +//! | [`derived`] | Composite constants (`sigma_sb`, `sigma_T`) from fundamentals | +//! | [`eddington`] | Eddington luminosity, `lambda`, accretion–luminosity relations | +//! | [`kerr`] | Kerr radii, ISCO, efficiency, angular momentum, orbital frequency | +//! | [`disk`] | Shakura–Sunyaev disk temperature (bare SS73 form) | +//! | [`evolution`] | Mass and spin evolution under accretion; integrity driver | +//! | [`colorimetry`] | Planck → CIE → sRGB blackbody colour | +//! +//! Golden expected values live in `tests/fixtures/golden.json` (generated by +//! `scripts/gen_golden.py`). Every public formula cites its primary source in +//! the module or function documentation. +//! +//! ## Re-exports +//! +//! All game and test code may use the crate root (`accretion_core::l_eddington`, +//! etc.) without knowing the internal module layout. +pub mod colorimetry; pub mod constants; pub mod derived; +pub mod disk; +pub mod eddington; +pub mod evolution; +pub mod kerr; -use constants::{C_LIGHT, G, H_PLANCK, K_BOLTZMANN, M_P, M_SUN, NM_TO_CM}; -use derived::{SIGMA_SB, SIGMA_T}; - -/// Eddington luminosity `L_Edd` \[erg/s\] for a black hole of mass `m_bh_msun`. -/// -/// `L_Edd = 4 pi G M m_p c / sigma_T`. -/// -/// # Reference -/// Eddington 1926; Frank, King & Raine 2002, Eq. (1.5). -pub fn l_eddington(m_bh_msun: f64) -> f64 { - let m_g = m_bh_msun * M_SUN; - 4.0 * std::f64::consts::PI * G * m_g * M_P * C_LIGHT / SIGMA_T -} - -/// Bolometric luminosity \[erg/s\] from accretion rate `mdot_gs` \[g/s\] at -/// radiative efficiency `eta`: `L = eta Mdot c^2`. -/// -/// # Reference -/// Novikov & Thorne 1973. -pub fn luminosity_from_mdot(mdot_gs: f64, eta: f64) -> f64 { - eta * mdot_gs * C_LIGHT * C_LIGHT -} - -/// Eddington ratio `lambda = L / L_Edd` (dimensionless). -pub fn eddington_ratio(m_bh_msun: f64, mdot_gs: f64, eta: f64) -> f64 { - luminosity_from_mdot(mdot_gs, eta) / l_eddington(m_bh_msun) -} - -/// Accretion rate \[g/s\] from bolometric luminosity \[erg/s\] at efficiency `eta`. -/// -/// # Reference -/// Novikov & Thorne 1973. -pub fn mdot_from_luminosity(l: f64, eta: f64) -> f64 { - l / (eta * C_LIGHT * C_LIGHT) -} - -// --------------------------------------------------------------------------- -// Time evolution / gameplay dynamics -// --------------------------------------------------------------------------- - -/// Advance the black-hole mass \[M_sun\] by `dt_s` \[s\] while accreting at -/// `mdot_gs` \[g/s\] with radiative efficiency `eta`. -/// -/// Mass grows by the rest mass that crosses the horizon, `dM/dt = (1 - eta) Mdot`; -/// the radiated fraction `eta` does not add to the hole. For a constant feed rate -/// over the step this is exact (the right-hand side is constant in `Mdot`). -/// -/// # Reference -/// Frank, King & Raine 2002, *Accretion Power in Astrophysics*, Ch. 1. -pub fn advance_mass(m_bh_msun: f64, mdot_gs: f64, eta: f64, dt_s: f64) -> f64 { - let m_g = m_bh_msun * M_SUN + (1.0 - eta) * mdot_gs * dt_s; - m_g / M_SUN -} - -/// Salpeter (Eddington) e-folding time \[s\]: the timescale on which mass grows by -/// a factor `e` when accreting at the Eddington limit with efficiency `eta`. -/// -/// `t_S = (eta / (1 - eta)) * sigma_T * c / (4 pi G m_p)`. Mass-independent, -/// because both the Eddington rate and the mass scale linearly with `M`. -/// -/// # Reference -/// Salpeter 1964, ApJ 140, 796. -pub fn salpeter_time_s(eta: f64) -> f64 { - (eta / (1.0 - eta)) * SIGMA_T * C_LIGHT / (4.0 * std::f64::consts::PI * G * M_P) -} - -/// Net disk-support fraction as a function of Eddington ratio `lambda = L / L_Edd`. -/// -/// Returns `1 - lambda`, the radiation-pressure-modified effective gravity -/// `g_eff / g`: positive (net inward, the disk is bound and recovers) for -/// `lambda < 1`, zero at the Eddington limit, and negative (net outward, the -/// disk is unbound and disrupts) for `lambda > 1`. It is dimensionless; the -/// presentation layer multiplies it by a gameplay timescale to evolve a -/// disk-integrity meter (rule 02 keeps that tuning constant out of the physics). -/// -/// # Reference -/// Eddington 1926: radiation pressure subtracts from gravity as `g(1 - L/L_Edd)`. -pub fn integrity_rate(eddington_ratio: f64) -> f64 { - 1.0 - eddington_ratio -} - -/// Accretion rate \[g/s\] that yields `lambda = 1` at mass `m_bh_msun` and -/// efficiency `eta`. -/// -/// # Reference -/// Novikov & Thorne 1973; Eddington 1926. -pub fn mdot_at_eddington(m_bh_msun: f64, eta: f64) -> f64 { - mdot_from_luminosity(l_eddington(m_bh_msun), eta) -} - -/// Dimensionless specific angular momentum `l = L/(mu GM/c)` of a prograde -/// circular orbit at radius `r_over_rg` (in `R_g`) around a Kerr hole of spin -/// `spin`. -/// -/// `l = (r^2 - 2 a r^(1/2) + a^2) / (r^(1/2) (r - 3 + 2 a r^(-1/2))^(1/2))`. -/// -/// # Reference -/// Bardeen, Press & Teukolsky 1972, ApJ 178, 347, Eq. (2.15). -pub fn specific_angular_momentum(r_over_rg: f64, spin: f64) -> f64 { - let a = spin; - let r = r_over_rg; - let sqrt_r = r.sqrt(); - let numerator = r * r - 2.0 * a * sqrt_r + a * a; - let denominator = sqrt_r * (r - 3.0 + 2.0 * a / sqrt_r).sqrt(); - numerator / denominator -} - -/// ISCO specific angular momentum (dimensionless), i.e. `l_isco(a)`. -pub fn isco_specific_angular_momentum(spin: f64) -> f64 { - specific_angular_momentum(isco_radius(spin), spin) -} - -/// Advance Kerr spin parameter `spin` after accreting for `dt_s` \[s\]. -/// -/// Gas arrives at the ISCO with specific angular momentum `l_isco`; only the -/// rest-mass fraction `(1 - eta)` of the feed rate adds to the hole. In -/// geometric units `J = a M^2`, accretion gives `da/dt = (1 - eta) Mdot -/// (l_isco - 2 a) / M^2` (King & Raine 2002, spin-up of a Kerr hole). -/// -/// # Reference -/// Bardeen 1970; King & Raine 2002, *Accretion Power in Astrophysics*, Ch. 5. -pub fn advance_spin(spin: f64, m_bh_msun: f64, mdot_gs: f64, eta: f64, dt_s: f64) -> f64 { - if m_bh_msun <= 0.0 || dt_s <= 0.0 || mdot_gs <= 0.0 { - return spin; - } - let l = isco_specific_angular_momentum(spin); - let dm = (1.0 - eta) * mdot_gs * dt_s; - let da = dm * (l - 2.0 * spin) / (m_bh_msun * M_SUN); - (spin + da).clamp(0.0, THORNE_SPIN_LIMIT) -} - -/// Thorne (1974) maximum prograde spin of a thin disk (`a/M ~= 0.998`). -/// -/// # Reference -/// Thorne 1974, ApJ 191, 507. -pub const THORNE_SPIN_LIMIT: f64 = 0.998; - -/// Shakura-Sunyaev disk temperature \[K\] at radius `r_cm` \[cm\]. -/// -/// Bare form: `T = (3 G M Mdot / (8 pi sigma_sb r^3))^(1/4)`. Omits the inner- -/// boundary factor `(1 - sqrt(r_in/r))^(1/4)` — see rule 02. -/// -/// # Reference -/// Shakura & Sunyaev 1973, A&A 24, 337. -pub fn disk_temperature(r_cm: f64, m_bh_msun: f64, mdot_gs: f64) -> f64 { - let m_g = m_bh_msun * M_SUN; - let t4 = 3.0 * G * m_g * mdot_gs / (8.0 * std::f64::consts::PI * SIGMA_SB * r_cm * r_cm * r_cm); - t4.powf(0.25) -} - -/// Gravitational radius `R_g = GM/c^2` \[cm\]. -pub fn gravitational_radius_cm(m_bh_msun: f64) -> f64 { - G * (m_bh_msun * M_SUN) / (C_LIGHT * C_LIGHT) -} - -/// Schwarzschild radius `r_s = 2 GM/c^2` \[cm\]. -pub fn r_s(m_bh_msun: f64) -> f64 { - 2.0 * gravitational_radius_cm(m_bh_msun) -} - -/// ISCO radius in units of `R_g = GM/c^2` (dimensionless spin parameter). -/// -/// # Reference -/// Bardeen, Press & Teukolsky 1972, ApJ 178, 347, Eq. (2.21). -pub fn isco_radius(spin: f64) -> f64 { - let a = spin; - let z1 = 1.0 + (1.0 - a * a).cbrt() * ((1.0 + a).cbrt() + (1.0 - a).cbrt()); - let z2 = (3.0 * a * a + z1 * z1).sqrt(); - 3.0 + z2 - ((3.0 - z1) * (3.0 + z1 + 2.0 * z2)).sqrt() -} - -/// ISCO radius \[cm\] for mass `m_bh_msun` and spin `spin`. -pub fn r_isco(m_bh_msun: f64, spin: f64) -> f64 { - isco_radius(spin) * gravitational_radius_cm(m_bh_msun) -} - -/// Specific energy `E/(mu c^2)` (dimensionless) of the prograde ISCO circular -/// orbit at spin `spin`, i.e. the fraction of rest-mass energy a unit mass still -/// carries at the inner edge. -/// -/// `E = (r^(3/2) - 2 r^(1/2) + a) / (r^(3/4) (r^(3/2) - 3 r^(1/2) + 2 a)^(1/2))` -/// with `r = r_isco` in gravitational radii and `a = spin` (upper/prograde sign). -/// -/// # Reference -/// Bardeen, Press & Teukolsky 1972, ApJ 178, 347, Eq. (2.12)-(2.13). -pub fn isco_specific_energy(spin: f64) -> f64 { - let a = spin; - let r = isco_radius(spin); - let sqrt_r = r.sqrt(); - let r32 = r * sqrt_r; - let r34 = r32.sqrt(); - let numerator = r32 - 2.0 * sqrt_r + a; - let denominator = r34 * (r32 - 3.0 * sqrt_r + 2.0 * a).sqrt(); - numerator / denominator -} +// --- Eddington ------------------------------------------------------------- -/// Radiative efficiency `eta = 1 - E_isco` of a thin disk around a Kerr black -/// hole of dimensionless spin `spin`. -/// -/// Ranges from ~0.057 (Schwarzschild, `a = 0`) to ~0.32 at the Thorne spin limit -/// `a = 0.998`, and up to `1 - 1/sqrt(3) ~= 0.42` as `a -> 1`. Spinning up the -/// hole therefore raises both the energy yield per gram and the proximity to the -/// Eddington edge. -/// -/// # Reference -/// Novikov & Thorne 1973; Thorne 1974, ApJ 191, 507 (spin limit). -pub fn efficiency_from_spin(spin: f64) -> f64 { - 1.0 - isco_specific_energy(spin) -} +pub use eddington::{ + eddington_ratio, l_eddington, luminosity_from_mdot, mdot_at_eddington, mdot_from_luminosity, +}; -/// Coordinate orbital frequency \[Hz\] of a prograde circular equatorial orbit at -/// radius `r_over_rg` (in gravitational radii `R_g = GM/c^2`) around a Kerr black -/// hole of mass `m_bh_msun` and dimensionless spin `spin`. -/// -/// `Omega = c^3 / (G M) * 1 / (r^(3/2) + a)`; `f = Omega / (2 pi)`. At the ISCO -/// this is the upper bound of the orbital (and a candidate high-frequency QPO) -/// signal, scaling as `1 / M`. -/// -/// # Reference -/// Bardeen, Press & Teukolsky 1972, ApJ 178, 347, Eq. (2.16). -pub fn orbital_frequency_hz(m_bh_msun: f64, r_over_rg: f64, spin: f64) -> f64 { - let omega = C_LIGHT.powi(3) / (G * m_bh_msun * M_SUN) / (r_over_rg.powf(1.5) + spin); - omega / (2.0 * std::f64::consts::PI) -} +// --- Kerr geometry --------------------------------------------------------- -/// Linear sRGB blackbody color at temperature `temp_k` \[K\], brightest channel -/// normalized to 1.0 (HDR-friendly chromaticity). -/// -/// # References -/// Planck 1901; CIE 1931; Wyman, Sloan & Shirley 2013; IEC 61966-2-1. -pub fn blackbody_rgb(temp_k: f64) -> (f64, f64, f64) { - if temp_k <= 0.0 || !temp_k.is_finite() { - return (0.0, 0.0, 0.0); - } +pub use kerr::{ + THORNE_SPIN_LIMIT, efficiency_from_spin, gravitational_radius_cm, isco_radius, + isco_specific_angular_momentum, isco_specific_energy, orbital_frequency_hz, r_isco, r_s, + specific_angular_momentum, +}; - let (mut x, mut y, mut z) = (0.0_f64, 0.0_f64, 0.0_f64); - let (lambda_min_nm, lambda_max_nm, step_nm) = (380.0, 780.0, 5.0); - let mut lambda_nm = lambda_min_nm; - while lambda_nm <= lambda_max_nm { - let b = planck_spectral_radiance(lambda_nm * NM_TO_CM, temp_k); - let (xb, yb, zb) = cie_xyz_cmf(lambda_nm); - x += b * xb; - y += b * yb; - z += b * zb; - lambda_nm += step_nm; - } +// --- Disk ------------------------------------------------------------------ - let sum = x + y + z; - if sum <= 0.0 { - return (0.0, 0.0, 0.0); - } - let (x, y, z) = (x / sum, y / sum, z / sum); +pub use disk::disk_temperature; - let r = 3.240_625 * x - 1.537_208 * y - 0.498_629 * z; - let g = -0.968_931 * x + 1.875_756 * y + 0.041_518 * z; - let b = 0.055_710 * x - 0.204_021 * y + 1.056_996 * z; +// --- Evolution ------------------------------------------------------------- - let r = r.max(0.0); - let g = g.max(0.0); - let b = b.max(0.0); +pub use evolution::{advance_mass, advance_spin, integrity_rate, salpeter_time_s}; - let peak = r.max(g).max(b); - if peak <= 0.0 { - return (0.0, 0.0, 0.0); - } - (r / peak, g / peak, b / peak) -} +// --- Colorimetry ----------------------------------------------------------- -fn planck_spectral_radiance(lambda_cm: f64, temp_k: f64) -> f64 { - let numerator = 2.0 * H_PLANCK * C_LIGHT * C_LIGHT / lambda_cm.powi(5); - let exponent = H_PLANCK * C_LIGHT / (lambda_cm * K_BOLTZMANN * temp_k); - numerator / (exponent.exp() - 1.0) -} +pub use colorimetry::blackbody_rgb; -fn cie_xyz_cmf(lambda_nm: f64) -> (f64, f64, f64) { - fn g(lambda: f64, mean: f64, sigma_lo: f64, sigma_hi: f64) -> f64 { - let sigma = if lambda < mean { sigma_lo } else { sigma_hi }; - let t = (lambda - mean) / sigma; - (-0.5 * t * t).exp() - } +// --- Derived constants (re-export for golden tests) ------------------------ - let x = 1.056 * g(lambda_nm, 599.8, 37.9, 31.0) + 0.362 * g(lambda_nm, 442.0, 16.0, 26.7) - - 0.065 * g(lambda_nm, 501.1, 20.4, 26.2); - let y = 0.821 * g(lambda_nm, 568.8, 46.9, 40.5) + 0.286 * g(lambda_nm, 530.9, 16.3, 31.1); - let z = 1.217 * g(lambda_nm, 437.0, 11.8, 36.0) + 0.681 * g(lambda_nm, 459.0, 26.0, 13.8); - (x, y, z) -} +pub use derived::{H_BAR, SIGMA_SB, SIGMA_T}; diff --git a/crates/accretion-core/tests/common/mod.rs b/crates/accretion-core/tests/common/mod.rs new file mode 100644 index 0000000..ba681b8 --- /dev/null +++ b/crates/accretion-core/tests/common/mod.rs @@ -0,0 +1,31 @@ +//! Shared helpers for integration tests. + +#![allow(dead_code)] + +/// Relative tolerance for oracle comparison (one part per billion). +pub const ORACLE_RTOL: f64 = 0.000000001; + +/// Tight absolute tolerance for analytic identities. +pub const TOL: f64 = 0.000000001; + +/// Relative tolerance for analytic identities at large magnitudes. +pub const RTOL: f64 = 0.000001; + +/// Standard radiative efficiency used in many identity tests. +pub const ETA: f64 = 0.1; + +/// Assert `got` matches `expected` within relative tolerance `rtol * |expected|`. +pub fn assert_relative_eq(got: f64, expected: f64, rtol: f64) { + assert!( + (got - expected).abs() <= rtol * expected.abs(), + "got={got} expected={expected} rtol={rtol}" + ); +} + +/// Assert `got` matches `expected` within absolute tolerance `tol`. +pub fn assert_abs_eq(got: f64, expected: f64, tol: f64) { + assert!( + (got - expected).abs() <= tol, + "got={got} expected={expected} tol={tol}" + ); +} diff --git a/crates/accretion-core/tests/dynamics.rs b/crates/accretion-core/tests/dynamics.rs deleted file mode 100644 index a5726cc..0000000 --- a/crates/accretion-core/tests/dynamics.rs +++ /dev/null @@ -1,117 +0,0 @@ -//! Analytic identities for the time-evolution / gameplay dynamics. - -use accretion_core as phys; - -const EFFICIENCY: f64 = 0.1; -const TOL: f64 = 0.000000001; -const RTOL: f64 = 0.000000001; - -/// Mass growth keeps the radiated fraction out of the hole: -/// `M(t + dt) - M(t) = (1 - eta) * Mdot * dt` exactly (in grams). -/// -/// Reference: Frank, King & Raine 2002, Ch. 1. -#[test] -fn advance_mass_retains_one_minus_eta() { - const M0: f64 = 10.0; - let mdot = phys::mdot_from_luminosity(phys::l_eddington(M0), EFFICIENCY); - // Step one Salpeter time so the mass gain is comparable to M0 (well - // conditioned); a tiny step would lose the gain to float cancellation. - let dt = phys::salpeter_time_s(EFFICIENCY); - let m1 = phys::advance_mass(M0, mdot, EFFICIENCY, dt); - let gained_g = (m1 - M0) * phys::constants::M_SUN; - let expected_g = (1.0 - EFFICIENCY) * mdot * dt; - assert!((gained_g - expected_g).abs() <= RTOL * expected_g.abs()); -} - -/// Zero feed leaves the mass unchanged regardless of efficiency. -#[test] -fn advance_mass_zero_feed_is_static() { - const M0: f64 = 4_000_000.0; - assert!((phys::advance_mass(M0, 0.0, EFFICIENCY, 1000.0) - M0).abs() < TOL); -} - -/// The Salpeter time equals `M / (dM/dt)` when accreting at the Eddington rate, -/// using an independent path through `l_eddington` / `mdot_from_luminosity`. -/// -/// Reference: Salpeter 1964, ApJ 140, 796. -#[test] -fn salpeter_time_is_eddington_efolding() { - const M: f64 = 100_000_000.0; - let mdot_edd = phys::mdot_from_luminosity(phys::l_eddington(M), EFFICIENCY); - let growth_rate_gs = (1.0 - EFFICIENCY) * mdot_edd; - let efold_s = (M * phys::constants::M_SUN) / growth_rate_gs; - let got = phys::salpeter_time_s(EFFICIENCY); - assert!((got - efold_s).abs() <= RTOL * efold_s.abs()); -} - -/// Integrity driver is the radiation-modified support fraction `1 - lambda`. -#[test] -fn integrity_rate_sign_and_marginal() { - assert!((phys::integrity_rate(0.0) - 1.0).abs() < TOL); - assert!(phys::integrity_rate(1.0).abs() < TOL); - assert!(phys::integrity_rate(2.0) < 0.0); - assert!(phys::integrity_rate(0.5) > 0.0); -} - -/// Schwarzschild radiative efficiency is exactly `1 - sqrt(8/9) ~= 0.0572`. -/// -/// Reference: Bardeen, Press & Teukolsky 1972; Novikov & Thorne 1973. -#[test] -fn efficiency_schwarzschild_is_one_minus_sqrt_8_9() { - let expected = 1.0 - (8.0_f64 / 9.0).sqrt(); - assert!((phys::efficiency_from_spin(0.0) - expected).abs() < TOL); -} - -/// Near-maximal spin (Thorne limit) lands in the canonical ~0.30-0.33 band and -/// efficiency increases monotonically with spin. -#[test] -fn efficiency_rises_with_spin() { - let eta0 = phys::efficiency_from_spin(0.0); - let eta_mid = phys::efficiency_from_spin(0.9); - let eta_thorne = phys::efficiency_from_spin(0.998); - assert!(eta0 < eta_mid); - assert!(eta_mid < eta_thorne); - assert!(eta_thorne > 0.30 && eta_thorne < 0.33); -} - -/// Orbital frequency scales as `1 / M` and is positive. -/// -/// Reference: Bardeen, Press & Teukolsky 1972. -#[test] -fn orbital_frequency_scales_inverse_mass() { - const M: f64 = 10.0; - let f1 = phys::orbital_frequency_hz(M, 6.0, 0.0); - let f2 = phys::orbital_frequency_hz(2.0 * M, 6.0, 0.0); - assert!(f1 > 0.0); - assert!((f2 - f1 / 2.0).abs() <= RTOL * (f1 / 2.0)); -} - -/// Schwarzschild ISCO specific angular momentum is `6 sqrt(2)` in the BPT -/// dimensionless convention used by `advance_spin`. -/// -/// Reference: Bardeen, Press & Teukolsky 1972, Eq. (2.15) at `r = 6`, `a = 0`. -#[test] -fn isco_angular_momentum_schwarzschild() { - let expected = 6.0 * 2.0_f64.sqrt(); - assert!((phys::isco_specific_angular_momentum(0.0) - expected).abs() < TOL); - assert!((phys::specific_angular_momentum(6.0, 0.0) - expected).abs() < TOL); -} - -/// Prograde accretion spins the hole up when `l_isco > 2 a`. -#[test] -fn advance_spin_increases_from_zero() { - const M0: f64 = 10.0; - let mdot = phys::mdot_from_luminosity(phys::l_eddington(M0), EFFICIENCY); - let dt = phys::salpeter_time_s(EFFICIENCY); - let a1 = phys::advance_spin(0.0, M0, mdot, EFFICIENCY, dt); - assert!(a1 > 0.0); - assert!(a1 <= phys::THORNE_SPIN_LIMIT); -} - -/// Eddington feed rate reproduces `lambda = 1`. -#[test] -fn mdot_at_eddington_is_unit_lambda() { - const M: f64 = 42.0; - let mdot = phys::mdot_at_eddington(M, EFFICIENCY); - assert!((phys::eddington_ratio(M, mdot, EFFICIENCY) - 1.0).abs() < RTOL); -} diff --git a/crates/accretion-core/tests/golden.rs b/crates/accretion-core/tests/golden.rs index e173772..a6689cd 100644 --- a/crates/accretion-core/tests/golden.rs +++ b/crates/accretion-core/tests/golden.rs @@ -1,11 +1,12 @@ //! Oracle-driven golden tests: expected values from `scripts/gen_golden.py` (astropy). +mod common; + use std::path::PathBuf; use accretion_core as phys; -/// Relative tolerance for oracle comparison (one part per billion). -const ORACLE_TOL: f64 = 0.000000001; +use common::{ORACLE_RTOL, assert_relative_eq}; #[test] fn golden_matches_astropy_oracle() { @@ -16,8 +17,8 @@ fn golden_matches_astropy_oracle() { for case in doc["cases"].as_array().expect("cases array") { let exp = case["expected"].as_f64().expect("expected f64"); let got = match case["fn"].as_str().expect("fn name") { - "sigma_sb" => phys::derived::SIGMA_SB, - "sigma_t" => phys::derived::SIGMA_T, + "sigma_sb" => phys::SIGMA_SB, + "sigma_t" => phys::SIGMA_T, "l_eddington" => phys::l_eddington(case["args"]["m_bh_msun"].as_f64().unwrap()), "disk_temperature" => phys::disk_temperature( case["args"]["r_cm"].as_f64().unwrap(), @@ -26,10 +27,6 @@ fn golden_matches_astropy_oracle() { ), other => panic!("unknown fn {other}"), }; - assert!( - (got - exp).abs() <= ORACLE_TOL * exp.abs(), - "fn={} got={got} exp={exp}", - case["fn"] - ); + assert_relative_eq(got, exp, ORACLE_RTOL); } } diff --git a/crates/accretion-core/tests/identity.rs b/crates/accretion-core/tests/identity.rs deleted file mode 100644 index 856d0a1..0000000 --- a/crates/accretion-core/tests/identity.rs +++ /dev/null @@ -1,50 +0,0 @@ -//! Analytic physics identities (no oracle required). - -use accretion_core as phys; - -const EFFICIENCY: f64 = 0.1; -const M_MSUN: f64 = 10.0; -const R_IN_R_S: f64 = 10.0; -const R_OUT_R_S: f64 = 20.0; -const TOL: f64 = 0.000000001; -const RTOL: f64 = 0.000001; - -/// Shakura-Sunyaev scaling: `T(2r) / T(r) = 2^(-3/4)`. -/// -/// Reference: Shakura & Sunyaev 1973, A&A 24, 337. -#[test] -fn disk_temperature_scaling_law() { - let mdot = phys::mdot_from_luminosity(phys::l_eddington(M_MSUN), EFFICIENCY); - let r_in = R_IN_R_S * phys::r_s(M_MSUN); - let r_out = R_OUT_R_S * phys::r_s(M_MSUN); - let ratio = - phys::disk_temperature(r_out, M_MSUN, mdot) / phys::disk_temperature(r_in, M_MSUN, mdot); - assert!((ratio - 2.0_f64.powf(-0.75)).abs() < TOL); -} - -/// Schwarzschild ISCO: `r_isco / R_g == 6`. -/// -/// Reference: Bardeen, Press & Teukolsky 1972, ApJ 178, 347. -#[test] -fn isco_schwarzschild_ratio_is_six() { - const M: f64 = 12.3; - let r_g = phys::gravitational_radius_cm(M); - assert!((phys::r_isco(M, 0.0) / r_g - 6.0).abs() < TOL); - assert!((phys::isco_radius(0.0) - 6.0).abs() < TOL); -} - -#[test] -fn mdot_luminosity_round_trip() { - const M: f64 = 100_000_000.0; - let l = phys::l_eddington(M); - let mdot = phys::mdot_from_luminosity(l, EFFICIENCY); - assert!((phys::luminosity_from_mdot(mdot, EFFICIENCY) - l).abs() < RTOL * l.abs()); -} - -#[test] -fn blackbody_color_temperature_ordering() { - let (hr, _hg, hb) = phys::blackbody_rgb(20_000.0); - let (cr, _cg, cb) = phys::blackbody_rgb(3_000.0); - assert!(hb >= hr); - assert!(cr > cb); -} diff --git a/crates/accretion-core/tests/integration.rs b/crates/accretion-core/tests/integration.rs new file mode 100644 index 0000000..dce2d8e --- /dev/null +++ b/crates/accretion-core/tests/integration.rs @@ -0,0 +1,77 @@ +//! Cross-module integration checks (Eddington + Kerr + disk + evolution). + +mod common; + +use accretion_core as phys; + +use common::{ETA, RTOL, TOL, assert_abs_eq, assert_relative_eq}; + +#[test] +fn eddington_luminosity_mass_scaling() { + let l1 = phys::l_eddington(10.0); + let l2 = phys::l_eddington(20.0); + assert_abs_eq(l2 / l1, 2.0, TOL); +} + +#[test] +fn mdot_luminosity_round_trip_at_eddington() { + let l = phys::l_eddington(100_000_000.0); + let mdot = phys::mdot_from_luminosity(l, ETA); + assert_relative_eq(phys::luminosity_from_mdot(mdot, ETA), l, RTOL); +} + +#[test] +fn schwarzschild_isco_chain() { + const M: f64 = 12.3; + let r_g = phys::gravitational_radius_cm(M); + assert_abs_eq(phys::r_isco(M, 0.0) / r_g, 6.0, TOL); + assert_abs_eq(phys::isco_radius(0.0), 6.0, TOL); + assert_abs_eq(phys::r_s(M) / r_g, 2.0, TOL); +} + +#[test] +fn disk_temperature_ss73_scaling() { + const M: f64 = 10.0; + let mdot = phys::mdot_from_luminosity(phys::l_eddington(M), ETA); + let r_in = 10.0 * phys::r_s(M); + let r_out = 20.0 * phys::r_s(M); + let ratio = phys::disk_temperature(r_out, M, mdot) / phys::disk_temperature(r_in, M, mdot); + assert_abs_eq(ratio, 2.0_f64.powf(-0.75), TOL); +} + +#[test] +fn salpeter_time_matches_mass_efolding_at_eddington() { + const M: f64 = 100_000_000.0; + let mdot_edd = phys::mdot_from_luminosity(phys::l_eddington(M), ETA); + let growth_rate_gs = (1.0 - ETA) * mdot_edd; + let efold_s = (M * phys::constants::M_SUN) / growth_rate_gs; + assert_relative_eq(phys::salpeter_time_s(ETA), efold_s, RTOL); +} + +#[test] +fn spin_up_and_efficiency_coupling() { + const M0: f64 = 10.0; + let mdot = phys::mdot_from_luminosity(phys::l_eddington(M0), ETA); + let dt = phys::salpeter_time_s(ETA); + let spin = phys::advance_spin(0.0, M0, mdot, ETA, dt); + let eta = phys::efficiency_from_spin(spin); + assert!(spin > 0.0); + assert!(eta > phys::efficiency_from_spin(0.0)); +} + +#[test] +fn blackbody_colour_ordering() { + let (hr, _hg, hb) = phys::blackbody_rgb(20_000.0); + let (cr, _cg, cb) = phys::blackbody_rgb(3_000.0); + assert!(hb >= hr); + assert!(cr > cb); +} + +#[test] +fn derived_sigma_sb_matches_stefan_boltzmann_formula() { + use phys::constants::{C_LIGHT, H_PLANCK, K_BOLTZMANN}; + const PI: f64 = std::f64::consts::PI; + let expected = + 2.0 * PI.powi(5) * K_BOLTZMANN.powi(4) / (15.0 * C_LIGHT.powi(2) * H_PLANCK.powi(3)); + assert_relative_eq(phys::SIGMA_SB, expected, 0.000000000001); +} diff --git a/crates/godot-ext/src/lib.rs b/crates/godot-ext/src/lib.rs index e82efe7..3ab20d3 100644 --- a/crates/godot-ext/src/lib.rs +++ b/crates/godot-ext/src/lib.rs @@ -22,9 +22,11 @@ struct BlackHole { mdot_gs: f64, #[export] + #[var(set = set_spin)] #[init(val = 0.0)] spin: f64, + /// Kerr radiative efficiency `eta = 1 - E_isco`; kept in sync with `spin`. #[export] #[init(val = 0.1)] efficiency: f64, @@ -41,6 +43,10 @@ struct BlackHole { #[godot_api] impl INode for BlackHole { + fn ready(&mut self) { + self.sync_efficiency_from_spin(); + } + fn process(&mut self, _delta: f64) { let color = self.disk_inner_color(); let uniform = StringName::from(&self.color_uniform); @@ -52,6 +58,18 @@ impl INode for BlackHole { #[godot_api] impl BlackHole { + #[func] + fn set_spin(&mut self, spin: f64) { + self.spin = spin; + self.sync_efficiency_from_spin(); + } + + /// Radiative efficiency implied by the current spin (Kerr ISCO binding energy). + #[func] + fn efficiency_from_spin(&self) -> f64 { + phys::efficiency_from_spin(self.spin) + } + #[func] fn disk_inner_temp(&self, r_cm: f64) -> f64 { phys::disk_temperature(r_cm, self.mass_solar, self.mdot_gs) @@ -105,12 +123,6 @@ impl BlackHole { phys::integrity_rate(self.eddington_ratio()) } - /// Radiative efficiency implied by the current spin (Kerr ISCO binding energy). - #[func] - fn efficiency_from_spin(&self) -> f64 { - phys::efficiency_from_spin(self.spin) - } - /// Accretion rate \[g/s\] at the Eddington limit (`lambda = 1`) for current mass. #[func] fn mdot_at_eddington(&self) -> f64 { @@ -157,4 +169,8 @@ impl BlackHole { fn isco_orbital_frequency_hz(&self) -> f64 { phys::orbital_frequency_hz(self.mass_solar, phys::isco_radius(self.spin), self.spin) } + + fn sync_efficiency_from_spin(&mut self) { + self.efficiency = phys::efficiency_from_spin(self.spin); + } } diff --git a/scenes/GodotSmoke.tscn b/scenes/GodotSmoke.tscn new file mode 100644 index 0000000..f76b776 --- /dev/null +++ b/scenes/GodotSmoke.tscn @@ -0,0 +1,6 @@ +[gd_scene format=3 uid="uid://csxs8qpfy65aa"] + +[ext_resource type="Script" path="res://scripts/godot_smoke.gd" id="1"] + +[node name="GodotSmoke" type="Node"] +script = ExtResource("1") diff --git a/scripts/build_godot_ext.sh b/scripts/build_godot_ext.sh new file mode 100755 index 0000000..24a1797 --- /dev/null +++ b/scripts/build_godot_ext.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env sh +# Build libgodot_ext into ./target/ (res://target/...) so Godot loads the fresh dylib. +# Cursor/sandbox sets CARGO_TARGET_DIR elsewhere; this script pins the output path. +set -eu +cd "$(dirname "$0")/.." +export CARGO_TARGET_DIR="${CARGO_TARGET_DIR:-$(pwd)/target}" +exec cargo build -p godot-ext "$@" diff --git a/scripts/godot_smoke.gd b/scripts/godot_smoke.gd new file mode 100644 index 0000000..dc8464b --- /dev/null +++ b/scripts/godot_smoke.gd @@ -0,0 +1,88 @@ +extends Node +## Headless GDExtension smoke test — every BlackHole API used by main.gd. +## +## Run: make godot-smoke (or godot --headless --path . res://scenes/GodotSmoke.tscn) + +const GRADIENT_OUTER_RISCO := 14.0 + + +func _ready() -> void: + var exit_code := _run() + get_tree().quit(exit_code) + + +func _run() -> int: + if not ClassDB.class_exists("BlackHole"): + push_error("BlackHole GDExtension class not registered — run `make build` first") + return 1 + + var bh: Node = ClassDB.instantiate("BlackHole") + if bh == null: + push_error("Failed to instantiate BlackHole") + return 1 + add_child(bh) + + bh.set("mass_solar", 21.0) + bh.set("mdot_gs", 8.0e17) + bh.set("spin", 0.0) + + var methods := [ + "l_eddington", + "luminosity_erg_s", + "eddington_ratio", + "isco_in_rg", + "schwarzschild_radius_cm", + "disk_inner_temp_k", + "isco_orbital_frequency_hz", + "salpeter_time_s", + "mdot_at_eddington", + "disk_inner_color", + "integrity_rate", + ] + for method in methods: + if not bh.has_method(method): + push_error("Missing BlackHole method: %s (stale libgodot_ext.dylib? run `make build`)" % method) + return 1 + + var t_salpeter: float = bh.call("salpeter_time_s") + if not is_finite(t_salpeter) or t_salpeter <= 0.0: + push_error("salpeter_time_s returned invalid value: %s" % t_salpeter) + return 1 + + var dt := t_salpeter * 0.01 + var new_mass: float = bh.call("advance_mass", dt) + if not is_finite(new_mass) or new_mass <= 0.0: + push_error("advance_mass returned invalid value: %s" % new_mass) + return 1 + bh.set("mass_solar", new_mass) + + var new_spin: float = bh.call("advance_spin", dt) + if not is_finite(new_spin): + push_error("advance_spin returned invalid value: %s" % new_spin) + return 1 + bh.set("spin", new_spin) + + var eta: float = bh.get("efficiency") + if not is_finite(eta) or eta <= 0.0 or eta >= 1.0: + push_error("efficiency out of range after spin sync: %s" % eta) + return 1 + + var rate: float = bh.call("integrity_rate") + if not is_finite(rate): + push_error("integrity_rate returned NaN") + return 1 + + var inner: Color = bh.call("disk_color_at", 1.0) + var outer: Color = bh.call("disk_color_at", GRADIENT_OUTER_RISCO) + if inner.r + inner.g + inner.b <= 0.0: + push_error("disk_color_at(1.0) returned black") + return 1 + + print( + "[godot_smoke] OK mass=", new_mass, + " spin=", new_spin, + " eta=", eta, + " salpeter_s=", t_salpeter, + " integrity=", rate + ) + return 0 diff --git a/scripts/godot_smoke.gd.uid b/scripts/godot_smoke.gd.uid new file mode 100644 index 0000000..9fd9110 --- /dev/null +++ b/scripts/godot_smoke.gd.uid @@ -0,0 +1 @@ +uid://1pynocpvhj7c diff --git a/scripts/main.gd b/scripts/main.gd index cbc8843..45ed8a5 100644 --- a/scripts/main.gd +++ b/scripts/main.gd @@ -209,7 +209,6 @@ func _apply_inputs() -> void: black_hole.set("mass_solar", _mass) black_hole.set("mdot_gs", pow(10.0, feed_slider.value)) black_hole.set("spin", spin_slider.value) - black_hole.set("efficiency", black_hole.call("efficiency_from_spin")) func _process(delta: float) -> void: @@ -225,7 +224,6 @@ func _process(delta: float) -> void: func _step_simulation(delta: float) -> void: - black_hole.set("efficiency", black_hole.call("efficiency_from_spin")) var t_salpeter: float = black_hole.call("salpeter_time_s") var dt_sim := delta * t_salpeter / SECONDS_PER_EFOLD _sim_seconds += dt_sim diff --git a/scripts/run_score.gd.uid b/scripts/run_score.gd.uid new file mode 100644 index 0000000..c77677c --- /dev/null +++ b/scripts/run_score.gd.uid @@ -0,0 +1 @@ +uid://32k7ik1d452 From 3c77d8edfa19845d08a4466bbc4137f5aac04e52 Mon Sep 17 00:00:00 2001 From: ysSemanticSystems Date: Sun, 21 Jun 2026 00:24:13 -0500 Subject: [PATCH 5/8] Install Godot 4.7 in CI for headless smoke gate Linux runners lack /Applications/Godot.app; download the official 4.7 binary and set GODOT_BIN so make godot-smoke runs in make check. --- .github/workflows/ci.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9c88c93..9d3380b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,5 +29,15 @@ jobs: - uses: Swatinem/rust-cache@v2 + - name: Install Godot 4.7 (headless smoke test) + run: | + sudo apt-get update + sudo apt-get install -y libfontconfig1 libglu1-mesa + curl -L -o godot.zip \ + "https://github.com/godotengine/godot/releases/download/4.7-stable/Godot_v4.7-stable_linux.x86_64.zip" + unzip -q godot.zip + chmod +x Godot_v4.7-stable_linux.x86_64 + echo "GODOT_BIN=${{ github.workspace }}/Godot_v4.7-stable_linux.x86_64" >> "$GITHUB_ENV" + - name: Full gate run: make check From 22b2def24b5d82c24f8e4fa0cb882a759a26ea74 Mon Sep 17 00:00:00 2001 From: ysSemanticSystems Date: Sun, 21 Jun 2026 00:26:42 -0500 Subject: [PATCH 6/8] Load godot-ext from bin/ and fix Linux CI smoke test Copy the built cdylib into res://bin/ so Godot loads a fresh artifact outside gitignored target/. Disable hot reload for stable headless CI, install Godot 4.7 on Linux runners, and verify the .so before smoke. --- .github/workflows/ci.yml | 8 +++++++- .gitignore | 5 +++++ Makefile | 8 +++++++- README.md | 7 +++---- accretion.gdextension | 24 +++++++++++------------- bin/.gitkeep | 0 scripts/build_godot_ext.sh | 23 ++++++++++++++++++++--- scripts/godot_smoke.gd | 2 +- 8 files changed, 54 insertions(+), 23 deletions(-) create mode 100644 bin/.gitkeep diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9d3380b..435fcba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,12 +32,18 @@ jobs: - name: Install Godot 4.7 (headless smoke test) run: | sudo apt-get update - sudo apt-get install -y libfontconfig1 libglu1-mesa + sudo apt-get install -y libfontconfig1 libglu1-mesa libx11-6 libxcursor1 libxinerama1 libxi6 libxrandr2 curl -L -o godot.zip \ "https://github.com/godotengine/godot/releases/download/4.7-stable/Godot_v4.7-stable_linux.x86_64.zip" unzip -q godot.zip chmod +x Godot_v4.7-stable_linux.x86_64 echo "GODOT_BIN=${{ github.workspace }}/Godot_v4.7-stable_linux.x86_64" >> "$GITHUB_ENV" + - name: Verify gdext artifact after build + run: | + make build + ls -la bin/ + ldd bin/libgodot_ext.so + - name: Full gate run: make check diff --git a/.gitignore b/.gitignore index e5e583d..a2a9c18 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,8 @@ # Rust / Cargo build artifacts /target/ rust_out + +# Godot-loaded native libs (copied from target/ by scripts/build_godot_ext.sh) +/bin/*.dylib +/bin/*.so +/bin/*.dll diff --git a/Makefile b/Makefile index 9357fd0..77f08a8 100644 --- a/Makefile +++ b/Makefile @@ -33,8 +33,14 @@ godot-smoke: build if [ -x "$(GODOT_BIN)" ]; then GODOT="$(GODOT_BIN)"; \ elif command -v $(GODOT_FALLBACK) >/dev/null 2>&1; then GODOT="$(GODOT_FALLBACK)"; \ else echo "ERROR: Godot not found. Install to /Applications/Godot.app or set GODOT_BIN."; exit 1; fi; \ + case "$(uname -s)" in \ + Darwin) test -f bin/libgodot_ext.dylib || { echo "ERROR: bin/libgodot_ext.dylib missing"; exit 1; } ;; \ + Linux) test -f bin/libgodot_ext.so || { echo "ERROR: bin/libgodot_ext.so missing"; exit 1; } ;; \ + esac; \ echo "Godot smoke test ($$GODOT)…"; \ - "$$GODOT" --headless --path . res://scenes/GodotSmoke.tscn + "$$GODOT" --headless --path . res://scenes/GodotSmoke.tscn; \ + status=$$?; \ + if [ $$status -ne 0 ]; then exit $$status; fi check: gen hooks git diff --exit-code crates/accretion-core/src/constants.rs diff --git a/README.md b/README.md index 99c8f90..6b15683 100644 --- a/README.md +++ b/README.md @@ -66,10 +66,9 @@ make check # generators, invariants, test, clippy, build, ``` **Before opening Godot**, run `make build` (or `make godot-smoke`). The native -library must land in `target/debug/libgodot_ext.dylib` — that is what -`accretion.gdextension` loads via `res://target/debug/`. A plain `cargo build` -from some environments writes elsewhere and Godot will keep an old, method-poor -dylib. +library is copied to `bin/libgodot_ext.dylib` (macOS) or `bin/libgodot_ext.so` +(Linux) — that is what `accretion.gdextension` loads. Do not point Godot at a +stale `target/debug/` artifact from an old build. `make godot-smoke` headlessly instantiates `BlackHole` and calls every Rust API used by the game (`salpeter_time_s`, `advance_mass`, …). On macOS the Makefile diff --git a/accretion.gdextension b/accretion.gdextension index a4844d8..01ec7a7 100644 --- a/accretion.gdextension +++ b/accretion.gdextension @@ -1,6 +1,5 @@ ; GDExtension manifest for the accretion game. -; The native library is built by `cargo build` (debug) / `cargo build --release` -; from the workspace root into `target/{debug,release}/`. +; Built by `make build` → scripts/build_godot_ext.sh copies the cdylib into bin/. ; ; entry_symbol is gdext's default init function. ; Built against the prebuilt api-4-6 bindings; loads under the Godot 4.7 @@ -9,17 +8,16 @@ [configuration] entry_symbol = "gdext_rust_init" compatibility_minimum = 4.6 -reloadable = true +reloadable = false [libraries] -; Primary target: macOS (Apple Silicon / arm64). -macos.debug = "res://target/debug/libgodot_ext.dylib" -macos.release = "res://target/release/libgodot_ext.dylib" -macos.debug.arm64 = "res://target/debug/libgodot_ext.dylib" -macos.release.arm64 = "res://target/release/libgodot_ext.dylib" +macos.debug = "res://bin/libgodot_ext.dylib" +macos.release = "res://bin/libgodot_ext.dylib" +macos.debug.arm64 = "res://bin/libgodot_ext.dylib" +macos.release.arm64 = "res://bin/libgodot_ext.dylib" -; Convenience entries for other hosts (build the matching target first). -linux.debug.x86_64 = "res://target/debug/libgodot_ext.so" -linux.release.x86_64 = "res://target/release/libgodot_ext.so" -windows.debug.x86_64 = "res://target/debug/godot_ext.dll" -windows.release.x86_64 = "res://target/release/godot_ext.dll" +linux.debug.x86_64 = "res://bin/libgodot_ext.so" +linux.release.x86_64 = "res://bin/libgodot_ext.so" + +windows.debug.x86_64 = "res://bin/godot_ext.dll" +windows.release.x86_64 = "res://bin/godot_ext.dll" diff --git a/bin/.gitkeep b/bin/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/scripts/build_godot_ext.sh b/scripts/build_godot_ext.sh index 24a1797..be617bb 100755 --- a/scripts/build_godot_ext.sh +++ b/scripts/build_godot_ext.sh @@ -1,7 +1,24 @@ #!/usr/bin/env sh -# Build libgodot_ext into ./target/ (res://target/...) so Godot loads the fresh dylib. -# Cursor/sandbox sets CARGO_TARGET_DIR elsewhere; this script pins the output path. +# Build libgodot_ext and copy into bin/ (res://bin/...) for Godot to load. +# Cursor/sandbox may set CARGO_TARGET_DIR elsewhere; pin output to ./target. set -eu cd "$(dirname "$0")/.." export CARGO_TARGET_DIR="${CARGO_TARGET_DIR:-$(pwd)/target}" -exec cargo build -p godot-ext "$@" +cargo build -p godot-ext "$@" +mkdir -p bin +case "$(uname -s)" in + Darwin) + install -m 755 target/debug/libgodot_ext.dylib bin/libgodot_ext.dylib + ;; + Linux) + install -m 755 target/debug/libgodot_ext.so bin/libgodot_ext.so + ;; + MINGW* | MSYS* | CYGWIN*) + install -m 755 target/debug/godot_ext.dll bin/godot_ext.dll + ;; + *) + echo "Unsupported OS for godot-ext install: $(uname -s)" >&2 + exit 1 + ;; +esac +echo "Installed godot-ext → bin/ ($(uname -s))" diff --git a/scripts/godot_smoke.gd b/scripts/godot_smoke.gd index dc8464b..d179436 100644 --- a/scripts/godot_smoke.gd +++ b/scripts/godot_smoke.gd @@ -41,7 +41,7 @@ func _run() -> int: ] for method in methods: if not bh.has_method(method): - push_error("Missing BlackHole method: %s (stale libgodot_ext.dylib? run `make build`)" % method) + push_error("Missing BlackHole method: %s (stale native lib? run `make build`)" % method) return 1 var t_salpeter: float = bh.call("salpeter_time_s") From 6667761d049cbd92c2958caa3f99ecec041eef38 Mon Sep 17 00:00:00 2001 From: ysSemanticSystems Date: Sun, 21 Jun 2026 00:28:15 -0500 Subject: [PATCH 7/8] Stop gitignoring bin/ native libs for Godot res:// load Godot skips gitignored paths when resolving res:// URLs, which prevented Linux CI from loading libgodot_ext.so. Poll for BlackHole registration in the smoke test and surface verbose Godot output on failure. --- .gitignore | 7 +++---- Makefile | 4 ++-- scripts/godot_smoke.gd | 5 +++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index a2a9c18..278740a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,6 @@ /target/ rust_out -# Godot-loaded native libs (copied from target/ by scripts/build_godot_ext.sh) -/bin/*.dylib -/bin/*.so -/bin/*.dll +# bin/ holds Godot-loaded native libs (must NOT be gitignored — Godot skips +# ignored paths when resolving res://). Do not commit the binaries; make build +# creates them locally. diff --git a/Makefile b/Makefile index 77f08a8..297fd13 100644 --- a/Makefile +++ b/Makefile @@ -38,8 +38,8 @@ godot-smoke: build Linux) test -f bin/libgodot_ext.so || { echo "ERROR: bin/libgodot_ext.so missing"; exit 1; } ;; \ esac; \ echo "Godot smoke test ($$GODOT)…"; \ - "$$GODOT" --headless --path . res://scenes/GodotSmoke.tscn; \ - status=$$?; \ + "$$GODOT" --headless --verbose --path . res://scenes/GodotSmoke.tscn 2>&1 | tail -20; \ + status=$${PIPESTATUS[0]}; \ if [ $$status -ne 0 ]; then exit $$status; fi check: gen hooks diff --git a/scripts/godot_smoke.gd b/scripts/godot_smoke.gd index d179436..1509fba 100644 --- a/scripts/godot_smoke.gd +++ b/scripts/godot_smoke.gd @@ -7,6 +7,11 @@ const GRADIENT_OUTER_RISCO := 14.0 func _ready() -> void: + # GDExtension may register one frame after project boot on some hosts. + for _i in 30: + if ClassDB.class_exists("BlackHole"): + break + await get_tree().process_frame var exit_code := _run() get_tree().quit(exit_code) From 58ea967d0638cd6a5bcbf443054649415aa91120 Mon Sep 17 00:00:00 2001 From: ysSemanticSystems Date: Sun, 21 Jun 2026 00:31:30 -0500 Subject: [PATCH 8/8] Bootstrap .godot before headless GDExtension smoke test Fresh clones lack .godot/extension_list.cfg, so Godot never loads accretion.gdextension until the editor scans the project once. Run a headless editor boot when needed before the BlackHole API smoke test. --- Makefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 297fd13..1665b63 100644 --- a/Makefile +++ b/Makefile @@ -38,9 +38,11 @@ godot-smoke: build Linux) test -f bin/libgodot_ext.so || { echo "ERROR: bin/libgodot_ext.so missing"; exit 1; } ;; \ esac; \ echo "Godot smoke test ($$GODOT)…"; \ - "$$GODOT" --headless --verbose --path . res://scenes/GodotSmoke.tscn 2>&1 | tail -20; \ - status=$${PIPESTATUS[0]}; \ - if [ $$status -ne 0 ]; then exit $$status; fi + if [ ! -f .godot/extension_list.cfg ]; then \ + echo "Bootstrapping .godot/ (fresh clone — verifying GDExtensions)…"; \ + "$$GODOT" --headless --path . -e --quit-after 1 >/dev/null 2>&1 || true; \ + fi; \ + "$$GODOT" --headless --path . res://scenes/GodotSmoke.tscn check: gen hooks git diff --exit-code crates/accretion-core/src/constants.rs