The Gravitas model
How Gravitas Models the Universe
What the simulation calculates, what it approximates, and what it visualizes.
Every scientific model is a set of choices. Some parts of reality are kept because they carry the behavior you are trying to understand; others are simplified or left out because including them would cost more than it explains. A model is judged by whether those choices suit the question being asked, not by how much of the universe it contains.
This page states the choices Gravitas makes. It is written for instructors deciding whether to assign it, for students who want to know what they are looking at, and for anyone who wants to check a claim against the code. Where the implementation is simpler than the astronomy, it says so and says why.
The core model at a glance
- Gravity Newtonian N-body
- Dimensions Two spatial dimensions
- Motion Numerically integrated, step by step
- Collisions Perfectly inelastic mergers
- Relativity Not solved; used analytically for display
- Inspiral Phenomenological energy loss
- Jets and disks Visual only
- Built for Interactive astronomy education
Throughout this page, five labels are used for how a feature is handled:
| Simulated | Computed by the dynamical simulation, step by step, from the equations of motion. |
| Analytic | Evaluated from a closed-form expression for display. Correct for the idealized case it describes, but not evolved by the simulation. |
| Approximated | A prescription chosen to reproduce the right qualitative behavior, not derived from the governing theory. |
| Illustrative | Drawn to make a phenomenon recognizable. Carries no physics. |
| Not modeled | Absent from the simulation entirely. |
Why simplify?
Astronomers choose models to fit questions. Kepler's laws ignore the pull of the planets on each other, and they are still how orbits are taught and how most orbital calculations begin. Newtonian gravity is not the final word on gravity, and it is entirely sufficient to fly a spacecraft to Saturn. A transit model that treats a star as a uniform disk gets the planet's radius to a few percent without knowing anything about stellar atmospheres.
None of those are failures. They are models matched to questions. The useful question about any model is not is this perfectly realistic? but is this appropriate for what I am asking?
Gravitas is built for one kind of question: what happens to a gravitational system when you change something about it, and what can you measure from watching. It is optimized for visualization, experiment, and conceptual understanding at the undergraduate introductory level. It is not a replacement for professional N-body, stellar-evolution, hydrodynamics or numerical-relativity codes, and it is not trying to be.
Gravity and motion
Simulated
Every object is a point mass. The acceleration of a body is the sum of the Newtonian pull of every gravitating source:
a = Σ G Mₓ / rₓ² (directed at each source)
This is the acceleration form of F = GMm/r². Writing it as an acceleration is deliberate: the mass of the body being moved cancels, which is why a feather and a cannonball follow the same orbit.
The simulation advances by repeatedly taking a small step in time. At each step it computes the acceleration at each body's current position, updates the velocity with it, and then moves the body using the updated velocity. That ordering matters: it is the semi-implicit, or symplectic, Euler method, and unlike the naive alternative it does not systematically pump energy into an orbit. A planet left running for a long time stays on its orbit rather than slowly spiralling outward.
Two details are worth stating because they are visible in the simulation's behavior.
- Not every object pulls. Every object always feels gravity. Which objects exert it depends on the scenario settings: black holes and stars always do; gas giants, neutron stars and white dwarfs do unless star-only gravity is on; planets and asteroids do only when mutual gravity is enabled. A scene of a hundred asteroids runs at a usable frame rate because the asteroids are not pulling on each other.
- Close encounters are softened. The separation used in the force calculation has a floor, five simulation length units by default. Without it, two objects passing arbitrarily close would produce an arbitrarily large acceleration in a single step and be flung across the screen, which is a numerical artifact rather than physics. Softening is standard practice in N-body work; the cost is that very close passages are gentler than reality.
Not modeled: general-relativistic corrections to orbits, including perihelion precession; radiation pressure; non-gravitational forces such as cometary outgassing; tidal torques and spin.
Two dimensions
Simulated
The dynamical simulation is two-dimensional. Every object has a position and velocity in a single plane, and everything therefore orbits in that one plane.
For most of what Gravitas teaches this is not a compromise at all. A two-body orbit is planar in reality too: the orbit of a planet around a star lies in a fixed plane, and drawing it in that plane is drawing it correctly. Kepler's laws, orbital energy, escape trajectories, binary star motion and the barycenter are all fully represented.
What the restriction removes:
- Mutual inclinations. Real planetary systems are not exactly coplanar, and the small mutual inclinations matter for long-term stability and for how systems form.
- Out-of-plane encounters. A three-body encounter in three dimensions has more ways to unfold than one confined to a plane, and scattering outcomes differ.
- Viewing geometry. The dynamics are planar, but the observing geometry is not. A line-of-sight direction is built analytically in three dimensions from a position angle and an inclination, and simulated positions and velocities are projected onto it. Tilting the observer away from edge-on therefore moves a planet's track off the stellar disk and ends the transit, reduces the radial-velocity amplitude by sin i, and opens the astrometric path from a line into an ellipse, all from one shared calculation. What the simulation does not do is evolve orbits out of the plane: mutual inclinations, nodal precession and the three-dimensional architecture of real multi-planet systems are all absent.
Reference frames
Simulated
The equations are integrated in one frame, the one the scenario was built in. The view can be re-expressed in another: the system's barycenter, or any single body. This changes nothing about the physics and everything about the picture, which is the point.
Positions are re-expressed by subtracting the frame's origin, and trails by subtracting where that origin was at the time each point was recorded. That second part is what makes the transformation honest. Subtracting only the origin's present position would slide the whole drawing sideways without changing its shape, which is what following a body with the camera does.
Put the Solar System into Earth's frame and Mars traces a loop that doubles back on itself. Nothing was added to produce it: retrograde motion is already present in the recorded positions of two bodies on circular orbits with different periods, and choosing the frame is what makes it visible. It is the observation that Ptolemy's epicycles were built to reproduce and that Copernicus explained away.
Two things to know about how this is implemented:
- The barycenter is taken over the massive bodies. Stars, black holes, compact remnants, planets, gas giants, asteroids and comets. Debris and particles are excluded: they carry little mass and are culled aggressively when they leave the visible region, so including them would make the frame's origin jump whenever a fragment disappeared.
- The starfield does not move with the frame. That is deliberate and it is correct: the background stars stand in for objects at effectively infinite distance, and translating the observer does not change the direction to them. It is also what makes the loop legible, because retrograde motion is defined against the fixed stars.
Speeds are reported in the frame as well, but beside the world-frame
velocity rather than instead of it. While a frame is active the object
inspector gains a row reading, for example, Speed vs Mars,
and the existing Velocity row keeps its original meaning.
Quietly changing what a labeled number refers to would be worse than
showing both.
A trail point older than the frame origin's own history cannot be expressed in that frame at all, and is not drawn. The alternative would be to leave those points where they sit in world coordinates, splicing a piece of a different picture onto the end of this one.
Collisions and mergers
Approximated
When two objects come within the sum of their radii, Gravitas replaces them with a single object. The new object's mass is the sum of the two, and its position and velocity are the mass-weighted average of theirs.
What a merger conserves
- Mass
- Conserved exactly. The merged object has the total mass.
- Momentum
- Conserved exactly. The new velocity is the center-of-momentum velocity of the pair.
- Kinetic energy
- Not conserved, and it should not be. This is a perfectly inelastic collision, and the missing kinetic energy is exactly what would go into heating, deformation and debris in a real impact. Gravitas does not track where it goes; it simply is not carried forward.
Absorption by a black hole uses the same calculation. A body that crosses the hole's absorption radius is merged into it: the hole moves to the center of mass of the pair and takes the mass-weighted mean velocity, so mass, linear momentum and the center of mass are all conserved exactly. This used to be the one exception - the mass was added and the hole's velocity was left alone, which threw the body's momentum away - and it is no longer.
What still cannot be carried forward is the angular momentum of the pair about its own center of mass. Physically that becomes black-hole spin, which is how real holes are spun up by accretion; Gravitas models a hole as a point mass with no spin, so there is nowhere for it to go. It is recorded rather than dropped, and it is bounded by the absorption radius, so it is small for the usual case of a light body falling into a heavy hole.
Two configurations keep the old behavior deliberately, because in both of them the hole is not a dynamical participant: a static black hole, which is a fixed potential well that pulls without being pulled, and one-way gravity, where the small bodies are test particles with no influence of their own. In those the hole gains the mass and does not move. Both are already flagged as departures wherever conservation is reported.
Not modeled: fragmentation, shock heating, hydrodynamics, debris production from impacts, stellar structure, or any radiation from a collision. A merger in Gravitas is an instantaneous bookkeeping operation.
This makes a good teaching example in its own right: the trajectories before the collision are modeled dynamically and are as good as the integrator; the collision itself is a simplification. Students can reason confidently about the approach and should be skeptical about the aftermath.
Gravitational-wave inspiral
Approximated
Gravitas does not solve Einstein's field equations. There is no numerical relativity in it, and no post-Newtonian expansion.
What it has is an orbital-decay term. In scenarios with orbiting black holes, each black hole's velocity is multiplied by a factor slightly less than one on every step, at a rate set per scenario. Energy leaves the orbit, the separation shrinks, and by Kepler's third law the orbital frequency rises as it does so. The pair spirals together and merges.
What this reproduces, and what it does not
- Reproduces
- The qualitative sequence: a binary loses orbital energy, the separation decreases, the orbital frequency rises, and the two objects merge. This is the story of a compact-binary inspiral and it is the story the visualization tells correctly.
- Does not reproduce
- The rate. Real gravitational-wave emission removes energy at a rate that depends extremely steeply on separation, so a real inspiral is almost imperceptible for millions of years and then completes in seconds. The decay term here is a constant fractional damping and does not carry that separation dependence, so the characteristic runaway at the end is not reproduced with the right steepness.
- Also absent
- A real black-hole merger radiates several percent of the total mass away as gravitational waves. In Gravitas the merged black hole has exactly the sum of the two masses.
The visible ripple at a merger and the sound it makes are Illustrative. Their strength is a value chosen per merger type to make an event read on screen, not a strain amplitude computed from the masses. The merger sound is designed audio: its pitch falls, whereas a real gravitational-wave chirp rises in frequency before ringing down. It marks an event; it is not a sonified waveform.
Good for: the concept of inspiral, orbital energy
loss, rising orbital frequency, compact-object mergers as events in a
simulation.
Not for: gravitational-waveform prediction,
strong-field numerical relativity, or anything resembling parameter
estimation from a signal.
The gravitational-wave lab
Approximated
Everything in the section above is the sandbox. The gravitational-wave lab, which the lesson Listening to spacetime uses, is a separate thing built to a different standard, and the two are kept apart everywhere they appear. The sandbox spirals a binary in with a damping constant; the lab computes a waveform.
What the lab computes
- The model
- The leading-order (quadrupole, 0PN) inspiral of two point masses on circular orbits. Peters (1964), Phys. Rev. 136, B1224 for the radiation reaction; Maggiore, Gravitational Waves Vol. 1 (2008) sections 4.1.2 and 4.1.3 for the closed-form frequency, phase and amplitude; Sathyaprakash and Schutz, Living Rev. Relativity 12, 2 (2009) for the detector conventions.
- Not included
- Spin, eccentricity, tides, precession, higher multipoles, and every post-Newtonian correction beyond the leading term. There is no merger and no ringdown.
- Where it stops
- At the Schwarzschild innermost stable circular orbit of the total mass, 4397 Hz divided by the total mass in solar masses. It is never extrapolated past that point. For a 65-solar-mass binary that is 67.7 Hz, which is well below the frequencies LIGO recorded from GW150914 — so an inspiral-only model covers only the beginning of that event, and the lab says so rather than filling the gap.
- How far it can be trusted before then
-
The lab displays the orbital velocity parameter
v/c = (πGMf/c³)1/3, which is 0.408 at the innermost stable orbit. The terms the model drops enter at relative order(v/c)². A 65-solar-mass binary is already at 0.27 when it enters a ground-based detector's band, so for a heavy black-hole binary there is no frequency inside that band at which this model is quantitatively reliable. A pair of neutron stars is, up to about 185 Hz. - Masses and distance
- Masses are detector-frame (redshifted) masses throughout, because that is what the waveform depends on. No cosmology is assumed anywhere and no source-frame mass is inferred from a distance. Distance is luminosity distance; strain is exactly inversely proportional to it.
- Detector response
-
The source is placed directly overhead with polarization angle zero,
so
F+ = 1,F× = 0and the plotted strain is the plus polarization. The cross polarization is computed and plotted separately because it is physical. The effective distanceD/((1 + cos²ι)/2)is reported beside the true one, which is the whole of the distance–inclination degeneracy.
The schematic source beside the plots is Illustrative. The separation is computed — Kepler's third law at the modeled frequency — but the picture is not to scale, the bodies are drawn far larger than they are, the wavefront rings carry an exaggerated amplitude at a compressed and slowed propagation scale, and the near field is masked because the far-field expression that sets those amplitudes does not describe it. A ring of test masses appears in its own inset with the wave arriving out of the page, so the deformation drawn is transverse by construction; a detector is never drawn beside the binary.
Audio from the lab is the computed waveform, filled from the same timeline at the audio device's sample rate. It is not quantized onto a musical scale — that is the sandbox's sonification, which is a designed thing and is labeled as one. A chirp that ends at 68 Hz has to be moved to be audible on a laptop speaker, and the interface prints exactly what was done: the speed factor, any constant frequency shift, and by how much a shift flattened the chirp relative to the real signal.
Simulated detector noise is colored to a published analytic fit to the Advanced LIGO zero-detuning high-power design curve (LIGO-T0900288), in the form given by Ajith (2011), arXiv:1107.1267. It is seeded, so it is reproducible and does not change when a parameter changes. It is a design curve and not the noise any detector had.
Comparing two signals reports a similarity: a normalized, noise-weighted overlap maximized over time and phase, from 0 to 1. It is the same inner product a matched filter is built on and it is not a signal-to-noise ratio, a false-alarm rate, a detection significance or a probability. Establishing any of those needs a template bank, a background estimate and a trials factor, none of which are here.
The GW150914 data
Measured The figure data published with Abbott et al. (2016), Phys. Rev. Lett. 116, 061102, released by the Gravitational Wave Open Science Center under CC BY 4.0: the observed strain from both detectors, the collaboration's numerical-relativity reconstruction, the residual, and the published Keplerian separation and post-Newtonian velocity.
Reproduced, not reprocessed. It was decimated from 16384 Hz and quantized to 16 bits, with the resulting error recorded per trace, and nothing else was done to it: no time shift, no sign inversion, no filtering and no alignment. The collaboration band-passed it to 35–350 Hz and notched the instrument lines before publishing, which the interface states wherever the traces are drawn. The relative shift and sign between Hanford and Livingston are measured by the build and recorded as findings rather than applied, because the lesson asks a student to find them.
The energy an inspiral loses in this application is never a computed gravitational-wave luminosity. In the sandbox it is a damping constant; in the lab it is the leading-order radiation-reaction rate, which is a real calculation but not a measurement of anything.
Good for: the chirp and why it rises, the chirp mass
as the quantity an inspiral constrains, the distance–inclination
degeneracy, what a detector band does to what you can see, and the
difference between a measurement, a model and an illustration.
Not for: merger or ringdown waveforms, parameter
estimation, detection statistics, neutron-star post-merger physics, or
anything that depends on spin, tides or eccentricity.
Black holes
Simulated Analytic
This distinction is the most important one on the page. A black hole in Gravitas participates in the gravitational simulation using the same Newtonian N-body dynamics as everything else. Adding a black hole to a scene does not make the simulation relativistic. There is no event horizon in the dynamics, no innermost stable circular orbit enforced on trajectories, and no light bending. An object orbiting a black hole is on a Newtonian orbit around a point mass.
Separately, when you select a black hole, Gravitas evaluates a set of analytic expressions for display. These are correct closed-form results for a Schwarzschild black hole, computed from its mass:
| Quantity | How it is obtained |
|---|---|
| Schwarzschild radius | Rₛ = 2GM/c², about 2.95 km per solar mass. |
| Escape speed at the horizon | Exactly the speed of light, by construction. |
| Average density | Mass divided by the volume of a sphere of radius Rₛ. A comparison quantity, not a claim about the interior. |
| Hawking temperature | T = ℏc³ / (8πGMk₋). |
| Evaporation lifetime | t = 5120πG²M³ / (ℏc⁴). |
| Innermost stable circular orbit | Its period, computed at 3Rₛ. Reported for interest; the simulation does not enforce it. |
Every one of these assumes a Schwarzschild black hole: non-rotating and uncharged. Real astrophysical black holes generally rotate, often rapidly, which changes the horizon geometry, moves the innermost stable orbit, and adds an ergosphere. None of that is modeled. The trends taught in the black-hole investigation, that radius grows with mass while density, temperature and lifetime fall, survive rotation unchanged.
What the disk and the jets are
Illustrative A drawing, driven by one stated configuration per object: an environment, a disk inclination, a position angle, a flow direction and a jet strength. The projected disk, which side is brighter, and where the jets point are all derived from that same configuration, so they cannot disagree about which way the object faces. It used to be three independent answers, and a jet could point along the disk plane. See NASA’s anatomy of a black hole for what the parts are.
- What the environment decides
- Whether there is anything luminous at all. A quiescent hole is a silhouette and nothing else; an accreting one has a disk; a jet-producing accretor has both. Mass does not decide this: a quiescent supermassive hole is dark and a feeding stellar-mass one is bright, so it is a property each scenario states. Two black holes merging in vacuum stay dark, because nothing is there to shine.
- The radial brightness
- Thin-disk-inspired. The Shakura–Sunyaev result for a steady thin disk around a non-rotating hole has the dissipation per unit area fall as r⁻³ times a factor that vanishes at the inner edge, so the emission does not peak at the inner boundary and does not diverge at the horizon: it rises from zero, peaks at (7/6)² times the inner radius, and falls steeply. That shape is reproduced. The absolute scale is a display choice.
- Where the inner edge is
- Six gravitational radii — three Schwarzschild radii — which is the innermost stable circular orbit of the non-rotating case. A spinning hole’s is smaller, down to one for a maximal co-rotating disk, and nothing here models spin. The drawn extent is compressed relative to that: the model’s inner-to-outer ratio is 10:1 and the drawing uses 4.2:1, because the outer decades are nearly invisible anyway and the full extent fills the screen at a close zoom.
- The bright side
- A bounded qualitative model, not a measured Doppler factor. A real calculation needs a line-of-sight velocity in units of c, and this engine has no such number: its speeds are in sandbox units chosen so orbits are watchable. What is taken from the physics is the shape — the line-of-sight component of circular motion in a plane inclined by i is exactly cos φ sin i, and beaming grows with speed, so the weighting is scaled by the local Keplerian speed. The result is clamped, so no part of the disk can be blown out or driven to zero. Reversing the rotation reverses the bright side; a face-on disk has no asymmetry at all. The bright side does not rotate with the material: it is fixed by the viewing geometry, and material moves through it.
- How the bright side is painted
- In two layers that share one radial envelope, which is what stops the disk having an edge. The weighting splits exactly into a part that depends on the radius — the inclination times the local Keplerian speed — and a part that depends only on the azimuth, cos φ. The first goes into a radial gradient built from the same emissivity profile as the disk itself, so it reaches zero exactly where the disk does; the second becomes the opacity of a set of wedges, spaced so that one step is below what an eight-bit canvas can show. The two are composited additively, which is both what light does and what keeps the wedges from leaving seams where they meet. Before this, the brightening was a single left-to-right gradient across the whole disk with no radius in it, so it was still at full strength at the rim and the disk stopped at a hard elliptical cut.
- The jets
- A narrow core in a soft sheath, widening and fading outwards, with a few deterministic knots at close zoom. They are launched from outside the drawn horizon, because nothing escapes from inside one. Their brightness difference is a bounded illustration of relativistic beaming and not a computed one: the physical statement that an outflow pointing towards the viewer looks brighter is real, but nothing here knows a Lorentz factor, so the contrast is a display constant. The two are deliberately not equal at every inclination. Their lengths are visually compressed and share no scale with the horizon.
- The colors
- Illustrative. No temperature and no observing band is modeled anywhere in this application, so these are not the colors of anything. A real disk’s appearance depends on its temperature, which depends on the hole’s mass and accretion rate; a stellar-mass disk and a supermassive one are nothing like each other, and neither is necessarily orange to a human eye.
- No lensing
- The far side of the disk passes behind the dark region, because this is an ordinary geometric projection with depth ordering. A real image would show it bent above and below the shadow. That is not drawn, and no decorative arc pretends otherwise: a defensible lensing approximation did not fit this pass, and an honest omission is better than an ornament labeled ray tracing.
- What the drawing cannot do
- Reach the model. It takes a position, a drawn radius, a configuration and a clock, and it paints; it reads no settings and no state, and it draws nothing from the random-number stream the simulation reproduces from. Decorative tracers used to add their mass to the hole and to consume that stream while a world was being built, so a rendering setting changed both the bodies a seed produced and the rate a black hole grew. They are gone; real accretion is unchanged and still happens where it always did.
- No outline
- Every black hole used to carry a pale circle at the edge of its silhouette, drawn last so that it lay over the foreground half of the disk. It was a locating aid, and it read as light coming off a surface that emits none. It is gone. Finding a dark object is the hover and selection rings’ job, and those are drawn as UI: a restrained dashed ring, a screen pixel and a half wide at any zoom, outside the silhouette rather than on it, and only for the object a reader has chosen. Explain this view may draw a dashed boundary at the silhouette, labeled, because that is a diagram. There is deliberately no bright ring at some multiple of the drawn radius labeled a photon sphere. The horizon, the photon sphere, the apparent shadow and the disk’s inner edge are four different things and this engine computes none of the middle two.
- Motion
- Driven by the simulated clock, so pausing freezes it and the same state at the same time draws the same picture. Under reduced motion the clock is held at zero: the picture is complete and legible, it simply does not move.
The black disk on screen is not the event horizon to scale. Drawn object sizes across Gravitas are chosen for visibility. A black hole's drawn radius grows as roughly the cube root of its mass so that a supermassive hole is visibly bigger without filling the screen; the true Schwarzschild radius grows in direct proportion to mass and, for a stellar-mass black hole, would be far too small to see. The number in the inspector is the real one.
Stars: how hot, how bright, how big
Analytic Approximated
Every star in Gravitas is described by one shared model, and the model says on every number how it arrived at it. There are three ways it can know something.
Three kinds of number
- Declared
- A scenario built from a catalog supplies a measured temperature, luminosity or radius. TRAPPIST-1 carries 2566 K, 0.000553 solar luminosities and 0.1192 solar radii, and nothing overwrites them.
- Modeled
- A star placed on an evolutionary track carries the temperature, luminosity and mass that track has at that age. Seven tracks are bundled: 0.2, 0.5, 1, 2, 5, 10, 20 and 40 solar masses, from MIST v1.2 at solar composition with no rotation.
- Estimated
- A star the sandbox generated is a mass and nothing else, so its temperature and luminosity come from main-sequence relations in that mass. This is the common case, it is a guess, and the inspector marks each guessed number (estimated) rather than printing it like a measurement.
Whichever of the three it is, the radius follows from the other two by
the Stefan–Boltzmann relation
L / L☉ = (R / R☉)² (Teff
/ 5772 K)4, which is exact — it is the definition of effective temperature.
One relation, one place, so the transit depth, the habitable-zone ring
and the inspector card cannot disagree about how big a star is. They
used to: three modules each had their own mass–radius power law.
The bundled evolutionary tracks
Simulated elsewhere MIST v1.2, [Fe/H] = 0, [α/Fe] = 0, v/vcrit = 0, computed with MESA and published by the MIST project. Cite Dotter (2016), ApJS 222, 8 and Choi et al. (2016), ApJ 823, 102. Gravitas did not compute these and could not: they are the output of a stellar-structure code integrating a star for up to a trillion years.
What Gravitas did is reduce them, from about 7,700 rows of 77 columns to about 2,300 rows of four, and record how. The ten primary equivalent evolutionary points are kept exactly, so the named phase boundaries are where MIST put them, and the thinning between them is bounded at 0.004 dex in luminosity and half that in temperature. The worst error the reduction introduced is recorded on every track. The build script reproduces the whole bundle from the published 100 MB download in one command, and verifies its checksum.
- Where the tracks stop
- 0.2 and 0.5 solar masses stop at the end of core hydrogen burning, because MESA stopped them there — after 1.1 trillion and 96 billion years respectively. Those figures are model predictions about stars far younger than their own lifetimes, and no such star has finished one. 1, 2 and 5 solar masses run through to a cooling white dwarf. 10 and 20 solar masses stop at carbon ignition, before core collapse: they end as red supergiants of 609 and 1,070 solar radii, and what happens next is not in this model.
- What is not modeled
- Rotation, binarity, magnetic fields, and any composition but solar. Core collapse, supernovae and remnant formation. White-dwarf cooling beyond the first few million years.
- What an age query cannot reach
- The helium flash and the thermal pulses on the asymptotic giant branch pass in centuries at an age of a billion years, closer together than any stored age can separate. Those points are reached by evolutionary point and by index instead, and each track records how many of its samples an age query cannot address.
The main-sequence estimates are the crude part and are labeled as such wherever they appear. The mass–luminosity relation is the usual broken power law, and the lifetime that follows from it is fuel divided by the rate it burns at. Compared against the tracks it is fair in the middle and poor at the bottom: for a 0.2 solar-mass star the estimate gives 350 billion years and the integrated model gives 1.1 trillion, because a fully convective star burns very nearly all of its hydrogen rather than the tenth a fixed core fraction assumes.
Two tools now say when they do not apply. The habitable-zone parameterization is fitted for main-sequence stars between 2600 and 7200 K, so it declines for a red giant rather than extrapolating a polynomial; and the transit-photometry model declines on a pulsating giant, whose radius is not a constant over an observation.
Evolutionary playback
The same tracks, played through instead of scrubbed. One age drives every linked view — temperature, radius, luminosity, color, current mass and phase all come from the same position on the same track, so they cannot disagree about what the star is doing.
- Two clocks, and why the difference matters
- Paced by time, the playhead is logarithmic in age and how far it has traveled is how far through the life the star is. Paced by phase, it runs along the track’s own stored samples so that every stage is reachable, and it stops being a clock. The readout always says which is in force, and for the current phase it prints the real duration beside the share of the playback it is getting: on a solar-mass star the thermally-pulsing AGB lasts 1.4 million years, a hundredth of a per cent of the life, and takes 45 per cent of the phase-paced playhead. A viewer who is not told that will read the animation as a claim about duration.
- Neither end of the playback is the model
- Before the track there is a contracting cloud, drawn as an illustration with no temperature, no radius and no age, because MIST’s pre-main-sequence tracks begin at an object that already has a photosphere and a cloud does not. After it there is a remnant card. Both are labeled, and the quantitative readout is blank in the first and replaced in the second.
- The interior is a diagram, not a structure
- The optional schematic shows which process is releasing the energy — core hydrogen, a hydrogen shell, core helium — which the track’s phase does determine. The radii of its shells do not: the bundled tracks are surface quantities and carry no radial structure at all. The panel says so wherever it is shown.
- Nothing accumulates
- The path drawn on the diagram is recomputed from the track between its start and the playhead rather than appended to as time passes, and the shells of expelled material come from a seeded generator keyed on the track. So seeking backwards shortens the path and removes the shells rather than leaving them behind, and two runs of the same playback draw the same picture. There are no particles with lives of their own anywhere in it.
- It never touches the simulation
- A stellar lifetime is billions of years and the sandbox clock counts days; integrating orbits across one would not be slow, it would be meaningless. The playback advances an age along a published track and the N-body engine does not know it happened. The star renderer is shared; the collision and merger routines beside it are not reachable from here, which a test asserts by reading the imports.
What each modeled star ends as
Simulated elsewhere
Three of the bundled tracks answer this themselves: 1, 2 and 5 solar
masses run through to a cooling white dwarf, and the remnant masses
— 0.54, 0.59 and 0.89 solar — are the tracks’ own
last samples rather than a separate calculation. The rest stop while
the star is still burning, and what happens afterwards is quoted from
published work in js/stellar/endpoints.js, which is a
separate module so that the two kinds of statement cannot be confused.
Every entry carries a fromTrack flag saying which it is.
- Why there is a 40 solar-mass track
- Because whether a massive star explodes is not a monotonic function of its mass, and a black hole asserted from a mass cut would teach the opposite of what the literature says. Sukhbold et al. (2016) find interleaved islands of explosion and collapse. So the neutron star here comes from the 10 solar-mass track, where the models agree it explodes; the 20 solar-mass case is left explicitly uncertain, because it is; and the black hole comes from a 40 solar-mass track, where they agree again.
- What a remnant is not given
- A place on the H–R diagram, unless it has a photosphere. A white dwarf keeps one because MIST followed it there. A neutron star and a black hole get neither a temperature nor a luminosity: the track ends where the model ends and a card describes the remnant in words beside it. Nothing is plotted at log(0) and no supernova’s transient brightness is drawn as if it were the progenitor’s photospheric track.
- What is deliberately absent
- A formula from initial mass to remnant mass. Each entry is one representative outcome for one modeled star, with the range its source reports, and nothing interpolates between them. Progenitor mass is never quoted as remnant mass. The mass a star returns to space is only what the track itself recorded losing — whatever an explosion ejects is not in the model and is not counted.
The Stellar Lab
Taught in A Universe of Stars, a twenty-eight step investigation built on this instrument, and Lives of Stars, which follows four of the bundled models from a collapsing cloud to a white dwarf, a neutron star and a black hole.
An H–R diagram with the eight tracks on it, a picture of the selected star, a stage for comparing several, and a synthetic population. Temperature increases to the left, which is an accident of how the first spectral sequences were ordered and catches everyone once; both axes are logarithmic.
- Two ways to choose a star, and they are different things
- A modeled star is a point on a bundled track, and carries a mass, an age, a phase and a remaining main-sequence lifetime. A chosen point is a temperature and a luminosity the student put somewhere, and carries a radius — because Stefan–Boltzmann gives one — and nothing else. It is not assigned a mass, an age or a lifetime, because a position on this diagram does not fix any of them: at 4,500 K and 100 solar luminosities six of the bundled models pass close, at ages from ten thousand years to 1.3 billion. The lab lists them and refuses to pick one. Nothing snaps: asking to see nearby models does not move the point, and adopting one is a separate, deliberate act.
- The regions are shaded, not bounded
- The main sequence, the giants, the supergiants and the white dwarfs are drawn as soft blocks with dashed edges. A star is not a giant because it crossed a line. The main-sequence block is traced from the zero-age and terminal-age points of the bundled tracks themselves, so it cannot drift away from the stars plotted on it. The optional constant-radius guides are straight lines on these axes, which is worth seeing: it is why the diagram separates giants from dwarfs at all.
- Two size modes, and only one of them compares
- True relative sizes draws every pinned star on one linear scale. Beside a supergiant a main-sequence star is genuinely smaller than a pixel, and it is drawn as a marker and labeled as one rather than inflated to be visible. Fit each star magnifies each into its own box and states the magnification under each, because in that mode the apparent sizes mean nothing. Where a star is larger than an orbit of the Solar System, the orbit is drawn for scale — that is a size comparison and not a claim that any planet was ever there.
- The synthetic population
- Illustrative A few hundred stars drawn from a Kroupa (2001) initial mass function between 0.2 and 20 solar masses, with a constant star-formation rate over the last ten billion years, and each one placed on the same bundled tracks. It is reproducible from its seed. Stars the sample draws that have already left the main sequence are dropped rather than guessed at, and the number dropped is reported. The same population is shown twice: all of it, and the part above a stated flux cut at a common distance. The first is about two thirds M dwarfs; the second contains none. That gap is the selection effect, and it is the reason the sample exists. It is not a survey, it is not observed, no star in it is real, and it has no dust, no binaries and no composition but solar.
Good for: the difference between mass, temperature,
luminosity and radius; reading an H–R diagram; why massive stars
live briefly; comparing modeled stars against each other.
Not for: stellar interiors, nucleosynthesis yields,
asteroseismology, non-solar compositions, or the fate of any
individual real star. And nothing here ages a star in the ordinary
sandbox: a sandbox star's properties do not change as the simulation
runs.
The spacetime view
Illustrative
The three-dimensional grid view shows a mesh that dips beneath each massive object. It is an educational visualization of the idea that mass shapes the geometry objects move through. It is not a numerical solution of anything.
Specifically: the depth of the well beneath an object is a smooth falloff function scaled by the logarithm of its mass, with a sharper profile for black holes so the singularity reads visually. It is not the Newtonian potential, and it is not an embedding diagram of the Schwarzschild metric. The shape was chosen to look right and to keep every object legible across the enormous mass range Gravitas allows.
The familiar rubber-sheet picture is a metaphor even when drawn rigorously, since it depicts curved space using a surface embedded in a flat space, and it says nothing about the curvature of time, which is what actually produces the fall of a dropped object. Gravitas's version is a metaphor drawn for clarity. It is genuinely useful for talking about why mass matters and why a deeper well is harder to climb out of, and it should not be read as a calculation.
Visual effects
Illustrative
Several features exist to make phenomena recognizable and discussable. None of them affects the dynamics: switching them all off changes what you see and nothing about where anything goes.
| Feature | What it is |
|---|---|
| Relativistic jets | A drawn beam whose brightness responds to recent accretion. No accretion-disk magnetohydrodynamics, no relativistic plasma, no magnetic field launching, no radiative transfer. It exists so that students meet the phenomenon and can ask what produces it. |
| Accretion disks | Drawn particles orbiting a black hole, with a brightness that rises when the hole gains mass. Decorative rather than hydrodynamic. |
| Merger flashes and debris | Particle effects marking an event. The particles are not gravitating matter and carry no mass. |
| Gravitational-wave ripples | An expanding ring drawn at a merger. Its amplitude is an authored constant, not a computed strain. |
| Object sizes and colors | Drawn diameters use a compressed scale so that a planet is visible beside a star; they are not to scale with each other or with the orbits. Stellar colors follow temperature, which is physically motivated. See Displayed sizes for the four different radii a body has and which of them the drawing uses. |
| Planetary rings | A projected disk of concentric bands drawn around about a quarter of generated gas giants, with the far half behind the planet and the near half in front of it. The fraction is a choice about visual variety, not a measured occurrence rate; see Displayed sizes. Rings carry no mass and take no part in gravity, collisions, transit depth, the Roche limit or the hit test. |
| Trails | A record of where an object has been, kept for a limited number of recent positions. A drawing aid, not a computed orbit. |
| Sonification | Designed audio cues for events, with pitch and loudness driven by object mass and event type. Not a rendering of any physical signal. |
The conservation check
Diagnostic
Gravitas measures the total energy and total angular momentum of the bodies it is integrating, continuously, and compares them against a reference taken when the world was built. Those numbers are always computed: the validation suite, the numerical reliability check, several investigations and the evidence exports all read them.
Displaying them is off by default. They used to sit in the corner of every first visit as three unlabeled rows — an integrator’s name, an energy drift, an angular-momentum drift — with nothing saying what they meant or what to do about them. A reader who has not been told otherwise reads a drift as a fault, and in a scenario with a static black hole or imposed orbital decay reads a large one as a fault too, when it is the model doing exactly what it was built to do. Turn them on under Settings → Numerical accuracy; the five scenarios whose lessons are about the integration turn them on themselves.
When shown, the values arrive grouped under “Conservation check” with the reasons this scene is not closed listed beside them — a static hole, one-way gravity, a halo or MOND field, imposed orbital decay, merging, tidal stripping — and with the moment the reference was taken. A change under any of those is the model, not the method. Note in particular that an energy decrease in an inspiral scenario is an imposed decay rate, not a computed gravitational-wave luminosity; nothing in this simulation calculates radiated energy.
What a student can do with it
In a closed system, a change is numerical error, and the way to establish that is to refine the integration and see whether it shrinks: run the same experiment from the same initial conditions with a smaller step, using the numerical reliability check in the experiment bench, and compare over the same simulated interval. Changing the playback speed is not the same thing — halving the frame advance also halves the simulated time each frame covers, so the step barely moves. The reliability check halves the substep cap instead, which is what actually refines the integration. Gravitas never changes the integrator, the step or any physical setting on its own to make a number look better.
When a percentage is not available
A relative drift is a change divided by a reference, and that division is meaningless when the reference is itself the near-cancellation of much larger quantities: a marginally bound pair has a total energy near zero with large kinetic and potential terms, and a system whose bodies circulate in opposite senses can have a total angular momentum near zero with large individual contributions. Dividing by those produces an enormous figure that says more about the cancellation than about the integrator.
So each total is compared with the sum of the magnitudes that produced it, and a percentage is offered only when the total is at least one part in a thousand of that scale. Below it, the change itself is shown in simulation units with an explanation, rather than a large percentage. The rule is a conditioning test rather than a list of scenarios: an empty sandbox, a marginally bound pair and a counter-rotating system all fail it for the same reason, and a new scenario that does the same will fail it without anybody adding a case.
The reference is taken when a world is built, and can be retaken deliberately. It is never reset on its own to make a large change disappear, and the reference time is shown beside the values so that a retaken one is visible.
Displayed sizes
Illustrative
A body in Gravitas has four different sizes. They are easy to confuse and confusing any two of them causes a different kind of error, so this section names all four and says which one the drawing uses.
| Radius | What it is, and what depends on it |
|---|---|
| Analytic (physical) radius |
What the body physically is, in kilometers or solar radii,
derived from its mass by the mass–radius relations in
js/lightCurve.js and
js/habitability.js, or taken from an explicit
radiusInSuns, radiusInEarths or
radiusInJupiters
where a scenario names a real object. This is the number the
inspector reports and the number a transit depth is computed
from. It is the only one of the four that is a claim about
nature.
|
| Model radius |
object.radius, in simulation length units. What the
simulation runs on: contact and separation in
handle_collisions, merging, tidal disruption and
Roche-limit thresholds, the geometric overlap during a transit,
and the floor of the hit target. It is itself a compressed
stand-in — the Sun is 15 units and the Earth 5 — so
it is not a physical radius either, and nothing measured is
reported in it.
|
| Canvas display radius |
What is drawn, and only what is drawn. The model radius times a
per-family factor from DISPLAY_FACTOR in
js/bodyVisuals.js. Nothing reads it except the draw
paths.
|
| Minimum marker and hit-target radii | Two independent floors in screen pixels. A body smaller than the marker floor is drawn at the floor so that it does not vanish; a click within the hit radius selects it. The hit radius is computed from the model radius and is unaffected by the display factor, which is what lets a planet be drawn eight times smaller than its star without becoming eight times harder to select. |
Why the drawing is compressed
The real ratios cannot be drawn. The Sun’s radius is about 109 times the Earth’s and about 9.7 times Jupiter’s; at a zoom where the Sun is a visible disc, an Earth drawn to scale beside it is a fraction of a pixel. That is why the model radii were flattened in the first place — but flattened as far as they were, they made a different and equally wrong claim: a star twice the radius of a rocky planet and barely wider than a gas giant.
The drawing now applies one documented compression across every scenario. Stars are unchanged; everything else is reduced against them.
| Comparison | Real | Drawn before | Drawn now |
|---|---|---|---|
| Sun-like star : Earth-like planet | 109 : 1 | 3.0 : 1 | 8.0 : 1 |
| Sun-like star : Jupiter-like giant | 9.7 : 1 | 1.9 : 1 | 4.0 : 1 |
| Jupiter-like giant : Earth-like planet | 11.2 : 1 | 1.6 : 1 | 2.0 : 1 |
These are the ratios at a zoom where nothing is held at the marker floor. Zoomed out far enough that a planet would be a fraction of a pixel, it is drawn at the floor instead and the ratio compresses further — which is a statement about what is visible, not about what is true. White dwarfs are drawn smaller than ordinary stars; neutron stars, comets, asteroids and distant planets sit on the marker floor at any ordinary zoom, because at their real relative sizes they would not be there at all. A black hole’s drawn horizon keeps its own illustrative policy described under Black holes: it is far larger than any real horizon, so that the thing a scenario is about is visible.
A single power law cannot produce both targets. Bringing 109 : 1 down to
8 : 1 needs an exponent of 0.44, and 9.7 raised to 0.44 is 2.7 — a
Jupiter under three times smaller than the Sun. The two ratios have to
be set independently, which is why the policy is a table of per-family
factors rather than a formula, and why the table is written out in full
and tested against its own targets in
tests/displayScale.test.js.
The canvas says so. A line beside the scale bar reads “Body sizes enlarged for visibility”, and it is drawn on the canvas rather than in the interface so that it appears in every screenshot and every recording. The full wording — that canvas diameters are illustrative, that physical size ratios must not be inferred from the drawing, and that the inspector and the investigation measurements carry the numerical radii — is in the canvas description that assistive technology reads, and in the Radius tooltip in the object inspector. The scale bar is a separate matter and remains an honest statement about distance in the current view; some scenarios are themselves scale models or teaching constructions, so no claim is made that every drawn distance is physical either.
Rings
About a quarter of procedurally generated gas giants are drawn with a ring system. That fraction is a choice about visual variety and not an asserted occurrence rate. Nobody knows what share of giant exoplanets carry prominent rings; the one candidate detection is disputed, and in our own outer system four giants out of four have rings of some kind while only one of them is prominent. A quarter puts a ringed giant in most generated systems without making rings the default.
Which giants, and what their rings look like, comes from each
body’s own visual seed, which is derived from its id. Presence,
position angle, inclination, inner and outer radii, band structure,
color and opacity are all fixed the moment the body exists and are
identical after a reset, a replay, a save and reload, a shared
configuration, a screenshot and an A/B run. Nothing about a ring is
drawn from Math.random(). A scenario has the last word:
Saturn is ringed in the Solar System, the other three giants there are
explicitly not, and any authored scenario may force rings on or off and
may set their extent, angle and opacity.
Rings are drawn as a projected disk rather than an ellipse behind the planet: the far half first, then the opaque planetary disc, then the near half, so the rings visibly pass behind and in front. Inner edges run between 1.25 and 1.5 displayed planetary radii and outer edges between 1.9 and 2.6, with several restrained bands, translucent gaps, an optional Cassini-like division and a subtle planet shadow. Those dimensions are illustrative and purely visual: they do not change the planet’s model or physical radius, its gravity, its collisions, its transit depth, its Roche calculation, its hit target or any measurement, and atmospheres, selection rings and labels stay attached to the planetary disc rather than expanding to enclose the rings. A giant too small on screen for the bands to be legible is drawn without rings rather than with visual noise.
Other educational models
Several teaching instruments are analytic models evaluated for display rather than simulated. Each is correct for what it describes and each leaves something out.
| Feature | What Gravitas does | Important limitation |
|---|---|---|
| Radial velocity | Projects the observed star's actual simulated velocity onto the shared line of sight and plots it against time, relative to the system's measured center of mass. The semi-amplitude reported is half the peak-to-peak range of what has been recorded, not a fitted Keplerian model. | Only one star is measured at a time; a spectrograph observes one object, and summing unrelated stars would not be a measurement. No instrumental noise, no stellar activity jitter, and no systemic velocity: a real spectrum also carries the whole system's motion through the Galaxy, a constant offset that shifts the curve without changing its shape. Scenarios that pin their star report no measurement at all rather than a misleading zero. |
| Astrometric wobble | Projects the star's offset from the system barycenter onto the plane of the sky and records the path it traces. The physical reflex orbit is reported in AU; the angle it subtends follows from the system distance, using the definition that one AU at one parsec is one arcsecond. | Distance is a stored property of a real system or an explicit assumption for an invented one, never inferred from simulation coordinates. Parallax, proper motion and the astrometric perturbations of additional bodies are not modeled, and no instrument's detection threshold is applied: a signature shown here is not a claim that any telescope could measure it. |
| Rotation curve | Plots one point per body from the simulation's own positions and velocities: distance from the mass-weighted center against speed about it, measured in that center's frame. Overlaid is √(GM(<r)/r) computed from the mass of the objects actually present, and a power law fitted by least squares to the outer part of the curve. Nothing is smoothed and no model is assumed. | The single heaviest body, when it lies near the center, is excluded from the plot: it is the source of the field rather than a tracer of it. The overlaid prediction treats the enclosed mass as spherically distributed, which is a good approximation for a bulge and a rougher one for a disc. The fit covers the outer three quarters of the radial range and the excluded region is shaded, so a reported slope is visibly the slope of the outer curve rather than of everything. |
| Dark-matter halo | An optional term in the force law: a smooth, static, pseudo-isothermal mass distribution centered on the origin, with circular speed vflat√(1 − (rc/r) arctan(r/rc)). It is applied as a velocity kick before whichever gravity solver is running, so it is present on both the direct-sum and Barnes–Hut paths. It is not an object: no position of its own, nothing drawn, nothing in the body counts. | Off by default. The profile is a fitted phenomenological model, the same family used on real rotation curves, not a prediction from any theory of what dark matter is; its two parameters are free and the user sets them. The halo does not respond to the bodies moving in it, does not form or evolve, and is fixed at the origin rather than following the system's center of mass. An NFW profile would match structure-formation simulations better and is not used, because it is cuspy at the center and would place a singularity inside scenarios students fly through. |
| MOND | An alternative to the halo, selectable in its place and never alongside it. Milgrom (1983) proposed that below a characteristic acceleration a0 = 1.2 × 10−10 m/s² the relation between gravity and motion departs from Newton's. Gravitas applies it algebraically to the summed Newtonian field of the visible matter, g = ν(gN/a0) gN, using the "simple" interpolating function μ(x) = x/(1 + x) of Famaey & Binney (2005), whose inverse is closed form. The two limits are g → gN where the field is strong and g → √(gNa0) where it is weak, which gives v4 = GMa0 far from a galaxy. |
Off by default, and offered only in the three galaxy scenarios,
which declare what one simulation unit represents in kiloparsecs
and solar masses. Elsewhere the control is disabled: there is no
defensible way to apply a galactic acceleration scale to a
planetary system, and doing it silently would be worse than
refusing. a0 is fixed and not adjustable,
because it is proposed as a constant of nature rather than a
property of one galaxy; the halo's two parameters are fitted per
galaxy, and the panel labels the difference. MOND fits galaxy rotation curves well, and Gravitas does not treat that as settling anything. It reduces the missing mass in galaxy clusters but leaves a residual factor of about two, so clusters still need unseen matter. The Bullet Cluster shows lensing mass displaced from the visible gas. The acoustic peak heights in the cosmic microwave background are fitted by cold dark matter and are not reproduced without adding a dark component anyway. It has no settled relativistic form, and several proposed completions were ruled out by the measured speed of gravitational waves. The interpolating function is chosen rather than derived. Neither MOND nor dark matter is established by anything in this simulation, and the lesson that compares them says so explicitly. Because the modification is applied to the total field rather than pair by pair, the force between two bodies is no longer derived from a potential in the usual way and momentum is not conserved for an isolated pair. The conservation check reports this as a caveat whenever MOND is running — see the conservation check. |
| Rotation-curve decomposition | A separate model, used only by the fitting instrument in "The Missing Mass" and not by the simulation. A model galaxy is built from a point-mass bulge, a thin exponential stellar disc using the Freeman (1970) solution, and the same pseudo-isothermal halo as above; their circular speeds add in quadrature, because accelerations add and each equals v²/r. The curve being fitted is synthetic, generated from NGC 3198's published structural parameters with a fixed scatter, so the exercise has an exact answer. | The disc is a real solution rather than an approximation: its shape is fixed by the geometry, which is the point, because it means only the disc's mass and scale length are adjustable and neither can turn a declining curve into a level one. The enclosed-mass relation M(<r) = v²r/G that the lesson uses is the spherical one, and a disc is not spherical; the geometry factor is of order one and does not affect the conclusion that the enclosed total keeps growing where the light has stopped. The fitted curve is not measured data and the panel says so. |
| Galaxies | A point mass with a disc drawn on it, used as a member of a cluster. It participates in gravity exactly as any other body does. | Nothing internal is modeled: a galaxy here has no stars, no rotation of its own and no structure beyond its picture, and it cannot merge, accrete or evolve. The scenarios containing them are scale models, stated as such on their cards, because Gravitas's units are calibrated so that G = 1 works for planetary systems. The quantities those scenarios are used to measure — the exponent of a power law and the ratio of two masses — are dimensionless, which is what makes the scaling harmless. |
| Transit light curve | Computes the overlap of an opaque planetary disk with a limb-darkened stellar disk by numerical integration over the stellar surface, sampled as the simulation runs. | The planet is perfectly opaque and perfectly circular; the star has no spots, flares or granulation, and no instrumental noise is added. |
| Limb darkening | A quadratic limb-darkening law with fixed coefficients, the standard parameterization used on real light curves. | Real coefficients depend on the star and on the wavelength observed. Gravitas uses one set for all stars. |
| Secondary eclipse | The planet is occulted by the star, producing a much shallower dip half an orbit from the transit. | Depth is geometric. Thermal emission and reflected light from the planet are not modeled, so the depth should not be read as a measurement of the planet's brightness. |
| Transmission spectrum | An instrument panel showing how transit depth varies with wavelength for an atmosphere. | Illustrative. It is a teaching model of the effect, not a radiative-transfer calculation for a specific atmosphere. |
| Companion-star dilution | Applies the correct flux-ratio arithmetic: an unresolved companion fills in the dip by a factor 1/(1+f), and the recovered radius is too small by √(1+f). | Both stars are treated as point sources within one aperture. No point-spread function, seeing or detector model. |
| Habitable zone | Evaluates a published prescription (Kopparapu et al. 2013, with the 2014 erratum coefficients) from the star's luminosity and effective temperature, and draws the resulting range of orbital distances. Measured stellar luminosities are used wherever a scenario carries one. | A calculated range of distances, not a region of space, and a statement about the star rather than about any planet. It says nothing about whether a planet has an atmosphere, has water, or is rocky. The polynomial fit is calibrated for stars between 2,600 K and 7,200 K; outside that range Gravitas evaluates it at the nearest calibrated temperature and says so rather than extrapolating silently. Where that applies, the ring drawn in the simulation carries the caveat in its own label: TRAPPIST-1 at 2,566 K reads “star cooler than the model covers”. |
| Object properties in the inspector | Orbital elements, energies and periods computed analytically from the live state relative to the dominant nearby mass. | A two-body calculation. In a strongly interacting multi-body configuration the reported elements are instantaneous osculating values, not a stable description of the orbit. |
| Stellar properties | Radii, luminosities, temperatures and colors are assigned from mass using standard main-sequence relations, or set explicitly in scenarios drawn from real systems. | No stellar evolution. A star does not age, change radius, leave the main sequence or lose mass in a wind. |
| Compact-object radii | Neutron stars and white dwarfs are drawn at fixed sizes and their masses behave as ordinary point masses. | No equation of state, no mass-radius relation, no Chandrasekhar or Tolman-Oppenheimer-Volkoff limit enforced by the dynamics. |
| Timeline and replay | Records the state of every object ten times a second and replays it when you scrub backward. | Replay is recorded history, not reverse integration. Mergers destroy information, so the simulation cannot be run backward; it can only be rewound through what it saved. |
What should I trust this to show?
| Feature | Model level | Good for | Not intended for |
|---|---|---|---|
| Orbit shape and pacing | Simulated | Kepler's laws, orbital energy, encounters, escape, binary motion | Ephemeris-grade prediction of a real body's position |
| Orbital energy and boundedness | Simulated | Bound versus unbound, the sign of the total energy, escape speed | Precision mission design |
| Many-body encounters | Simulated | Slingshots, ejections, the qualitative chaos of three bodies | Long-term stability studies; close passages are softened and the system is confined to a plane |
| Transit light curves | Analytic | Depth to radius, limb darkening, timing a period, dilution by a companion | Fitting a real light curve with a noise model |
| Black-hole properties | Analytic | Schwarzschild radius, the scaling of density, temperature and lifetime with mass | Rotating black holes, horizon dynamics, anything in the strong field |
| Habitable zone | Analytic | Where a zone sits for a given star, how it moves with luminosity, where real planets fall relative to it | Deciding whether a planet is habitable, which the zone does not address |
| Compact-object inspiral | Approximated | The inspiral concept, energy loss, a shrinking orbit, merger as an event | Waveform modeling, chirp rates, gravitational-wave data analysis |
| Collisions | Approximated | Mass and momentum bookkeeping, that kinetic energy is lost | Impact physics, debris fields, shock heating |
| Tidal disruption | Approximated | That a body close enough to a black hole is torn apart, and that the closer it passes the faster it comes apart | Where the mass goes. The body loses mass smoothly inside a tidal radius set by the hole's own size, and the fragments it sheds carry a fixed mass unrelated to the amount stripped, so this is a mass sink rather than bookkeeping. There is no hydrodynamics, no stream, and no fallback rate. |
| Jets, disks and ripples | Illustrative | Recognizing and discussing the phenomena | Anything quantitative |
| Spacetime grid | Illustrative | Talking about mass shaping the geometry objects move through | Reading curvature values off the surface |
Validation: what has been checked
Everything above describes what Gravitas calculates. This section is about a different question, and it is the one a physicist assigning this to a class should ask: not what the model claims, but what has been measured against something independent.
Every result described here is published, with its measured error and its tolerance, on the validation page, which will also run the whole suite in your browser if you would rather not take the table's word for it.
The repository carries an automated validation suite. It runs 243 deterministic checks and prints a table of measured value, expected value, error and tolerance:
npm run validate:physics
There are five kinds of check and the table labels each one, because they do not mean the same thing.
What the five labels mean
- Analytic
- Closed-form arithmetic against the equation the code claims to implement. Held at or near machine precision, because there is nothing for a tolerance to absorb.
- Integrated
- A quantity measured by actually running the N-body engine, through the same step function the application calls sixty times a second. Tolerances come from the discretization error of the integrator at the stated timestep, and the suite measures the integrator's convergence order rather than assuming it.
- Published
- A stored parameter or derived observable compared against a literature value, with the source named. The tolerance is set by the precision the reference is quoted to.
- Approximation
-
An educational model that is not the full physics, validated against
the equation it says it uses and never against reality. Labeled
APPROXso the two cannot be confused. - Empirical
- A prediction compared against the sky rather than against the code. There is one: MOND predicts a baryonic Tully-Fisher coefficient, and it is checked against the observed relation. Its tolerance is wide because the observed value itself is quoted across a wide range, and a tight one would be a claim about nature nobody can make.
Every tolerance carries a written justification, which the suite prints on request, because a tolerance with no stated reason is a number chosen to make a test pass. A few representative results: Kepler's third law recovered from four integrated orbits gives a slope of 1.49987 against 1.5; linear and angular momentum are conserved to floating-point round-off; the total energy error is bounded rather than accumulating, and is the same after sixty orbits as after six; the transit depth of HD 209458 b computed from its stored radii is 1.5075% against a measured 1.5%; the habitable zone of TRAPPIST-1 comes out at 0.0254 to 0.0499 AU, putting planets e, f and g inside it, which is what the literature reports.
The suite also records what is not conserved and why. Static black holes, one-way gravity and the dark-matter halo all conserve less than the full model does, deliberately, and the audit excludes them explicitly rather than passing them quietly.
Not validated: anything drawn rather than computed; the Barnes–Hut tree solver, which is approximate by construction and calibrated separately; debris and particle bookkeeping; long-term N-body statistics such as cluster relaxation and ejection rates; and all of numerical relativity.
The full write-up, with every number, every tolerance and its reasoning,
every literature source, and the two physics bugs the validation pass
found and fixed, is in
PHYSICS_VALIDATION.md in the repository:
PHYSICS_VALIDATION.md.
Which model each investigation uses
Each guided investigation relies on a different part of the model. This
table is generated from the same modelNotes field that the
instructor guide prints, so it covers every one of the
22
lessons and cannot fall behind them. It listed six of the twelve when it
was maintained by hand.
| Investigation | Model used |
|---|---|
| Kepler's Laws | This investigation uses the Newtonian N-body model directly, and it is the right tool for it: the concepts being measured are exactly the ones Newtonian gravity describes. The simulation is two-dimensional, so every orbit here is coplanar and inclination never enters. Perturbations between planets are present when mutual gravity is on but are far too small over a lesson to affect any measurement. Precession from general relativity is not modeled and is not needed at this level. |
| Why Mars Goes Backwards | The orbits here are circles at the true semi-major axes, 1.00 and 1.523 AU, with the true masses and therefore the true periods. Real eccentricities are 0.017 for Earth and 0.093 for Mars, and both are left out because neither changes the phenomenon: what draws the loop is the difference in angular speed, not the shape of either orbit. Real Mars retrograde episodes vary in length and in the shape of the loop from one opposition to the next, and that variation does come from the eccentricities and from the 1.85 degree inclination of Mars's orbit, which this planar model also omits. Students comparing a screenshot with a photograph of a real Mars loop will find the real one is a flattened S or an open zigzag as often as a closed loop, because Mars is usually a little above or below the ecliptic when it happens. The synodic period, the location of the reversal at opposition, and the coincidence of reversal with closest approach are all reproduced exactly. |
| Finding Planets by Their Shadows | Orbits are Newtonian and two-dimensional, which for a transit lesson is a feature rather than a limitation: every orbit is edge-on and every planet transits, so the light curve is always available. Inclination is therefore handled in a dedicated geometry panel rather than by the simulation. The light curve itself is an analytic model, not a radiative-transfer calculation: it uses a quadratic limb-darkening law with fixed coefficients, and treats the planet as an opaque disk. The transmission spectrum is illustrative. See https://gravitas-sim.online/model/ for the full description. |
| Bound, Unbound and Escape | Newtonian energy throughout, in two dimensions. The launch panel integrates its own trajectory with an adaptive step so that a highly eccentric path does not drift, and the energy it reports is conserved to a few thousandths of a percent of the well depth. The ʻOumuamua scenario uses the object’s measured orbit; the simulation reproduces its hyperbolic path but does not model the non-gravitational acceleration seen in the real object. |
| Weighing the Stars | Two different things are on screen at once and the lesson depends on students not confusing them. The pair on the main canvas is integrated. They are ordinary bodies moved by the same Newtonian N-body engine that runs the rest of the sandbox, nothing prescribes their positions, and that is what lets the lesson call its result a measurement: a student times an orbit the engine produced and puts it into Newton’s form of Kepler’s third law, which tests the law rather than restating a number the lesson wrote down for itself. They are set up on circular orbits carrying zero net momentum, so the balance point stays where it is drawn instead of sliding off the view, and they are drawn at a fixed size rather than scaled by mass - discs that grew with mass would answer "which is heavier" from the picture and skip the reasoning the see-saw screens exist for. The panel diagrams are analytic: circular two-body orbits evaluated in closed form, with the stopwatch reading against the panel’s own clock. The Sirius panel solves Kepler’s equation so the plotted epochs are correctly spaced in time, and its dots are real astrometry rather than anything this application computed - screen 31 says so to the student. Two restrictions bite on the result. The staged orbits are circular and seen face-on. A real binary is eccentric, so the "a" in the formula is the semi-major axis and not whatever separation you happen to catch; and a real orbit is tilted, so a measured separation is a projection of the true one. Both travel with the notebook entry as limitations, and screen 32 is the natural place to raise them if nobody has. |
| Black Holes by the Numbers | Nothing in this investigation is dynamically simulated relativity. The black hole in the scenario participates in the ordinary Newtonian N-body simulation like any other mass; the horizon radius, average density, Hawking temperature and evaporation lifetime are analytic Schwarzschild expressions evaluated for display. Every result assumes a non-rotating, uncharged black hole, which the lesson states. Real astrophysical black holes rotate, which changes the horizon geometry but none of the trends taught here. See https://gravitas-sim.online/model/ for the full statement. What is on the canvas, and what is not. The lesson stands up its own black hole with four bodies in orbit, and those orbits are integrated with the same Newtonian force law as everything else on the canvas, so the engine is entitled to move them and a student is entitled to measure what it does. What they demonstrate is the Newtonian statement the lesson makes: outside a spherical body the field depends on the mass and nothing else. Orbit radii are set in multiples of the hole's drawn radius, and never inside three of them, which is a bound on the picture rather than on the physics - it keeps the innermost orbiter reading as an orbit instead of as a rim on the dark disc. The drawn radius is not the horizon and these are not Schwarzschild radii: screen 4 tells the student in as many words that the disc is drawn at whatever size lets four orbits fit in a window and carries no information, and the innermost stable circular orbit - three Schwarzschild radii - is not a length this canvas has. Screen 13 replaces the arrangement with the controlled comparison: a star and a hole of eight solar masses each, with a body on the same orbit around each. Everything about Hawking radiation is a closed-form calculation in a panel, and screen 19 says so to the student. The Newtonian sandbox knows nothing about quantum fields, temperature or evaporation; nothing on the canvas is evaporating and nothing there could tell you if it were. The same goes for the interior: the dark disc is a boundary drawn at a display scale, and the physical size is only ever quoted in kilometers beside it. |
| Finding Planets by Their Tug | The simulation integrates gravity in a plane. The observer geometry is a genuine three-dimensional projection over that planar model: a line-of-sight direction is built analytically from a position angle and an inclination, and positions and velocities are projected onto it. This is what allows inclination to affect the transit, the radial-velocity amplitude and the astrometric shape consistently without a three-dimensional N-body rewrite. The dynamics remain planar; only the viewing geometry is three-dimensional. The Exoplanet Characterization Lab initializes HD 209458 and its planet in the center-of-mass frame from published parameters. Measured against the analytic semi-amplitude, the simulated star's wobble reproduces K to within about 0.5 per cent at the scenario's own speed. The radial-velocity panel plots velocity relative to the measured system barycenter, which removes the small residual drift that integration error leaves behind. The semi-amplitude, reflex orbit, astrometric signature and bulk density all come from js/exoplanetObservables.js, and the insolation and habitable-zone boundaries from js/habitability.js, the same module The Goldilocks Question uses. The habitable-zone prescription is Kopparapu et al. (2013) with the 2014 erratum, valid for stellar effective temperatures between 2600 and 7200 K. System parameters for HD 209458 are stored in js/data/exoplanetSystems.js and shared by the scenario, the widgets and the tests, so a change in one place cannot leave the lesson disagreeing with the instrument. The star on the canvas is in genuine barycentric motion - the transit scenarios pin theirs, and a radial-velocity panel pointed at a pinned star would teach that planets do not move their stars. Every live reading in this lesson comes from js/radialVelocity.js measuring that motion, and the readout refuses to report a velocity for a pinned star rather than returning an artifact that looks like a measurement. The catalog steps later in the lesson are observations of real systems and are labeled as such. The inclination and mass panels are analytic aids: they compute from published formulae and are not readings taken from the scene. |
| The Goldilocks Question | The habitable-zone boundaries come from the Kopparapu et al. (2013) prescription with the 2014 erratum coefficients, evaluated from each star’s luminosity and effective temperature. The same module draws the ring in the live simulation and the bands in the lesson panels, so a student who reads 0.98 AU off a panel and then looks at the ring on screen is looking at one calculation drawn twice. Measured stellar luminosities are used wherever a scenario carries one, which matters most for TRAPPIST-1: a mass-luminosity relation would put its zone out by more than a factor of four. Below 2,600 K the polynomial is evaluated at its own lower limit rather than extrapolated, and the ring says so on screen. The orbital instruments solve Kepler’s equation analytically rather than integrating, so the timing of an eccentric year and the fraction spent inside the zone are exact. Nothing in this investigation models a climate: the zone is a statement about incident starlight against limits from a published model, and the lesson is careful to say so. Both habitable-zone scenarios put their planets on circles, deliberately: circles keep the insolation measurement clean, and the real eccentricities of Earth and Mars would change nothing about the argument. That leaves the screens about a planet whose distance changes round its year with nothing live to point at, so screen 27 stands up one of its own - Wanderer, on a genuine ellipse of eccentricity 0.45, moved by the same gravity solver as everything else. The screen says so, and the scene is named again on screen 29 when the subject changes to TRAPPIST-1. Where a planet sits relative to the zone is computed by habitableZoneBounds() and habitableZoneStatus(), the same two functions the ring on the canvas is drawn with, so the lesson and the picture cannot disagree about where the edges are. Being in the zone is a statement about incoming starlight and nothing else: it is not evidence of water, of an atmosphere, or of anything living, and the lesson is careful never to say otherwise. |
| The Missing Mass | The halo is a smooth background field added to the force law, not a body. It uses a pseudo-isothermal profile, whose circular speed is v_flat times the square root of 1 - (r_c/r) arctan(r/r_c). This is the profile used to fit real rotation curves, chosen over the NFW profile that better matches structure-formation simulations because NFW is cuspy at the center, which would place a singularity in the middle of a scenario students are asked to fly a star through. The halo is applied as a velocity kick before the existing gravity solver on each step, which keeps it correct for both the direct sum and the Barnes-Hut path; a test confirms that a circular orbit in the halo stays circular to better than one per cent over several orbits. The three scenarios are scale models and their cards say so. A real galactic bulge is around ten billion solar masses and a real cluster is megaparsecs across, while Gravitas's units are calibrated so that G = 1 works for planetary systems. Rebuilding the unit system around galactic scales would change nothing a student measures here, because every quantity this lesson turns on is dimensionless: the exponent of a power law, and the ratio of two masses. Galaxies are a genuine object type, deliberately the simplest in the codebase: a mass, a position and a drawing. They do not merge, accrete or evolve, because none of those are what a student is being asked to look at, and a cluster that lost members would lose the dispersion being measured. The rotation curve excludes the central mass from the plot, identified as the heaviest body lying near the middle rather than by a radius cutoff. A cutoff wide enough to catch a galactic bulge also discarded Mercury, which is a tracer and belongs on the plot. Everything else shown is a live measurement: nothing is fitted or smoothed except the power law, whose fitting window is drawn on the plot. |
| Tides | The tidal and Roche calculations in this lesson are computed in js/tidalPhysics.js from the masses and separations shown, using the standard Newtonian expressions, and they are unit-tested against published values: the lunar tide at 1.10 × 10⁻⁶ m/s², the Earth-Moon rigid and fluid Roche limits at about 9,500 and 18,400 km, and the swallow-whole black hole mass at 1.6 × 10⁸ solar masses. What the simulation itself does is Newtonian N-body integration of point masses. It does not deform bodies, does not model internal friction, and does not evolve rotation under tidal torques, so tidal locking is presented at step 18 as a conceptual account and explicitly labeled as one. In the live disruption scenario at step 27 the engine sheds debris particles from a body that passes inside a threshold radius and then integrates those particles normally; that is a rule producing a plausible geometry, not hydrodynamics. There is no fluid, no pressure, no shock heating and no radiative transfer anywhere in Gravitas, and the deformation drawn in the Roche panel is an illustration of the outcome rather than a calculation of it. Step 28 states the same caveat for the compact-object case, where general relativity would also matter near the horizon and is not used. Every one of these limitations is named on the screen where it applies rather than only here. |
| The Butterfly Effect in Space | The scenario is Lagrange’s equilateral solution of the three-body problem with three equal masses of 6 solar masses at a circumradius of 0.5 AU, rotating at the exact rate omega = sqrt(G*3m/L^3) = 0.2354 rad per simulated second. It is linearly unstable by Gascheau’s criterion, and the theoretical e-folding time of the unstable mode is sqrt(2)/omega = 6.0 simulated seconds. The divergence measure is the configuration-space separation between the two runs, sqrt(sum over bodies of |r_A - r_B|^2), with bodies matched by their stable object identities and samples aligned by simulated time; a normalized phase-space version including velocities gives the same growth rate to better than one per cent. The fit thresholds are in js/chaos/divergence.js and are deliberately strict, because a confidently wrong Lyapunov number is worse than none. Two other classic configurations were tested against this engine and rejected: the Pythagorean (Burrau) problem, whose close approaches trigger a merger and remove a body, and a near-figure-eight triple, whose e-folding time moved by orders of magnitude between integrators. Both rejections are recorded in the comment above the scenario in js/ui.js. |
| When Orbits Lock | Three of the four scenarios are built from published elements in js/resonance/systems.js, which is also what the validation suite reads, so a scenario and its check cannot quote different numbers. Pluto and Neptune and Jupiter Trojans are at true scale: 1 length unit is 0.01 AU and 1000 mass units is a solar mass, as everywhere else in Gravitas. The Galilean scenario is a scale model with distances multiplied by 100 and, by Newtonian scale invariance with masses unchanged, durations multiplied by 1000; the instruments convert back and the scenario summary says so. Two documented departures from reality: Gravitas is two-dimensional, so Pluto’s 17-degree inclination is projected away, which brings the modeled minimum Pluto–Neptune separation down from the observed 17.2 AU to 16.6; and Jupiter’s orbit is circularized in the Trojan scenario, because the triangular points are exact equilibria only for a circular secondary. The Galilean moons are placed from their published periods rather than their published distances, because the resonance is a statement about mean motions and the two published quantities disagree at the 0.1% level in a point-mass model - the difference is Jupiter’s oblateness, which Gravitas does not model. Pluto is placed at the exact 3:2 rather than its observed semi-major axis for the same kind of reason: the 0.2% difference is taken up in reality by the precession of Pluto’s perihelion. All four scenarios use Velocity Verlet with a capped substep, because a resonant angle is a secular quantity accumulated over hundreds of orbits and symplectic Euler at the same step reports a Laplace libration amplitude a third of the converged value. Thirty-two checks in the "Orbital resonance" group of tools/physics-checks.mjs hold every number quoted above to a published value or to a refinement test. |
| Can You Detect This Planet? | The star and planet are integrated as a Newtonian two-body system in a plane, and the radial velocity the live panel reports is the projection of the star's actual simulated velocity onto the line of sight, relative to the system barycenter. The survey-schedule instrument at steps 3 to 11 is analytic rather than integrated: it evaluates a circular single-planet velocity curve from js/exoplanetObservables.js, which is exact for the near-circular orbit of HD 209458 b and would not be for an eccentric one. Real radial-velocity curves of eccentric planets are not sinusoids, and the phase-coverage argument the lesson makes is unchanged by that but the shape of the curve is not. The noise is Gaussian, identically distributed, and independent between measurements. Real radial-velocity errors are none of the three: they include correlated systematics from the instrument and the atmosphere, and stellar jitter from spots and granulation that is correlated on the star's rotation period and is often the dominant term for an active star. The lesson names underestimated error bars at step 11 as the leading alternative explanation for a marginal excess, which is the honest version of this simplification, but a class that goes on to real data should be told that jitter is why a 1 m/s spectrograph does not deliver 1 m/s planet sensitivity. The schedule itself is idealized in the other direction: measurements arrive exactly on time, with no weather, no target visibility window and no lost nights. That makes the two schedules cleanly comparable and understates how much worse a real cadence is. Nothing in the model prevents a measurement from being scheduled while the target would be below the horizon, because the simulation has no horizon. One numerical caveat is surfaced in the interface rather than hidden here: measurements are read by interpolating the simulated velocity between render frames, and at high simulation speeds consecutive frames can be an appreciable fraction of an orbit apart. The panel detects this and says so, because a straight line drawn across a quarter of a cycle flattens the extremes. At the default speed the frames are far finer than the cadence and the interpolation is exact to well under a meter per second. The folded panel is folded on the true period, which a real survey does not know. It is an explanatory diagram and not part of the detection procedure, and the lesson says so on the screen where it first appears; finding the period is itself most of the work in practice. The star on the canvas is in genuine barycentric motion, and the live readout gives its phase and the velocity a spectrograph would report at that instant. That is the link between the planner, which works in days since the run began, and the orbit, which is a place the star is in - without it a student can read a coverage figure without ever seeing that a phase is somewhere the star has been. |
| Design the Schedule | The star and planet are integrated by the simulation, not modeled analytically, so the velocities are whatever the dynamics produce. The observing layer keeps only the measurements a stated schedule would have produced: each epoch is interpolated between the render frames either side of it and carries a Gaussian uncertainty drawn from a generator seeded by name and keyed by the epoch’s index in the ungapped plan, so removing an epoch does not redraw the others. Both arms of a comparison observe the same frames, which is why the noise is a shared draw rather than two independent ones. The period search is the same weighted circular fit the analysis workspace uses, run over one range for both arms; the reported window function is computed from the times alone and uses no velocities at all. |
| Planets in Binary Stars | The three bodies are integrated as a Newtonian point-mass system in a plane, with Velocity Verlet rather than the catalog's default symplectic Euler. That choice is part of the lesson's subject matter: symplectic Euler's O(dt) phase error puts a spurious eccentricity on the planet within a few orbits, which a student would then read as the binary perturbing it. Verlet's error is O(dt²) and bounded, so a quiet run holds energy to about a part in a million and the drift readout rises only when something real is unresolved. The two Holman & Wiegert fits are transcribed from the paper - equation (1) with Table 3 for the circumstellar case, equation (3) with Table 7 for the circumbinary one - and are checked in the test suite against values published outside the fit: the familiar 0.27 and 2.4 separations for an equal-mass circular binary, Alpha Centauri A's quoted stable zone of close to 3 AU, and Kepler-16b sitting just outside its critical radius of about 0.65 AU. A transcription error in a coefficient is invisible on a plot, so it is checked against systems rather than against itself. The planet is one Earth mass, three parts in a million of the lighter star. Not zero, because a massless body drops out of the barycenter and out of the energy bookkeeping the diagnostics depend on, and small enough that the test-particle assumption behind the fit is not violated by the thing being measured. A Jupiter-mass planet in this lab would be outside what the fit describes. Everything is coplanar, and both the simulation and the fit are two-dimensional. This is the model's largest simplification and step 13 makes it explicit. A planet inclined out of the binary's plane can exchange inclination for eccentricity through the Kozai-Lidov mechanism, which destabilizes orbits that are safe in the plane; no part of this lesson can show that. The stars are drawn ten times their main-sequence radii, because at a 10 AU separation a true solar radius is about a third of a pixel. js/physics.js collides on the drawn radius, so the exaggeration sets the collision threshold at roughly 0.06 AU. This is stated in the lesson's closing screen and in the panel's own wording, and it affects the split between recorded collisions and recorded ejections among the disrupted configurations. It does not affect the split between disrupted and survived: every surviving configuration in this lesson keeps the planet at least 400 simulation units from the perturbing star, about seventy times the threshold. One further limit worth naming to a class that asks. The runs here are 20 and 40 binary periods. That is short enough that the lesson's own results and the published fit disagree in two places, which the lesson uses rather than hides - but it also means every "survived" in this lesson is a much weaker claim than the ones in the paper, and no claim at all about the real systems the paper's readers care about. |
| Where Does a Gravity Assist Get Its Speed? | The encounter is a Newtonian three-body problem in a plane - two bodies in the isolated scenario - integrated with Velocity Verlet rather than the catalog's default symplectic Euler. The lesson asks students to believe that a speed is unchanged to a part in ten million, and first-order phase error is far too coarse to support that claim. The spacecraft is placed on its encounter hyperbola from the orbital elements rather than pointed at the planet from a distance, so the impact parameter and the speed at infinity are exact inputs. A probe merely aimed at the planet arrives with a slightly different impact parameter and a noticeably different approach speed, and the comparison against the two-body prediction would then be measuring the setup rather than the physics. Speeds relative to the planet are quoted at infinity, computed from the local speed and distance through vis-viva. At the gate the spacecraft is still traveling about 0.6 per cent faster than its asymptotic speed, which is ten times the accuracy the rest of the lesson works to; the alternative was to start the encounter absurdly far out and integrate empty space. Both legs are read at the same distance, so whatever the correction is worth, it is worth the same on each side. The spacecraft is one Earth mass, about 10^22 times a real probe. This is the one deliberately unrealistic number in the lesson and it is called out at the closing screen. It is chosen so the planet's recoil is 4 mm/s - ten orders of magnitude above floating point noise, and therefore a number a student can read - rather than 10^-25 m/s, which is true, unreadable, and would reduce the momentum ledger to an assertion. At a mass ratio of 10^-6 the test-particle scattering formula still holds to far better than anything here is measured to. Everything is coplanar. Real flybys are aimed in three dimensions and the out-of-plane component is most of the design problem; nothing in this lesson can show that. In the heliocentric scenario the planet's own velocity change is dominated by its orbital turning rather than by the spacecraft, which is why the momentum ledger is demonstrated in the isolated scenario and not there. The panel does not report a recoil with a star present, because the number would be almost entirely the planet going round a corner. The retained comparison and the sweep are hidden there for the same class of reason: their claim is that their arms differ in one input, and with a star present the planet's frame is accelerating too. Both experiments run on the A/B bench, which rebuilds the world per arm through the scenario's own builder rather than nudging the spacecraft mid-flight, photographs the reader's world before the first build and restores it after the last. Every arm is measured by the same recorder as a hand-flown pass, at the same gate on both legs, so a number in a table and the same number in the panel mean the same thing. What the bench's own metrics would give - a speed averaged over a run - is deliberately not used: it is not a before and an after, and it would happily report a flyby that never completed. An arm whose spacecraft never came back out past the gate is reported as an incomplete encounter with no speeds at all, rather than as a flyby with small ones. The sweep's five values are bounded below by the planet, not by taste. Periapsis falls with the impact parameter, and js/physics.js merges bodies whose centers come within the sum of their drawn radii, 2.4 units here. At b = 20 the spacecraft passes 7.6 units out; at b = 10 it would pass 2.1 units out and be swallowed. The impact parameter that would maximize the gain is about 10.3, whose periapsis is 2.26 units - inside the collision radius. So the turnover in gain against turn is real, is where the geometry says it is, and cannot be reached in this laboratory: the sweep shows the approach to it and the lesson says so rather than implying the curve rises for ever. |
| Getting There From Here | Two-body motion about a single dominant mass, integrated with Velocity Verlet rather than the catalog’s default symplectic Euler, because the lesson checks a transfer time against pi*sqrt(a^3/mu) and first-order period error is too coarse for that. The scenario is built circular by construction: each body is placed at sqrt(mu/r) with the orbiting body’s own mass included in mu, the same mu the readout uses, so the orbits open at eccentricities of about 1e-4 rather than at some value the setup and the inspector disagree about. The spacecraft is a billionth of the star’s mass - not zero, because a massless body drops out of the barycenter and out of the conservation diagnostics, and small enough that the two-body formulae the lesson uses are right well past the precision anybody reads. The maneuver planner’s preview is the osculating two-body orbit computed by the same orbitalElements() the inspector uses. In this scenario that is exact to the precision of the integration; in a system with a third mass of any consequence it would not be, and both the panel and every exported burn record say so. e2e/maneuver.spec.js flies the whole transfer through the engine and checks both burns and the coast against the closed form: the coast comes out at 162.62 simulation time units against 162.63 predicted. |
| Where Can It Get To? | Two massive bodies on a circular orbit, integrated with Velocity Verlet rather than the catalog’s default symplectic Euler, because the lesson asks students to watch a conserved quantity hold and first-order drift would make that a claim about the integrator. Measured eccentricity is 2.4e-9 and the tracer is a billionth of the pair. The world is built to the convention the analysis uses: barycenter at the origin, heavier body at -mu, lighter at 1-mu, so the overlay and the simulation agree about where everything is. The tracer is placed and launched in the rotating frame and converted, which is what makes its Jacobi constant a chosen quantity rather than an accident of the setup. The effective potential is sampled on a 220-square grid in the rotating frame’s own coordinates. That grid depends on the mass ratio and nothing else, so it survives a moving camera and a moving tracer and is computed once; the per-frame cost is one comparison per cell. e2e/cr3bp.spec.js bisects the tracer’s speed for the value at which the L1 neck opens and recovers the closed form’s C1 to six decimal places. |
| What Is a Gravitational Wave? | Everything quantitative here comes from the same leading-order inspiral model the advanced lesson uses: two point masses on a slowly shrinking circular orbit, radiating at the quadrupole order. It is real arithmetic in real units, it is valid over a stated range, and it is terminated at the innermost stable circular orbit rather than extrapolated - which screen 19 makes a teaching point of rather than hiding. What is illustration, stated plainly because students will ask. The two discs on the canvas are fixed-size markers, not sized bodies: their separation is to scale in Schwarzschild radii of the total mass and their diameters are not to scale at all, because a horizon and a neutron-star surface are not the same kind of quantity. The rings leaving the pair mark wave crests and travel far slower than light so that there is something to see. The marker ring's deformation is exaggerated by an enormous factor, which screen 12 both admits and quantifies. What is measurement: the GW150914 strain on screen 22, published by the collaboration, band-passed and whitened before display. Nothing else in the lesson is data. The model says nothing about composition and nothing about mergers. Screen 20 says so where a student is most likely to over-read the neutron-star comparison, and the distance treatment on screen 21 is a simple inverse scaling with no cosmological redshift in it. |
| Listening to Spacetime | The lab computes a leading-order quadrupole inspiral of two point masses on circular orbits - Peters (1964) for the radiation reaction, Maggiore chapter 4 for the closed forms - with no spin, no eccentricity, no tides and no higher post-Newtonian terms. Masses are detector-frame throughout and no cosmology is assumed anywhere. It is terminated at the Schwarzschild innermost stable circular orbit of the total mass, 4397 Hz divided by the total mass in solar masses, and is never extrapolated past it. The interface reports the orbital velocity parameter with a three-band verdict, because the terms the model drops enter at the square of that number and there is no frequency at which the approximation simply stops being valid. The detector response places the source directly overhead with polarization angle zero, so the plotted strain is the plus polarization alone and the distance-inclination degeneracy appears in its simplest form. Synthetic noise is colored to a published analytic fit to the Advanced LIGO zero-detuning high-power design curve and seeded, so it is reproducible and does not change under a parameter sweep. The GW150914 traces are the figure data published with Abbott et al. (2016), Phys. Rev. Lett. 116, 061102, doi:10.1103/PhysRevLett.116.061102, released by the Gravitational Wave Open Science Center under CC BY 4.0. They were decimated from 16384 Hz and quantized to 16 bits; nothing was shifted, inverted, filtered or aligned. The Hanford-Livingston lag and sign are measured by the build and recorded, not applied. None of this is the ordinary sandbox. Its inspirals run on a damping constant and its sounds are quantized onto a musical scale, and the lesson says so on screen 2. The full specification, including what is deliberately absent, is at https://gravitas-sim.online/model/#gravitational-waves. |
| A Universe of Stars | Seven MIST v1.2 evolutionary tracks at solar composition with no rotation, computed with MESA and published by the MIST project; cite Dotter (2016) and Choi et al. (2016). Gravitas did not compute them and could not. What Gravitas did was reduce them from about 7,700 rows of 77 columns to about 2,300 rows of four, keeping the ten primary equivalent evolutionary points exactly and bounding the thinning at 0.004 dex in luminosity. Where the tracks stop matters for this lesson. 0.2 and 0.5 solar masses stop at the end of core hydrogen burning because MESA stopped them there; 1, 2 and 5 run to a cooling white dwarf; 10 and 20 stop at carbon ignition, before core collapse, as red supergiants of 609 and 1,070 solar radii. The supergiant on screen 19 is therefore the last state the model has, not a final state of the star, and the readout says so. Rotation, binarity, magnetic fields, mass transfer and any composition but solar are absent. So is core collapse and everything after it. Radii are never tabulated: they are computed from the temperature and the luminosity by the Stefan-Boltzmann relation, which is exact and which the same code path supplies to the transit model and the habitable-zone ring, so those three cannot disagree about how big a star is. The synthetic population is a Kroupa (2001) broken power law between 0.2 and 20 solar masses with a constant star-formation rate over ten billion years, seeded and reproducible. It is not a survey and no star in it is real. |
| Lives of Stars | Eight MIST v1.2 evolutionary tracks at solar composition with no rotation, computed with MESA and published by the MIST project; cite Dotter (2016) and Choi et al. (2016). Gravitas reduced them and did not compute them. Where they stop is the whole of what the endpoint module exists for. 0.2 and 0.5 solar masses stop at the end of core hydrogen burning, at 1.1 trillion and 96 billion years - both far beyond the age of the Universe, so neither is checkable in principle. 1, 2 and 5 run through to a cooling white dwarf, and those remnant masses are the tracks' own last samples. 10 and 20 stop at carbon ignition and 40 stops during helium ignition, so every statement in this lesson about neutron stars and black holes is a published result quoted for the nearest modeled progenitor: Sukhbold, Ertl, Woosley, Brown & Lattimer (2016), ApJ 821, 38, with Ertl et al. (2016) for the explodability criterion. The readout names the source on every quoted endpoint and flags it as not from the track. What is absent: rotation, binarity, magnetic fields, mass transfer, any composition but solar, core collapse itself, supernova hydrodynamics, nebular physics, and white-dwarf cooling beyond the first few million years. The explosion drawn on screen 29 is an illustration of an event and not a calculation of one, and it is kept off the H-R diagram because a supernova's brightness is a transient rather than a photospheric luminosity. |
Checking any of this
Gravitas is open source under the MIT license. Every statement on this
page describes code you can read: the gravitational solver and collision
handling are in
js/physics.js, black-hole quantities in
js/blackHolePhysics.js, the light curve in
js/lightCurve.js, habitable zones in
js/habitability.js, and the spacetime view in
js/view3d.js. If you find a claim here that the code does
not support, that is a bug in this page and worth reporting.
Simulation data can also be exported as CSV from the simulation itself, with a companion notebook for analyzing it, if you would rather check the model's behavior against your own calculation than read the source.
And if you would rather not do either, the validation suite has already
done a good deal of it:
npm run validate:physics prints the table described under
Validation, and
npm run validate:scenarios extends the conservation audit
to
12
of the
59
shipped scenarios in a real browser — the ones most exposed to
integrator error, which is a different and smaller claim than the one
this sentence used to make.