Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Classical IMFs (Salpeter, Kroupa, Chabrier, Maschberger)

San Diego State University

Classical IMFs

The single-star initial mass function ξ(m)dN/dm\xi(m) \equiv \mathrm{d}N/\mathrm{d}m captures the birth-mass distribution of individual stars formed in a single star-formation event. It is the standard input for population synthesis, chemical evolution, and the IMF-inference problems progenax is built to solve. Four functional forms dominate the literature, each with a regime where it is the natural choice:

IMF

Class

Use when

Salpeter (1955)

PowerLawIMF

Single power law ξ(m)m2.35\xi(m) \propto m^{-2.35}. Use when only the high-mass slope matters and the stellar sample doesn’t reach below 1M\sim 1\,\Msun.

Kroupa (2001)

PowerLawIMF with multi-segment

3- or 4-segment broken power-law that captures the low-mass turnover. Standard default for resolved-cluster work.

Chabrier (2003)

ChabrierIMF

Lognormal below 1M1\,\Msun matched to a Salpeter-like power-law above. Standard for unresolved-population integrated colours.

Maschberger (2013)

Maschberger

Smooth, three-parameter, analytically invertible IMF. Default for progenax production work because of its closed-form sampling.

Truncated power-law

TruncatedIMF

Hard cutoffs at mminm_{\min} and mmaxm_{\max}. Useful for testing edge cases or modelling stellar populations with explicit upper-mass limits.

This chapter derives each form, lists the parameter values that turn it into “the” canonical IMF, and explains why progenax picks Maschberger (2013) as its default in production.

The four classic IMFs and why smoothness matters. (a) m\,\xi(m) =
\mathrm{d}N/\mathrm{d}\ln m for each family on its canonical support
(curves: analytic; faint steps: 2\times 10^5 sampled masses each, seed 42 —
the sampler-equals-theory check). (b) the local slope
S(m) = -\mathrm{d}\ln\xi/\mathrm{d}\ln m computed by autodiff:
Kroupa’s breakpoints and Chabrier’s 1\,\Msun join are C^0 kinks in
exactly the quantity gradient-based inference differentiates through, while
Maschberger is one smooth curve — the reason it is progenax’s production
default. Regenerate: python -m laboratory.icviz --only imf-classic-slopes.

Figure 1:The four classic IMFs and why smoothness matters. (a) mξ(m)=dN/dlnmm\,\xi(m) = \mathrm{d}N/\mathrm{d}\ln m for each family on its canonical support (curves: analytic; faint steps: 2×1052\times 10^5 sampled masses each, seed 42 — the sampler-equals-theory check). (b) the local slope S(m)=dlnξ/dlnmS(m) = -\mathrm{d}\ln\xi/\mathrm{d}\ln m computed by autodiff: Kroupa’s breakpoints and Chabrier’s 1M1\,\Msun join are C0C^0 kinks in exactly the quantity gradient-based inference differentiates through, while Maschberger is one smooth curve — the reason it is progenax’s production default. Regenerate: python -m laboratory.icviz --only imf-classic-slopes.

Salpeter (1955): the original power-law

The first published IMF, fit to Galactic-disk solar-neighbourhood stars Salpeter, 1955:

ξ(m)  =  ξ0mα,α=2.35\xi(m) \;=\; \xi_0\,m^{-\alpha},\qquad \alpha = 2.35

↗ model card

valid for m1Mm \gtrsim 1\,\Msun. Below 1M\sim 1\,\Msun the actual stellar distribution turns over (the IMF flattens and eventually decreases toward sub-stellar masses), which Salpeter does not capture. Modern usage typically restricts (1) to m[1,mmax]m \in [1, m_{\max}] and pairs it with a separate low-mass model — which is essentially the Kroupa construction below.

The cumulative is closed-form:

N(<m)/N  =  m1αmmin1αmmax1αmmin1αN(<m) / N \;=\; \frac{m^{1-\alpha} - m_{\min}^{1-\alpha}}{m_{\max}^{1-\alpha} - m_{\min}^{1-\alpha}}

↗ model card

inverted analytically for inverse-CDF sampling. progenax’s PowerLawIMF.salpeter(m_min=1.0, m_max=150.0) is the Salpeter configuration (internally exponents=[2.35], breakpoints=[]).

Kroupa (2001): multi-segment broken power-law

Kroupa (2001) extends Salpeter to a piecewise broken power-law that captures the observed low-mass turnover:

ξ(m)    {mα0,0.01m<0.08M(α0=0.3)mα1,0.08m<0.50M(α1=1.3)mα2,0.50m<1.00M(α2=2.3)mα3,1.00mmmax(α3=2.3)\xi(m) \;\propto\; \begin{cases} m^{-\alpha_0}, & 0.01 \le m < 0.08\,\Msun & (\alpha_0 = 0.3) \\ m^{-\alpha_1}, & 0.08 \le m < 0.50\,\Msun & (\alpha_1 = 1.3) \\ m^{-\alpha_2}, & 0.50 \le m < 1.00\,\Msun & (\alpha_2 = 2.3) \\ m^{-\alpha_3}, & 1.00 \le m \le m_{\max} & (\alpha_3 = 2.3) \end{cases}

↗ model card

with continuity coefficients enforced at each break. The four-segment form includes the brown-dwarf regime (m<0.08Mm < 0.08\,\Msun); a common three-segment usage drops α0\alpha_0 and starts at 0.08M0.08\,\Msun. The two high-mass slopes α2=α3=2.3\alpha_2 = \alpha_3 = 2.3 match the Salpeter value (different normalisation conventions account for the small difference between Salpeter’s 2.35 and Kroupa’s 2.3).

PowerLawIMF accepts arbitrary segment slopes and break-points (breakpoints lists the interior breaks only, excluding m_min and m_max):

from progenax.imf import PowerLawIMF

# canonical Kroupa: the two equal high-mass slopes (2.3) merge to one
# segment, so the classmethod uses 3 segments / 2 breaks (exact).
kroupa = PowerLawIMF.kroupa(m_min=0.01, m_max=150.0)

# or build the explicit 4-segment form directly:
kroupa4 = PowerLawIMF(
    exponents=[0.3, 1.3, 2.3, 2.3],
    breakpoints=[0.08, 0.5, 1.0],
    m_min=0.01,
    m_max=150.0,
)

The class internally computes the continuity coefficients aia_i (so that ξ\xi is continuous at each break) and the per-segment integrals needed for normalisation and sampling.

Chabrier (2003): lognormal + power-law

Chabrier (2003) replaces the broken-power-law low-mass piece with a lognormal:

ξ(m)    {1mln10exp ⁣[(log10mlog10mc)22σlogm2],m1Mmα3,m>1M\xi(m) \;\propto\; \begin{cases} \dfrac{1}{m\,\ln 10}\,\exp\!\Bigl[-\dfrac{(\log_{10} m - \log_{10} m_c)^2}{2\sigma_{\log m}^2}\Bigr], & m \le 1\,\Msun \\ m^{-\alpha_3}, & m > 1\,\Msun \end{cases}

↗ model card

with the Chabrier (2003) Table 1 single-star (disk) values mc0.08Mm_c \approx 0.08\,\Msun (0.079), σlogm=0.69\sigma_{\log m} = 0.69, and α3=2.3\alpha_3 = 2.3, joined continuously at m=1Mm = 1\,\Msun. (The often-quoted mc=0.22m_c = 0.22, σ=0.57\sigma = 0.57 are the system IMF; progenax’s ChabrierIMF defaults to the single-star disk form — its defaults are m_c=0.08, sigma=0.69, alpha=2.3, m_trans=1.0.) The lognormal provides a smoother low-mass description than the broken power-law, which matters for unresolved-population integrated luminosities and colours. ChabrierIMF is the standard implementation; it shares its high-mass tail slope with PowerLawIMF.

The Chabrier IMF does not admit a closed-form inverse CDF. Sampling uses a Newton solver on CDF(m)=u\mathrm{CDF}(m) = u; the iteration count is fixed at 30 steps which is enough for double-precision convergence across the entire mass range.

Maschberger (2013): smooth and analytically invertible

The Maschberger (2013) “L3” form is progenax’s production default because it captures the same physics as Chabrier+Kroupa with a single smooth functional form and a closed-form inverse CDF:

ξ(m)    (mμ) ⁣α[1+(mμ) ⁣1α]β\xi(m) \;\propto\; \biggl(\frac{m}{\mu}\biggr)^{\!-\alpha}\, \biggl[\,1 + \biggl(\frac{m}{\mu}\biggr)^{\!1-\alpha}\,\biggr]^{-\beta}

↗ model card

with default parameters α=2.3\alpha = 2.3 (Salpeter slope), β=1.4\beta = 1.4, μ=0.2M\mu = 0.2\,\Msun (peak mass). The two factors interact:

The closed-form CDF and its inverse are derived in Maschberger (2013) §3. For uU(0,1)u \sim \mathcal{U}(0, 1),

m(u)  =  μ[(Pmin+u(PmaxPmin)C) ⁣1/(1β)1]1/(1α)m(u) \;=\; \mu\,\biggl[\biggl(\frac{P_{\min} + u\,(P_{\max} - P_{\min})}{C}\biggr)^{\!1/(1-\beta)} - 1\biggr]^{1/(1-\alpha)}

↗ model card

with C=μ/[(1β)(1α)]C = \mu / [(1-\beta)(1-\alpha)] and Pmin,PmaxP_{\min}, P_{\max} the primitive evaluated at the integration endpoints. progenax’s Maschberger class uses (6) directly, with no Newton solver, no rejection sampling, fully vmap-compatible.

Check yourself

1. The slope trap — reconcile 1.35 with 2.35

Salpeter (1955) reports a slope of 1.35; PowerLawIMF.salpeter() uses 2.35. Before peeking: which convention is which, and how do they relate?

Verify numerically: sample 105 masses, histogram them in logm\log m, and fit the high-mass tail slope — you should recover Γ1.35=α1\Gamma \approx 1.35 = \alpha - 1 (the dlnm=mdm\mathrm{d}\ln m = m\,\mathrm{d}m Jacobian shifts the exponent by one).

2. Rank the mean masses — then explain the outlier

Predict the ordering of m\langle m \rangle for the four default configurations, then run imf.mean_mass() for each. Measured values (analytic, this checkout): Salpeter 0.351, Maschberger 0.367, Kroupa 0.376, Chabrier 0.607M0.607\,\Msun.

The lesson: the biggest driver is the support, not the shape — Chabrier’s default mmin=0.08m_{\min} = 0.08 (the hydrogen-burning limit) excludes the brown dwarfs the other defaults include, nearly doubling m\langle m \rangle; Salpeter’s missing turnover is almost exactly offset by its mmin=0.1m_{\min} = 0.1 floor. For a fixed total mass, your IMF choice changes the number of stars by the same factor.

3. Feel the kink with jax.grad

Compute jax.grad(lambda mu: Maschberger(mu=mu).mean_mass())(0.2) — a clean dm/dμ1.52\mathrm{d}\langle m\rangle/\mathrm{d}\mu \approx 1.52. Now try the same through a Kroupa breakpoint (rebuild PowerLawIMF with a traced break). Both are finite — but relate what you see to panel (b) of Figure 1: the Maschberger derivative is smooth in all its parameters everywhere, while a sampled mass sitting exactly at a Kroupa break feels a C0C^0 kink. Smoothness is why HMC chains on (α,β,μ\alpha, \beta, \mu) mix cleanly.

Truncated power-law

TruncatedIMF wraps any of the above with explicit hard cutoffs at mminm_{\min} and mmaxm_{\max}. This is useful for:

The truncation is implemented via inverse-CDF resampling within the truncated range — not by rejection — so all sampled masses are guaranteed inside [mmin,mmax][m_{\min}, m_{\max}] in a single pass.

Comparison and choice guide

IMF

Sampling cost

Continuity

Best for

Salpeter

O(1)\mathcal{O}(1) inverse CDF

Power-law only

High-mass-only studies

Kroupa

O(1)\mathcal{O}(1) per segment

Continuous, breaks at fixed masses

Resolved cluster work; backwards compatibility

Chabrier

O(30)\mathcal{O}(30) Newton solver

Smooth (lognormal join)

Unresolved-population colours

Maschberger

O(1)\mathcal{O}(1) inverse CDF

CC^\infty smooth

progenax production default

Truncated

As above + clamp

As above

Edge cases, mmax(Mcl)m_{\max}(M_{\mathrm{cl}})

For new users: use Maschberger unless you have a specific reason to pick another. For comparison with prior work using a different IMF, match the convention of the comparison; progenax’s flexible PowerLawIMF + ChabrierIMF cover the standard alternatives.

Connection to binary-aware and environment IMFs

The IMFs above describe single-star distributions. They feed into the binary-aware framework (Binary-aware IMF recovery) where the primary mass is drawn from ξ(mα)\xi(m \mid \alpha) and the secondary is drawn conditionally from the Moe & Di Stefano (2017) mass-ratio distribution. They also feed into the environment-dependent framework (Environment-dependent IMFs) where the slopes α1,2,3\alpha_{1,2,3} become functions of cloud-core density and metallicity per Marks et al. (2012).

Both extensions wrap the classical IMF rather than replacing it: the single-star ξ\xi remains the underlying object, with binary multiplicity and environment dependence layered on top.

Implementation, validation & references

References
  1. Maschberger, T. (2013). On the function describing the stellar initial mass function. Monthly Notices of the Royal Astronomical Society, 429, 1725–1733. 10.1093/mnras/sts479
  2. Salpeter, E. E. (1955). The luminosity function and stellar evolution. The Astrophysical Journal, 121, 161–167. 10.1086/145971
  3. Kroupa, P. (2001). On the variation of the initial mass function. Monthly Notices of the Royal Astronomical Society, 322, 231–246. 10.1046/j.1365-8711.2001.04022.x
  4. Chabrier, G. (2003). Galactic stellar and substellar initial mass function. Publications of the Astronomical Society of the Pacific, 115, 763–795. 10.1086/376392
  5. Marks, M., Kroupa, P., Dabringhausen, J., & Pawlowski, M. S. (2012). Evidence for top-heavy stellar initial mass functions with increasing density and decreasing metallicity. Monthly Notices of the Royal Astronomical Society, 422, 2246–2254. 10.1111/j.1365-2966.2012.20767.x
  6. Moe, M., & Di Stefano, R. (2017). Mind your Ps and Qs: The interrelation between period (P) and mass-ratio (Q) distributions of binary stars. The Astrophysical Journal Supplement Series, 230, 15. 10.3847/1538-4365/aa6fb6