The EFF suite verifies the closed-form density, the inverse-CDF sampling, and the
ergodic (Eddington) velocity DF. Test file: tests/validation/test_eff_physics.py
(see the test dashboard for the live per-suite count);
figures: scripts/validate_eff.py.
What is verified¶
Each row maps to assertions in test_eff_physics.py. The Tolerance is the
exact bound the test enforces; the Measured value is regenerated by
scripts/validate_eff.py (which prints expected-vs-measured for every figure).
Property | Tolerance (as tested) | Measured | Anchor |
|---|---|---|---|
Density at scale radius | 10-10 abs | 0.2500 (γ=4) | closed-form density |
Asymptotic slope () | rel | -3.97 (γ=4) | power-law limit |
reduces to Plummer | exact | max rel | |
Tidal truncation () | 100% | 100% | truncated sampling |
Concentration increases with | monotone median | (γ=2–5) | inverse-CDF sampling |
Sampled CDF vs profile grid | max | inverse-CDF accuracy | |
Eddington physical | , increasing | , monotone (γ=3,4,5) | ergodic DF non-negativity |
Velocity isotropy | rel spread | isotropic DF | |
Bound fraction () | 100% | 100.00% | |
Virial (mild trunc, γ=5) | 0.502 | Eddington equilibrium | |
Sampling differentiability () | AD central-FD | rel err , , |
|
Figures¶
Generated by scripts/validate_eff.py (PASS/FAIL per panel; PNG + PDF vector).

Figure 1:Density, asymptotic slope, and truncation (γ=4). (a) EFFProfile.density
(dashed) on the analytic (solid) and the
sample; the recovered outer slope is -3.97 vs , and the profile
terminates at . (b) The empirical CDF matches the profile’s inverse-CDF grid
to max .

Figure 2:The γ family and the Plummer limit. Normalized density for : larger is more centrally concentrated (median radius ). The curve coincides exactly with Plummer (dotted; max rel ), the analytic limit of the EFF family.

Figure 3:Eddington velocity equilibrium. (a) Sampled with measured isotropy . (b) Every velocity satisfies — 100% bound. (c) The mild-truncation () IC sits at virial ; the sharp-truncation () point at shows the sub-virial caveat honestly.

Figure 4:The ergodic DF is physical. The tabulated Eddington is non-negative and monotonically increasing in energy for — the conditions for a valid isotropic equilibrium DF.
Differentiability¶
EFF’s structural parameters are differentiable, enabling gradient-based / HMC inference. In particular γ is a differentiable structural parameter — the EFF analogue of King’s (both are differentiable; see Differentiability).

Figure 5:Gradient validation (autodiff vs central finite difference). (a) , (b) , (c) (the velocity scale): autodiff (line) and finite difference (circles) agree to max rel err , , , so can be inferred jointly.
How to run¶
# physics tests (~9 s on CPU)
pytest tests/validation/test_eff_physics.py -q
# regenerate the five figures with PASS/FAIL tables
python scripts/validate_eff.pyWhat this suite does not test¶
Radial anisotropy — the isotropic Eddington DF is covered; Osipkov–Merritt anisotropy is available via
EFFVelocityDF(anisotropy_radius=...)and validated with the Michie model.Multi-mass / unified lowered models — see the lowered-model-family roadmap.
References¶
Elson et al. (1987) is the original (note the surface-vs-3-D slope convention above). Theory at EFF profile.
- Elson, R. A. W., Fall, S. M., & Freeman, K. C. (1987). The structure of young star clusters in the Large Magellanic Cloud. The Astrophysical Journal, 323, 54–78. 10.1086/165807