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.

BM19 dense-gas SFR framework

San Diego State University

The BM19 framework

The Burkhart (2018) and Burkhart & Mocz (2019) papers introduce a forward model — in progenax we call it BM19 — that turns four cloud-scale parameters into a predicted dense-gas SFR:

(M,b,α,ηsurvive)  BM19  (σs,st,fdense,fsub,p,ζ)\bigl(\mathcal{M},\,b,\,\alpha,\,\eta_{\mathrm{survive}}\bigr) \;\xrightarrow{\text{BM19}}\; \bigl(\sigma_s,\,s_t,\,f_{\mathrm{dense}},\,f_{\mathrm{sub}},\,p,\,\zeta\bigr)

with M\mathcal{M} the sonic Mach number, bb the turbulence forcing parameter, α\alpha the density-PDF tail slope, and ηsurvive\eta_{\mathrm{survive}} the post-feedback survival fraction. The output is a tuple of cloud-state variables progenax stores in the BM19Result PyTree.

This chapter is the forward chain end-to-end: each step’s physics, the parameter mapping, and the connection to observed SFR.

The forward chain

The BM19 forward model has six numbered steps, each implementing a single physical idea:

    1.σs2=ln(1+b2M2)(turbulence)2.st=(α12)σs2(transition density; BM19 Eq. 2)3.fdense=stespV(s)ds(self-gravitating mass fraction)4.fsub=ηsurvivefdense(post-feedback)5.p=3/α(alpha-to-p mapping)6.ζ=magnification_factor(p)(PP20 geometric SFR boost)    \boxed{\;\; \begin{aligned} 1. &\quad \sigma_s^2 = \ln(1 + b^2 \mathcal{M}^2) \quad \text{(turbulence)} \\ 2. &\quad s_t = \bigl(\alpha - \tfrac{1}{2}\bigr)\,\sigma_s^2 \quad \text{(transition density; BM19 Eq.~2)} \\ 3. &\quad f_{\mathrm{dense}} = \int_{s_t}^{\infty} e^s\,p_V(s)\,\mathrm{d}s \quad \text{(self-gravitating mass fraction)} \\ 4. &\quad f_{\mathrm{sub}} = \eta_{\mathrm{survive}}\,f_{\mathrm{dense}} \quad \text{(post-feedback)} \\ 5. &\quad p = 3 / \alpha \quad \text{(alpha-to-p mapping)} \\ 6. &\quad \zeta = \mathrm{magnification\_factor}(p) \quad \text{(PP20 geometric SFR boost)} \end{aligned}\;\;}

Each step uses one piece of the framework:

The four input parameters

Parameter

Range / typical

Physical meaning

M\mathcal{M}

[3,30][3, 30], typical 10\sim 10

Sonic Mach number; sets turbulence variance via σs2=ln(1+b2M2)\sigma_s^2 = \ln(1 + b^2\mathcal{M}^2)

bb

[1/3,1][1/3, 1]

Forcing parameter: 1/3 solenoidal, 1 compressive, 0.4 natural mix

α\alpha

[1.5,3.0][1.5, 3.0] (Burkhart canonical window)

Power-law tail slope of the density PDF

ηsurvive\eta_{\mathrm{survive}}

[0,1][0, 1]

Fraction of dense gas that survives feedback to form stars

The Burkhart & Mocz (2019) α window has a clear physical interpretation:

Real molecular clouds occupy the middle of this range, α2.0\alpha \sim 2.0 corresponding to p1.5p \sim 1.5 and ζ1.4\zeta \sim 1.4.

Connecting to observed SFR

The cloud-integrated SFR predicted by BM19 is

SFRMcloud  =  ζεff,intfsubtff(ρ)\frac{\mathrm{SFR}}{M_{\mathrm{cloud}}} \;=\; \zeta\,\frac{\varepsilon_{\mathrm{ff,int}}\,f_{\mathrm{sub}}}{t_{\mathrm{ff}}(\langle\rho\rangle)}

Three quantities at the right combine to produce the canonical “SFR/Mdense\mathrm{SFR}/M_{\mathrm{dense}}” diagnostic that observers measure:

SFRMdense  =  ζεff,inttff,dense\frac{\mathrm{SFR}}{M_{\mathrm{dense}}} \;=\; \zeta\,\frac{\varepsilon_{\mathrm{ff,int}}}{t_{\mathrm{ff,dense}}}

with Mdense=fsubMcloudM_{\mathrm{dense}} = f_{\mathrm{sub}}\,M_{\mathrm{cloud}} and tff,denset_{\mathrm{ff,dense}} the free-fall time of the dense gas (not the mean cloud density). For typical Galactic cloud parameters (ζ1.4\zeta \sim 1.4, εff,int0.01\varepsilon_{\mathrm{ff,int}} \sim 0.01, tff,dense0.3t_{\mathrm{ff,dense}} \sim 0.3 Myr), SFR/Mdense5×102\mathrm{SFR}/M_{\mathrm{dense}} \sim 5 \times 10^{-2} Myr1^{-1} — consistent with observed dense-gas SFEs in nearby molecular clouds.

Implementation in gravoturb

The clean-room package exposes the forward chain as small, individually testable functions rather than one monolithic bm19_pipeline orchestrator (that pattern, and its BM19Result PyTree, were intentionally dropped). Compose them directly — each is @jax.jit-compatible and differentiable:

import jax.numpy as jnp
from gravoturb.theory.density_pdf import (
    sigma_s_squared, transition_density, dense_mass_fraction, pdf_slope_to_radial,
)
from gravoturb.theory.dense_gas_sfr import magnification_factor
from progenax.cluster.turbulence import spectral_slope_from_mach

