The Plummer profile¶
The Plummer model Plummer, 1911 is the canonical spatial density profile for star clusters: closed-form everything, smooth, untruncated, and historically the first density profile derived for which the distribution function admits an analytic solution. It is the default progenax spatial profile for all production ICs and is the right starting point for understanding every other profile in the package.
This chapter derives the Plummer profile from first principles, lists the closed-form expressions for the four observables that every N-body code consumes (mass, potential, velocity dispersion, isotropic DF), tabulates the half-mass-radius / scale-radius mapping that recurs in every progenax test, and documents the 2025-12 transcription bug whose fix is now anchored by 14 regression tests.
The density profile¶
The Plummer profile is
where is the total mass and is the Plummer scale radius. The profile is centrally smooth (), asymptotically at , and integrates to finite total mass even though extends to infinity. The smoothness at is what makes it analytically tractable — there is no central cusp to integrate around.
The outer fall-off is steeper than observed for real star clusters (which typically show to at large radii), so Plummer is in this sense a toy profile. Its analytic tractability is what keeps it in production use as a baseline against which more realistic profiles (King, EFF) are calibrated.
Closed-form mass and potential¶
Integrating (1) against the spherical volume element gives the cumulative mass:
The total mass is recovered as : . Solving for the half-mass radius gives the relation that recurs throughout progenax,
so that progenax’s user-facing r_h parameter unambiguously specifies
the radius enclosing half the cluster mass, regardless of the internal
scale-radius convention.
The gravitational potential is
with central value and asymptotic as . The escape speed at radius is
Inverse-CDF sampling¶
For Monte Carlo IC generation, progenax uses inverse-CDF sampling on (2). Setting for and inverting:
The expression is exact, has no singularities for , and
is differentiable analytically in and . Each call to
PlummerProfile.sample_positions(masses, key_pos) draws
uniform variates, evaluates (6) to get radii,
draws isotropic angles, and returns 3D positions — all in a single
JIT-compiled vmap over particles, fully differentiable in
through the chain .
Velocity dispersion¶
For the Plummer profile in dynamical equilibrium, the radial-velocity dispersion has the closed form
Tangential and total velocity dispersions are equal to for the isotropic Plummer DF (the standard equilibrium choice; see Plummer velocity distribution functions). The central velocity dispersion is
This last ratio fixes the cluster’s virial state: integrating (7) against the density profile gives , i.e. — the equilibrium value (What is an initial condition?).
The Plummer distribution function¶
The isotropic distribution function for the Plummer density (the 1911 space-density law, (3) context) in energy space is the Eddington-inversion result Merritt, 1985 (his Eq. 42; equivalently Eddington 1916 / Binney & Tremaine §4) — not derived in Plummer (1911), which predates the inversion method:
with the specific energy. The exponent derives from the density and the Eddington inversion machinery — see Plummer velocity distribution functions for the full derivation. The DF is finite, monotonic in , and positive for all , so progenax can sample velocities at any position via inverse-CDF on without rejection.
The five-step closed-form derivation¶
For reference, the five quantities derived above are the five steps that recur in every Plummer-related calculation. Collecting them in one place:
Quantity | Closed form |
|---|---|
Density | |
Cumulative mass | |
Potential | |
Radial | |
Isotropic DF |
The half-mass relation (3)
ties this all together. Every progenax Plummer-related test
(tests/validation/test_plummer_physics.py) anchors on at least
two of these quantities.
Implementation in progenax¶
from progenax.profiles import PlummerProfile
from progenax.kinematics import PlummerVelocityDF
from jaxstro.units import STELLAR
profile = PlummerProfile(r_h=1.0) # Half-mass radius in pc
velocity_df = PlummerVelocityDF(r_h=1.0) # Same r_h for equilibrium
masses = jnp.ones(1000) # 1000 M_sun
key = jax.random.PRNGKey(42)
key_pos, key_vel = jax.random.split(key) # never reuse a key
positions = profile.sample_positions(masses, key)
velocities = velocity_df.sample_velocities(positions, masses, key_vel, G=STELLAR.G)Both PlummerProfile and PlummerVelocityDF are Equinox modules
(immutable PyTrees), @jax.jit-compatible, and differentiable in
. Sampling positions and velocities under jax.grad flows
gradients through (positions) and
(velocities) — the
expensive-but-tractable chain we accept (~ slowdown vs
non-differentiable sampling) in exchange for HMC-friendly inference.
Domain of validity and limitations¶
The Plummer profile is mathematically smooth and infinitely extended. Two consequences for production use:
No tidal truncation built in. Real Galactic clusters have a tidal radius beyond which stars are stripped by the host galaxy’s tidal field. Plummer ICs need to be truncated post-hoc — see Tidal physics for the Jacobi-radius computation and
apply_tidal_truncationutility.Outer slope is too steep. At , , steeper than the to observed in real clusters. For ICs whose outer-profile shape matters (e.g. fitting LMC young massive clusters), use EFF profile which exposes the outer slope as a free parameter.
For most production star-cluster work — Galactic globular clusters, Milky Way analogues, dynamical-evolution studies — Plummer is the right default. It is also the most-tested profile in progenax (see the test dashboard for the live counts) and the one against which the two alternatives are calibrated.
Implementation, validation & references¶
In code:
src/progenax/profiles/plummer.py(density, mass, inverse-CDF sampling) andsrc/progenax/kinematics/plummer_df.py(the isotropic DF) — see thePlummerProfileAPI and thePlummerVelocityDFAPI.Validated in: Plummer equilibrium — the regression suite that locks every closed-form expression above, including the defining condition .
Primary sources: Plummer (1911) (the model); the closed-form derivations are standard textbook material and Aarseth et al. (1974) is a clean reference for N-body initialisation specifically — full notes in the bibliography. The 2025-12 half-mass-radius bug fix is recorded in IMF Stack Fix Implementation Plan.
- Plummer, H. C. (1911). On the problem of distribution in globular star clusters. Monthly Notices of the Royal Astronomical Society, 71, 460–470. 10.1093/mnras/71.5.460
- Merritt, D. (1985). Spherical stellar systems with spheroidal velocity distributions. The Astronomical Journal, 90, 1027–1037. 10.1086/113810
- Aarseth, S. J., Henon, M., & Wielen, R. (1974). A comparison of numerical methods for the study of star cluster dynamics. Astronomy and Astrophysics, 37, 183–187.