Physics conversation: honest rotation, EOS placeholders, movement-cap anisotropy #38

Closed
opened 2026-07-21 09:05:22 +00:00 by coilyco-ops · 1 comment
Member

Agenda for the "true physics stuff" discussion Kai queued during the make-it-look-like-something pass. The current sim keeps persistent structure via three placeholder mechanisms that deserve principled replacements.

Placeholders shipped (galaxy.rs constants, documented in docs/galaxy-rust.md):

  • REPULSE_R2 - gravity flips repulsive at contact range. Crude pressure proxy.
  • CELL_MASS_CAP + traffic-jam rejection + pressure overflow - incompressibility floor. Order-dependent occupancy checks, von-Neumann-only overflow spreading.
  • Display-frame rotation - the visible arm rotation is a render layer driven by tick count (ROTATION_RAD_PER_TICK in dataviz.tsx), not physics. Jammed filaments cannot coherently rotate in the current transfer model.

Known artifacts to discuss:

  • Movement-cap anisotropy - MAX_SUBGRID_STEP clamps per-axis, so high-speed flows (bang ejecta at escape velocity) move diagonally and the explosion fractures into 90-degree lobes. Wants CFL-style substepping or magnitude-preserving clamping.
  • Stored velocity in jams grows without bound (blocked cells keep integrating gravity, drag is the only sink) - the annulus tangential-velocity metric in debug_sim shows the creep.
  • Jammed regions transmit no shear stress, which is why honest arm rotation fails today.

Measurement harness: cargo run --bin debug_sim [ticks] - seeded all-modes probe printing nonzero cells, max cell mass, rms radius, and wrap-safe annulus tangential velocity at checkpoints. Global L_z is not usable as a rotation metric near the boundary.

Filed by Claude during the galaxy-gen visual overhaul session (commits 5a478a2, 8bd065a).

Agenda for the "true physics stuff" discussion Kai queued during the make-it-look-like-something pass. The current sim keeps persistent structure via three placeholder mechanisms that deserve principled replacements. **Placeholders shipped (galaxy.rs constants, documented in docs/galaxy-rust.md):** * `REPULSE_R2` - gravity flips repulsive at contact range. Crude pressure proxy. * `CELL_MASS_CAP` + traffic-jam rejection + pressure overflow - incompressibility floor. Order-dependent occupancy checks, von-Neumann-only overflow spreading. * Display-frame rotation - the visible arm rotation is a render layer driven by tick count (`ROTATION_RAD_PER_TICK` in dataviz.tsx), not physics. Jammed filaments cannot coherently rotate in the current transfer model. **Known artifacts to discuss:** * Movement-cap anisotropy - `MAX_SUBGRID_STEP` clamps per-axis, so high-speed flows (bang ejecta at escape velocity) move diagonally and the explosion fractures into 90-degree lobes. Wants CFL-style substepping or magnitude-preserving clamping. * Stored velocity in jams grows without bound (blocked cells keep integrating gravity, drag is the only sink) - the annulus tangential-velocity metric in debug_sim shows the creep. * Jammed regions transmit no shear stress, which is why honest arm rotation fails today. **Measurement harness:** `cargo run --bin debug_sim [ticks]` - seeded all-modes probe printing nonzero cells, max cell mass, rms radius, and wrap-safe annulus tangential velocity at checkpoints. Global L_z is not usable as a rotation metric near the boundary. Filed by Claude during the galaxy-gen visual overhaul session (commits 5a478a2, 8bd065a).
Author
Member

Status update after the living-galaxy architecture landed (commits 631b83e..37cf80f): the entity/process/event rework resolves several items on this agenda and reframes the rest.

Resolved:

  • Honest rotation - the visible population is now sparse collisionless stars with continuous positions reading a coarse gravity field. They never touch the cell-transfer pipeline, so they cannot jam and orbit honestly at any speed. The display-frame rotation layer (ROTATION_RAD_PER_TICK) is deleted.
  • Movement-cap anisotropy - now scoped to gas only. Stars integrate uncapped; supernova ejecta and orbital motion show no diagonal bias. The gas-side cap artifact remains but the gas is a background layer now.
  • Stored-velocity creep is no longer a rotation problem (jammed gas is not what rotates), though jammed cells still integrate phantom velocity. Note: the collapse watch deliberately has NO velocity gate because of exactly this - stored speed anti-selects proto-cluster cells (see the constant comment in galaxy.rs).

Re-evaluated placeholders (kept, still load-bearing):

  • REPULSE_R2, CELL_MASS_CAP + traffic-jam rejection, and pressure overflow still shape gas structure between collapses. Star formation now actively drains cap-dense cells (CloudCollapse consumes 55% + neighbors), so the cap is less of an endstate and more of a collapse threshold - which is what it gets reinterpreted as in the causal loop.

Remaining for the physics conversation:

  • Gas movement-cap anisotropy (CFL-style substepping or magnitude-preserving clamp) if gas dynamics ever return to the foreground.
  • Remnant heat death: remnant star mass never recycles, so on very long runs mass accumulates in dim remnants. A remnant-merger or black-hole-growth channel would close the cycle fully.
  • Boundary halo: high-velocity supernova ejecta accumulates in a ring just outside the disk radius (the star clamp parks escapees at disk_r + 3 and the spring recovers them slowly). Reads as a halo; tune CONFINE_STIFFNESS for stars if it gets too dense.
  • debug_sim now prints per-process timing, star counts, and per-kind event counts - the measurement harness for whatever this conversation decides.

Filed by Claude during the living-galaxy build session.

Status update after the living-galaxy architecture landed (commits 631b83e..37cf80f): the entity/process/event rework resolves several items on this agenda and reframes the rest. **Resolved:** * Honest rotation - the visible population is now sparse collisionless stars with continuous positions reading a coarse gravity field. They never touch the cell-transfer pipeline, so they cannot jam and orbit honestly at any speed. The display-frame rotation layer (`ROTATION_RAD_PER_TICK`) is deleted. * Movement-cap anisotropy - now scoped to gas only. Stars integrate uncapped; supernova ejecta and orbital motion show no diagonal bias. The gas-side cap artifact remains but the gas is a background layer now. * Stored-velocity creep is no longer a rotation problem (jammed gas is not what rotates), though jammed cells still integrate phantom velocity. Note: the collapse watch deliberately has NO velocity gate because of exactly this - stored speed anti-selects proto-cluster cells (see the constant comment in galaxy.rs). **Re-evaluated placeholders (kept, still load-bearing):** * `REPULSE_R2`, `CELL_MASS_CAP` + traffic-jam rejection, and pressure overflow still shape gas structure between collapses. Star formation now actively drains cap-dense cells (CloudCollapse consumes 55% + neighbors), so the cap is less of an endstate and more of a collapse threshold - which is what it gets reinterpreted as in the causal loop. **Remaining for the physics conversation:** * Gas movement-cap anisotropy (CFL-style substepping or magnitude-preserving clamp) if gas dynamics ever return to the foreground. * Remnant heat death: remnant star mass never recycles, so on very long runs mass accumulates in dim remnants. A remnant-merger or black-hole-growth channel would close the cycle fully. * Boundary halo: high-velocity supernova ejecta accumulates in a ring just outside the disk radius (the star clamp parks escapees at disk_r + 3 and the spring recovers them slowly). Reads as a halo; tune CONFINE_STIFFNESS for stars if it gets too dense. * debug_sim now prints per-process timing, star counts, and per-kind event counts - the measurement harness for whatever this conversation decides. Filed by Claude during the living-galaxy build session.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/galaxy-gen#38
No description provided.