mach, b, alpha = 10.0, 0.4, 2.0
sigma_s2 = sigma_s_squared(mach, b)             # ln(1+b²ℳ²)        ≈ 2.833
s_t      = transition_density(alpha, sigma_s2)  # (α−½)σ_s² (Eq. 2)  ≈ 4.250
f_dense  = dense_mass_fraction(mach, b, alpha)    # mass-wtd dense frac ≈ 0.0568
p        = pdf_slope_to_radial(alpha)           # 3/α                = 1.5
zeta     = magnification_factor(p)              # PP20 ζ(p)          = √2 ≈ 1.414
beta     = spectral_slope_from_mach(mach)       # Kim&Ryu density slope ≈ 2.585

print(f"σ_s={jnp.sqrt(sigma_s2):.3f}  s_t={s_t:.3f}  f_dense={f_dense:.4f}  "
      f"p={p:.1f}  ζ={zeta:.3f}  β={beta:.3f}")

Note β ≈ 2.585 here, not the ~4 (Burgers) value an earlier version of this page printed: spectral_slope_from_mach returns the density power-spectrum slope, which flattens with Mach per Kim & Ryu (2005) (see Density PDFs and the freefall-density factor and the per-paper note). To turn these scalars into a 3D realization and read back the realized dense fraction, use gravoturb.realization.pipeline.build_turbulent_field (the AC6 cornerstone).

Inference: what BM19 enables

The differentiability of Equation end-to-end means BM19 can sit inside an HMC posterior over cloud parameters. Given observational constraints on:

Because the forward functions above are differentiable end-to-end, NUTS can in principle recover posteriors on (M,b,α)(\mathcal{M}, b, \alpha) — the cloud’s turbulent state — from observed substructure. The clean-room package ships a differentiable physics-direct inference layer (gravoturb.inference) that does exactly this, predicting summary statistics analytically and differentiating those rather than the stochastic simulator. That layer — the 3-D recovery of α\alpha via a peaks-over-threshold tail block and the projected β\beta estimator — is developed in full in Differentiable inference — natal cloud parameters from cluster substructure.

The 2026-04-28 PP20 fix and BM19

The transcription bug fix documented in the magnification-factor historical note affects step 6 of the BM19 chain — the magnification_factor(p) call. Pre-fix, the buggy form zeta = (3 - p) / (2.6 - 2 * p) ** 1.5 produced silently wrong ζ values for typical p[1,2]p \in [1, 2]:

BM19 ζ output, pre- vs post- 2026-04-28 fix.

α\alpha

p=3/αp = 3/\alpha

Buggy ζ

Correct ζ

Status

3.0

1.0

4.30

1.089

3.95×3.95\times too large

2.0

1.5

complex / NaN (negative base raised to 3/2)

1.414

garbage pre-fix

1.5

2.0

complex / NaN (singular at p=2p=2)

\to\infty (singular isothermal)

true value diverges; use cored ζ

The buggy denominator (2.62p)(2.6 - 2p) goes negative for p>1.3p > 1.3, so raising it to the 3/23/2 power returned complex/NaN values there — the spurious “p=1.3p = 1.3 domain limit” earlier docstrings rationalised. The shipping magnification_factor has no such pole below p=2p = 2 and applies no clip (the magnification-factor chapter shows the exact source); the only true singularity is the physical one at p=2p = 2, regularised by the cored ζ. All committed BM19 outputs from before 2026-04-28 carry these errors; see PP20 ζ(p) transcription fix for the full history and which validation artefacts need regeneration.

Domain of validity

  1. Burkhart & Mocz (2019) α window assumed. Outside α[1.5,3.0]\alpha \in [1.5, 3.0], the framework’s mapping to PP20 ζ becomes uncertain. progenax allows external α\alpha values but warns at construction.

  2. Single-cloud assumption. BM19 describes one cloud at one moment in time. Galactic-disc SFR predictions need an integration over the cloud-mass function — not currently included.

  3. No metallicity dependence. Moe et al. (2019) finds binary fractions are metallicity-dependent; cloud-PDF parameters likely are too. progenax does not currently include this.

  4. Static feedback. ηsurvive\eta_{\mathrm{survive}} is a single scalar, not a time-resolved feedback model. For evolved-cluster studies where feedback acts on a timescale comparable to tfft_{\mathrm{ff}}, a time-resolved framework is needed.

Implementation, validation & references

References
  1. Burkhart, B. (2018). The Star Formation Rate in the Gravoturbulent Interstellar Medium. The Astrophysical Journal, 863, 118. 10.3847/1538-4357/aad002
  2. Burkhart, B., & Mocz, P. (2019). The self-gravitating gas fraction and the critical density for star formation. The Astrophysical Journal, 879, 129. 10.3847/1538-4357/ab25ed
  3. Kritsuk, A. G., Norman, M. L., & Wagner, R. (2011). On the density distribution in star-forming interstellar clouds. The Astrophysical Journal Letters, 727, L20. 10.1088/2041-8205/727/1/L20
  4. Kainulainen, J., Federrath, C., & Henning, T. (2014). Unfolding the laws of star formation: The density distribution of molecular clouds. Science, 344, 183–185. 10.1126/science.1248724
  5. Moe, M., Kratter, K. M., & Badenes, C. (2019). The close binary fraction of solar-type stars is strongly anticorrelated with metallicity. The Astrophysical Journal, 875, 61. 10.3847/1538-4357/ab0d88
  6. Parmentier, G., & Pasquali, A. (2020). A new parameterization of the star formation rate–dense gas mass relation: Embracing gas density gradients. The Astrophysical Journal, 903, 56. 10.3847/1538-4357/abb8d3
  7. Federrath, C., & Klessen, R. S. (2012). The star formation rate of turbulent magnetized clouds. The Astrophysical Journal, 761, 156. 10.1088/0004-637X/761/2/156