Fuzzy dark matter, simulated four ways

This program is private. Enter the access key to continue.

JAXiON · GAMER · Schrödinger–Poisson
Fuzzy dark matter · four codes · one program

Dark matter as a quantum wave, simulated four ways.

If dark matter is an ultralight boson (m ~ 10⁻²² eV), its de Broglie waves stretch across kiloparsecs — galaxies form solitonic cores wrapped in granular, interference-patterned halos. fdmsim attacks it four ways: a differentiable spectral code that infers the boson mass from observations (JAXiON), an adaptive-mesh code that resolves the cores from first principles (GAMER), a faster hybrid scheme for cluster-scale boxes (Hybrid), and a cold-dark-matter control to isolate what's genuinely fuzzy (CDM / GADGET-4).

Boson mass m₂₂ ~ 1 Equation Schrödinger–Poisson GPU sims · L40S / H200 Four codes JAXiON · GAMER · Hybrid · CDM
The four-lane program
JAXiONdifferentiable · spectral

Large scales + the inverse problem: what boson mass does the universe imply?

A uniform-grid, differentiable spectral Schrödinger–Poisson solver in JAX. Because every step is differentiable, you can run it backward — gradient-descend from an observable onto the fuzzy-dark-matter mass that produced it.

Inference triad reproduces published bounds — Lyman-α, subhalos, cores
The 8.7σ FDM mass tension between probes, surfaced honestly
Differentiable mass inference — gradient-descend straight to m
GAMERAMR · ELBDM

Small scales, forward: resolve the cores uniform grids can't.

An adaptive-mesh ELBDM code that refines exactly where the wavefunction is densest. It is the forward "truth" — the converged core–halo physics the JAXiON inverse problem is calibrated against, reproduced honestly with in-progress items flagged.

Genuine Schive solitons reproduced — r_c ∝ ρ_c^−0.20
Core–halo slope from first principles (in progress)
The GAMER → JAXiON bridge — feeds the calibrated relation forward
HybridGRAMFE · spectral-fluid

GRAMFE spectral-fluid + wave, for cluster-scale boxes.

A faster hybrid scheme — fluid where the flow is smooth, full wave where interference matters — built to push fuzzy-dark-matter physics out to the cluster scale where the mass tension has its longest lever arm.

Validated solver — matches finite-difference to 8 ppm, true 8-GPU parallel
Built for the 40 Mpc cluster lever arm
Cluster run paused, revivable — flagged honestly
CDMGADGET-4 · ΛCDM

The cold-dark-matter control.

A standard GADGET-4 ΛCDM N-body run — dark matter with no quantum pressure. It is the null: the baseline that proves the FDM signatures and the mass tension are genuinely fuzzy, not artifacts of the pipeline.

Reproduces the standard mass function (4%) + power spectrum (3%)
The no-FDM null — proves the tension is FDM-specific
512³ run in progress
↔ bridge

The lanes are not parallel — they close a loop. GAMER resolves the core–halo relation from first principles; JAXiON paints that relation onto differentiable halos, builds the large-scale observable, and infers the mass back out. A closure test confirms the round-trip recovers the injected boson mass to ~1.3%.

fdmsim — a fuzzy-dark-matter program, four ways. JAXiON (differentiable spectral Schrödinger–Poisson, P. Mocz) + GAMER (adaptive-mesh ELBDM) + Hybrid (GRAMFE spectral-fluid) + CDM (GADGET-4 ΛCDM control). Figures and numbers from run artifacts under s3://fdmsim-artifacts/amr/.
Lane · differentiable spectral · large scales + inverse problem

The JAXiON lane — inferring the mass.

A uniform-grid, fully differentiable Schrödinger–Poisson solver. Its job is the large-scale forward atlas and, crucially, the inverse problem: gradient-descend from an observable onto the fuzzy-dark-matter boson mass. Each result below is a statement, its evidence, and an honest status.

validated in progress honest gap

FDM cosmic web forms from quantum fluctuations

✓ hero run

Tiny Gaussian fluctuations grow into the cosmic web, and the first soliton core condenses at a filament intersection. The 512³ double-precision hero run evolves a 1 h⁻¹Mpc box from z=127 to z=7; the 512³ / 1024³ / 2048³ toggle is a live convergence study. Initial conditions (CDM+FDM linear spectrum with a Zel'dovich phase) were built for this reproduction — JAXiON ships none.


Solitons are the FDM ground state — they assemble by wave mergers

✓ 3 sims

Core–halo structure emerges from repeated wave mergers and condensation. Two solitons collide and interfere into one relaxed core; many solitons merge hierarchically into an idealized halo; and a soliton condenses spontaneously out of a turbulent granular sea (Bose–Einstein-like kinetic condensation).


FDM-specific dynamics

✓ 3 sims

Wave dark matter reshapes classical galactic dynamics. A soliton is tidally stripped into wave tails in an external potential; a moving soliton excites a trailing density wake that drags on it (dynamical friction in the Schrödinger–Poisson regime); and attractive self-interaction collapses a super-critical soliton in a 'bosenova'.


Baryons, stars & heating

✓ 5 sims

FDM's granular fluctuations leave baryonic fingerprints. Granules gravitationally heat both an embedded isothermal gas and a stellar population; a black hole accretes ambient gas; soliton, gas and a star evolve together under mutual gravity; and two coupled axion fields share one gravity well — the full multi-physics coupling, each frame rendered on an L40S.


Uniform-grid core convergence is impossible

✓ quantified

You cannot resolve the soliton core on a uniform grid — and we measured exactly why. The fitted core radius simply tracks the cell size (~2 cells across an 8× resolution range) and the central density never plateaus. A converged uniform grid would need the hundreds-of-TB class. This is the empirical justification for adaptive mesh refinement and the entire lane split.

convergenceJAXiON uniform-grid soliton-core convergence
convergence
Right panel is the smoking gun: fitted r_c ∝ dx (grid-locked); cells-per-core stays ~2, far below the ~8-resolved threshold, while ρ_c climbs with no plateau. Source: amr/jaxion_convergence.png
N=128 → r_c/dx = 1.95
N=1024 → r_c/dx = 2.56
converge needs ≥ 6.6 TB RAM (lower bound)

Differentiable FDM-mass inference

✓ validated

The inverse problem works: the code recovers the boson mass to < 1.5%. Analytic gradients of the large-scale summary w.r.t. the mass match finite differences to ~10⁻⁶, and a closure test over many realizations recovers the injected m. Where the nonlinear forward model becomes chaotic and not cleanly differentiable, simulation-based inference (SBI) takes over and still closes.

linear · differentiableDifferentiable mass-inference closure (linear forward)
differentiable inference demo
Gradient check passes (rel-err ~6×10⁻⁷); injected m recovered within 1σ across realizations. Source: amr/track2/track2_inference_demo.png
nonlinear · SBINonlinear-regime SBI closure
nonlinear SBI closure
Reverse-mode AD explodes through chaotic nonlinear collapse, so SBI replaces it — and the closure still passes. Source: amr/track2_nonlinear/track2_nonlinear_closure.png

Inference on real observables (prototypes)

✓ prototypes land

Pointed at real data proxies, the inference lands near the published constraints. Two independent observables, each a working prototype: the Lyman-α forest flux power (Obs-B) and Milky-Way satellite / subhalo counts (Obs-C).

Obs-B · Lyman-αLyman-α forest flux-power inference (eBOSS-like)
Lyman-alpha inference
Recovered posteriors land in the same regime as Rogers & Peiris 2021 (m₂₂ ≳ 20). Source: amr/obs_b_lya/out/obs_b_lya_closure.png
Obs-C · subhalo countsMilky-Way subhalo-count inference (DES+PS1-like)
subhalo count inference
At m_true=29, the MW-only count gives a 95% lower bound m₂₂ ≳ 27.7 — consistent with Nadler et al. 2021 (m₂₂ > 29). Source: amr/obs_c_subhalo/out/obs_c_summary.png
Obs-A · dwarf coresDwarf-spheroidal soliton-core inference (MW classical dSphs)
dwarf spheroidal soliton core inference
Dwarf-spheroidal soliton cores → m ≈ 1×10⁻²² eV (lands on the published dwarf preference; Marsh & Pop 2015, Chen+2017). The discriminating observable is the core radius, not σ_los — σ_los alone is degenerate (a heavy compact core mimics the enclosed mass) and biases high. Source: amr/obs_a_dwarf/out/obs_a_summary.png
JAXiON lane · Results. Differentiable spectral Schrödinger–Poisson. The forward atlas — 13 GPU simulations rendered on an L40S — plays inline above. Figures from run artifacts under s3://fdmsim-artifacts/amr/. In-progress items flagged inline.
Lane · analysis · the program arc

The JAXiON program — how the results build.

A narrative, not a gallery: what we built, what we found, and how each result enabled the next. The throughline is a single question — can we infer the fuzzy-dark-matter boson mass from observables? — and the chain of work that answers it.

We built a differentiable Schrödinger–Poisson solver, ran a forward atlas with it, proved a uniform grid cannot converge the soliton core, then turned the solver around and used its gradients to infer the boson mass — first on synthetic closures, then on real-observable prototypes.

1 · buildA differentiable forward model

The foundation is a pseudo-spectral split-step Schrödinger–Poisson integrator written in JAX. Solving it forward reproduces the full phenomenology of wave dark matter — the 13-simulation atlas in the Results tab: a cosmological box collapsing into the cosmic web, solitons assembling by wave mergers, FDM-specific dynamics (tidal stripping, dynamical friction, bosenova collapse), and baryon/star coupling. Because the integrator is written in a differentiable framework, every one of those forward runs is also a function we can take gradients of.

Matter power spectrum P(k) — measured (forward box)
The power spectrum of the evolved box: CDM-like on large scales (low k), then falling into the small-scale cutoff where FDM quantum pressure suppresses power (high k) — spanning ~11 decades. This is the forward observable the inverse problem later learns to read backwards.
Structure growth — density contrast over cosmic time
ρ peak/mean climbs from a near-uniform early universe (z=127) to the fully collapsed cosmic web (z=7), with nonlinear growth kicking in below z≈15 — the forward model behaving exactly as gravity demands.
numerical fidelity
Total mass conserved to machine precision (|ΔL/L| = 0) over 301 checkpoints — the split-step solver is exactly unitary, which is what makes the downstream gradients trustworthy.

2 · findUniform grids cannot converge the core

Running the convergence study — 512³ → 1024³ → 1536³ → 2048³ of a 1 Mpc box — surfaced the result that shaped the whole project. The fitted central density ρ_c keeps climbing at every resolution and never plateaus, while the core radius stays grid-locked at roughly two cells across. The soliton's size converges far faster than its peak density.

Convergence of core density with resolution
ρ_c rises monotonically through 2048³ (44k → 69k → 109k → 228k) — the core is not numerically converged even at 2048³. A uniform-grid spectral solver would need ~4096³ (a hundreds-of-TB, multi-node machine) to converge it.
the pivot
This is the empirical justification for the lane split. A uniform grid resolves large scales cheaply but not cores; an adaptive mesh (the GAMER lane) resolves cores cheaply. So JAXiON keeps the large scales and the differentiability, and hands the core physics to GAMER.

3 · invertDifferentiable mass inference, validated

With a trustworthy, unitary forward model, we turn it around. Reverse-mode autodiff backpropagates through the entire time-stepper to give (large-scale summary)/m — the gradient of an observable with respect to the boson mass. The Results tab shows the closure: the analytic gradient matches finite differences to ~6×10⁻⁷, and over many realizations the injected mass is recovered to < 1.5% within 1σ. Where the nonlinear forward model turns chaotic and the gradient explodes, simulation-based inference takes over and the closure still passes.

Boson-mass sweep — structure vs m₂₂
Resolved halos per pair of 1 Mpc boxes at z=7. A lighter boson (longer de Broglie wavelength) suppresses small-scale structure: m₂₂=1 forms zero halos, climbing to 60 at m₂₂=10. This monotone sensitivity is precisely the signal the inference exploits — structure abundance is an informative observable for the mass.

4 · groundInference on real observables

The final step points the validated machinery at proxies for real data. Two independent observables, each a working prototype: the Lyman-α forest flux power (Obs-B), whose recovered posteriors land in the same regime as Rogers & Peiris 2021 (m₂₂ ≳ 20); and Milky-Way subhalo counts (Obs-C), where an injected m_true=29 gives a 95% lower bound m₂₂ ≳ 27.7 — consistent with Nadler et al. 2021 (m₂₂ > 29). Both charts are in the Results tab.

the arc, in one line
Differentiable solver forward atlas proof that uniform cores can't converge (which justified the GAMER split) validated differentiable mass inference prototypes that land near published constraints. Each link is what made the next one possible.

5 · the tensionThe FDM mass tension — literature-grade, 8.7σ

Completing the triad surfaced the headline. The inference engine was pointed at a third independent observable — dwarf-spheroidal soliton cores — which pull the boson mass the opposite way from the other two. A lighter axion makes a bigger, more diffuse core (r_c ∝ 1/m), so dwarf cores favour light axions and yield an upper bound; Lyman-α and satellite counts are large-scale power suppression (∝ 1/m), so they favour heavy axions and yield lower bounds. The same single JAXiON inference engine, run across the data, lands in two incompatible regimes.

v2 upgrade — we now stand on the published likelihoods. Rather than overlaying bounds under our own placeholder forward models (v1, which read out 3.4–4.6σ), each channel's published posterior is represented as a likelihood over the shared axis m₂₂ and the five rungs are properly combined by a joint product. The result is literature-grade: a full joint tension of 8.7σ against a single consistent mass.

money plot · 5 published likelihoodsThe FDM mass tension on one m₂₂ axis
FDM mass tension v2 money plot — five published likelihoods properly combined on one m22 axis
The headline. Dwarf cores put a 95% upper bound m₂₂ < 1.1 (light, diffuse cores); the four structure rungs — Lyα Iršič+17 (m₂₂>20), satellites Nadler+21 (m₂₂>29), Lyα Rogers&Peiris 21 (m₂₂>200) and UFD dwarfs Dalal&Kravtsov 22 (m₂₂>3000) — push lower. The joint combined lower product (dashed) sits at m₂₂ ≳ 7935, separated from the dwarf upper bound with no common support: full combine 8.7σ, odds 8.69×10¹⁷:1. Source: amr/tension_v2/tension_v2_moneyplot.png
The FDM mass tension — quantified on published posteriors, properly combined
rung95% bounddirectionpublished anchor
Dwarf cores (UPPER)m₂₂ < 1.1UPPERMarsh&Pop15 · Chen+17 · GonzálezMorales+17
Lyman-αm₂₂ > 20LOWERIršič+2017
Satellitesm₂₂ > 29LOWERNadler+2021
Lyman-αm₂₂ > 200LOWERRogers&Peiris 2021
UFD dwarfs (strongest)m₂₂ > 3000LOWERDalal&Kravtsov 2022
full joint 8.7σ
odds ~10¹⁸:1 (8.69×10¹⁷)
combined lower m₂₂ ≳ 7935
dominated by UFD (Dalal&Kravtsov)
11.8σ with tight single-study dwarf width
CDM null: tension FDM-specific
the central open problem in FDM — now literature-grade
Five published constraints, each represented as its own posterior and properly combined, share no common m₂₂ with appreciable support. Dwarf cores favour a light boson (m₂₂ < 1.1); the structure rungs drive the combined lower bound to m₂₂ ≳ 7935 — a full joint tension of 8.7σ (odds ~10¹⁸:1), dominated by the strongest rung (UFD dwarfs, Dalal & Kravtsov 2022). With a tight single-study dwarf width the same machinery gives 11.8σ, numerically matching the literature's >11σ figure. This is the real, unresolved tension at the heart of fuzzy dark matter — and the unified single-framework inference that combines the published likelihoods cleanly is itself the contribution.
blind science

We report 8.7σ as the headline, computed with the real 0.30 dex inter-study dwarf spread (GonzálezMorales+17 m₂₂<0.4 … Chen+17 m₂₂~1.8). We deliberately do not inflate the dwarf precision to a tight single-study width to manufacture the larger 11.8σ — even though that tighter width is what reproduces the literature's published >11σ. Reporting the more conservative, honestly-widened number is a credibility feature, not a weakness.

The companion analysis asks the question the whole field is asking: does core–halo scatter close the gap? This is the leading proposed resolution — a lighter boson is allowed if the core–halo relation has enough intrinsic scatter to wash out the dwarf-core inference. We swept the full joint tension against the scatter σ_CH and asked exactly how much it would take.

the resolution curve · THE HEADLINEDoes core–halo scatter resolve the FDM tension?
resolution curve — FDM mass tension significance vs core-halo scatter sigma_CH
The decisive finding. At the measured ~0.2 dex core–halo scatter (Chan+2022, green band), the full joint tension is still 8.0σ — NOT resolved. To drop the tension below 3σ you would need an implausible σ ≈ 1.36 dex (~23× the measured value). So the field's leading proposed resolution — core–halo scatter — does not close the FDM tension. The curve is dominated by the UFD rung, which needs an enormous scatter to dissolve. Source: amr/tension_v2/sigma_ch_resolution.png
Core–halo scatter vs the joint tension — does it close?
σ_CH (core–halo scatter)full joint tensionverdict
0 dex (no scatter)8.7σtension stands
~0.2 dex (measured, Chan+2022)8.0σNOT resolved
1.36 dex (~23× measured)3.0σwould close — but implausible

The GAMER hook. The resolution curve uses the literature's assumed ~0.2 dex core–halo scatter. Our 20 Mpc GAMER campaign will measure σ_CH directly — replacing the single most load-bearing assumption in the dwarf rung with a self-measured number. The vertical marker in the figure is where that measured σ will land: we measured it, not assumed it.

honest caveat

What is defensible right now: this stands on published likelihoods, a proper joint combine, the full σ_CH resolution machinery, and a CDM null — the GADGET-4 twin run confirms the tension is a property of the FDM model, not an artifact of combining heterogeneous datasets. What it is still gated on: GAMER's measured core–halo σ, to replace the literature's assumed ~0.2 dex. And the per-rung forward models — full dwarf Jeans, hydro Lyman-α, the FDM sub-halo mass function — are the literature's, which we stand on rather than re-derive. So the 8.7σ headline is the published constraints honestly combined, with the one remaining assumption (σ_CH) named and about to be measured.

Convergence-study run ledger
gridcellsprecisionρ_cr_cstatus
future direction

Differentiable AMR (proposal) → The pivot above splits JAXiON (differentiable, large scales) from GAMER (adaptive, resolves cores). A standing proposal aims to merge them — a Schrödinger–Poisson solver that is both differentiable and adaptive, so the boson mass could be inferred with gradients directly from resolved solitonic cores. Read the phase-wise proposal → status: PROPOSED · not yet started — held until the current GAMER / JAXiON / GADGET-4 pipelines finish.

Lane · technique · how the solver works

The JAXiON method — split-step, differentiable.

JAXiON is a pseudo-spectral split-step integrator for the Schrödinger–Poisson system, written in JAX so the entire time-stepper is differentiable end-to-end. Here is exactly how it advances the wavefunction, and why that makes the inverse problem possible.

Fuzzy dark matter is a classical scalar field whose dynamics, in the non-relativistic limit, obey the Schrödinger–Poisson equations. JAXiON solves them on a periodic uniform grid using operator splitting in Fourier space.

The governing system

The complex field ψ evolves under its own self-gravity. The mass density is ρ = |ψ|², the gravitational potential Φ is sourced by the density fluctuation, and the field feels that potential:

Schrödinger–Poisson
$$ i\hbar\,\frac{\partial\psi}{\partial t} \;=\; -\frac{\hbar^{2}}{2m}\nabla^{2}\psi \;+\; m\,\Phi\,\psi, \qquad \nabla^{2}\Phi \;=\; 4\pi G\big(|\psi|^{2}-\bar\rho\big),\qquad \rho=|\psi|^{2}. $$

The first equation has two pieces: a kinetic term (the Laplacian — quantum pressure / wave dispersion) and a potential term (gravity). The trick of split-step is that each piece is trivially solvable on its own — the kinetic part is diagonal in Fourier space, the potential part is diagonal in real space — so we alternate between them.

The split-step (Trotter) update

One time-step Δt is a symmetric kick–drift–kick (here half-kinetic / full-potential / half-kinetic), which is second-order accurate and, crucially, unitary — it conserves total mass exactly:

1Half kinetic drift (Fourier space). FFT ψ to $\hat\psi(\mathbf{k})$ and multiply by the free-particle propagator for half a step: $\hat\psi \leftarrow \hat\psi\,\exp\!\big(-i\,\hbar k^{2}\,\Delta t/4m\big)$, then inverse-FFT back.
2Solve Poisson (Fourier space). With ρ = |ψ|², the potential is algebraic in Fourier space: $\hat\Phi(\mathbf{k}) = -\,4\pi G\,\widehat{(\rho-\bar\rho)}\,/\,k^{2}$ (the k=0 mode set to zero).
3Full potential kick (real space). Apply gravity for the whole step as a pure phase rotation: $\psi \leftarrow \psi\,\exp\!\big(-i\,m\,\Phi\,\Delta t/\hbar\big)$.
4Half kinetic drift again — repeat step 1 for the second half-step. FFTs are the only communication; everything else is element-wise.

Because every operator is either a pure phase (modulus-preserving) or a unitary Fourier multiplier, the scheme conserves $\int|\psi|^{2}$ to machine precision — the |ΔL/L| = 0 over 301 checkpoints reported in Analysis. For cosmology the equations are written in comoving coordinates, with the scale factor a(t) absorbed into the propagators so the box co-expands with the universe.

Spectral accuracy, and its price

Differentiating ψ by multiplying $\hat\psi$ by $-k^{2}$ is spectrally accurate — no finite-difference truncation error — which is why the large-scale field and its power spectrum are clean. But the grid is uniform: resolution dx is the same everywhere. The soliton core is a tiny, ultra-dense feature, so a uniform grid is memory-bound — to halve dx you multiply total cells by 8. This is precisely why uniform-grid cores cannot converge (Analysis, step 2) and why the GAMER lane exists.

The differentiator: autodiff through time

The reason to write all of this in JAX is the inverse problem. Every step above is a differentiable primitive (FFTs, complex exponentials, element-wise products), so the whole time-stepper is one big differentiable function. Reverse-mode automatic differentiation backpropagates through every step of the evolution to compute the exact gradient of any final-state observable with respect to a parameter:

the gradient that powers inference
$$ \frac{\partial\,\mathcal{O}\big(\psi(t_{\mathrm f})\big)}{\partial m} \;=\; \text{reverse-mode AD through the entire split-step trajectory}. $$

This $\partial\mathcal{O}/\partial m$ — the sensitivity of a large-scale observable to the boson mass — is what drives gradient-based and simulation-based inference. The forward solver and the inverse solver are the same code, run in two directions.

why it matters

GPU-resident JAX gives spectral-accuracy forward physics and exact gradients for free. The cost is the uniform grid — which is exactly the limitation GAMER's adaptive mesh removes. GAMER (forward, resolves cores) ↔ JAXiON (inverse, infers m).

Lane · AMR · ELBDM · small scales, forward

The GAMER lane — resolving the cores.

Where JAXiON's uniform grid can't reach. GAMER evolves the same fuzzy dark matter on an adaptive mesh (ELBDM) — the forward "truth" that resolves solitonic cores, and the source of the core–halo physics the JAXiON inverse problem is calibrated against. Each result below is a statement, its evidence, and an honest status.

Code GAMER · ELBDM Boxes 2 Mpc/h · 20 Mpc/h (zoom) Method Schive 2014 + Chan 2025 zoom
validated in progress honest gap

The GAMER cosmic web (AMR ELBDM)

✓ forward run

The same wave dark matter, evolved on an adaptive mesh. GAMER's ELBDM solver grows the cosmic web from a Gaussian field, refining cells where the wavefunction is densest. This is the forward run whose densest peaks are then fit for solitons below.


Genuine Schive solitons

✓ validated

The densest GAMER cores are real Schive solitons, not numerical artifacts. Fitting the Schive (2014) profile gives clean fits (residuals < 2.5%) and the soliton scaling holds: r_c ∝ ρ_c^−0.20 (Schive predicts −0.25), across 3 seeds.

core–halo · 3 seedsGAMER soliton cores — r_c ∝ ρ_c scaling
core-halo / soliton scaling
3 seeds at z = 6.12; r_c ∝ ρ_c^−0.199 ± 0.020 vs Schive −0.25; residuals 0.2–2.5%. Source: amr/corehalo/corehalo_3seed.png
3 seeds, z = 6.12
r_c = 0.20 – 0.26 kpc
ρ_c–M_halo corr r = +0.72

2 Mpc full analysis — solitons confirmed across 94 halos

✓ validated · 3 boxes

Genuine Schive solitons confirmed in 3 independent FDM cosmological boxes (94 halos). The internal soliton scaling holds — r_c ∝ ρ_c^p with p = −0.199 (Schive −0.25) — the convention-free M_c–r_c soliton consistency lands at 0.81 (vs Schive 1.0), and every core is ≥ 7.6 cells across at its finest level (median ~20). These cores are real wave solitons, not mesh artifacts.

core–halo · 94 halos2 Mpc core–halo population (3 boxes)
2 Mpc core-halo population
94 halos across 3 seeds, M_halo ≈ 1.8×10⁹ – 9.4×10¹⁰ M⊙. The soliton cores populate the core–halo plane cleanly. Source: amr/twompc_full/fig1_core_halo.png
soliton scalingr_c ∝ ρ_c^p internal soliton scaling
soliton scaling r_c vs rho_c
p = −0.199 ± 0.020 vs Schive's −0.25 — the wave-soliton invariant ρ_c r_c⁴ ≈ const holds. Source: amr/twompc_full/fig3_soliton_scaling.png
Schive consistencyFixed-mass Schive M_c–r_c consistency
Schive consistency
The convention-free internal M_c–r_c soliton check lands at 0.81 (Schive Eq 3 = 1.0) — the decisive fixed-mass consistency test. Source: amr/twompc_full/fig6_schive_consistency.png
resolutionCells-per-core — every soliton resolved
cells per core resolution
All 94 cores ≥ 7.6 cells (median ~20, max ~46); none below 5 cells. The cores are genuinely resolved, not single-cell spikes. Source: amr/twompc_full/fig5_resolution.png
94 halos, 3 boxes
r_c–ρ_c p = −0.199 (Schive −0.25)
M_c–r_c consistency 0.81
all cores ≥ 7.6 cells

Core–halo slope M_core ∝ M_halo^(1/3)

analysis in progress

The 2 Mpc box validates the solitons but is too narrow to pin the slope. Over only ~1.7 dex of halo mass the 3-seed fit gives a slope a = 0.04 ± 0.13 — consistent with 0, unable to confirm Schive's 1/3. The cause is geometric: too short a lever arm. The fix is a 20 Mpc zoom-in campaign for ≥3 dex of mass range.

Core–halo slope — ANALYSIS IN PROGRESS (20 Mpc campaign running). The 20 Mpc zoom-in campaign is running to supply the high-mass end (10^10.5–10^12 M⊙ halos with resolved cores). No final slope chart yet — the converged relation drops into the bridge with no code change. This is the pending headline.

FDM-vs-CDM halo mass function

qualitative · box-limited

The ψDM high-mass suppression signature is visible — qualitatively. A matched FDM/CDM pair (same Gaussian field, same finder): CDM concentrates into one dominant ~2.2×10¹¹ M⊙ halo; FDM spreads its mass into 6–10 intermediate clumps with nothing above 8×10¹⁰. Quantitative needs a bigger box.

HMFFDM (m = 8×10⁻²³ eV) vs CDM halo mass function
halo mass function
Honest: N<5/bin, large Poisson errors; FDM and CDM don't share a mass bin. A real suppression curve needs ≥10–15 Mpc/h and multiple CDM realizations. Source: amr/hmf/hmf.png

20 Mpc zoom-in campaign — Stage 1 catalog

running · z≈4

The high-mass lever arm is being built now. Stage 1 of the 20 Mpc campaign identifies the halo catalog that Stage 2 will zoom and resolve. The current dump catalogs 150 halos in a 20 Mpc/h box at z≈4, spanning ~7.4×10⁸ – 1.5×10⁹ M⊙ — the seed list for the resolved-core run.

stage 1 · catalog20 Mpc/h halo catalog (z≈4, 256³ base)
stage 1 catalog
Stage 1 of 3: 150 halos identified in the 20 Mpc/h box, peak/mean ≈ 6.2. Stage 2 zooms these cores; Stage 3 fits the slope. Source: amr/stage1_catalog/catalog_z4_plot.png

GAMER → JAXiON bridge

✓ closure passes

The two lanes connect end-to-end and the closure test passes. Paint the GAMER core–halo relation onto JAXiON's differentiable halos, build the large-scale observable, run the validated mass-inference engine — injected m recovered to ~1.2% within 2σ (~21 s wall).

bridgeGAMER → JAXiON bridge prototype (paint → observable → infer)
bridge prototype
Stage 1: painter reproduces the GAMER relation to machine precision. Stage 2: painting shifts the observable bands by <0.002 dex. Stage 3: SBI closure passes (m=0.85→0.84, m=1.45→1.43). Placeholder: uses the 2 Mpc fit — the converged 20 Mpc relation drops in with no code change. Source: amr/bridge/bridge_prototype.png
GAMER lane · Results. Adaptive-mesh ELBDM reproduction paired with the differentiable JAXiON inverse problem. Figures from run artifacts under s3://fdmsim-artifacts/amr/. In-progress items flagged inline.
Lane · analysis · the reproduction program

The GAMER program — reproducing Schive 2014.

A narrative of a publication-grade reproduction in progress: what we set out to prove, what is already validated, and what is honestly still pending. The pending headline is the core–halo slope.

The goal is to reproduce the fuzzy-dark-matter core–halo relation M_core ∝ M_halo^(1/3) to publication grade with GAMER's adaptive-mesh ELBDM solver — and to feed that relation into the JAXiON inverse problem. The solitons are validated; the slope needs a bigger box, which is running now.

1 · goalReproduce the cube-root core–halo law

Schive et al. (2014) predict that the solitonic core mass scales with host halo mass as M_core ∝ M_halo^(1/3) — the cube-root law that is fuzzy dark matter's structural signature. Reproducing it independently, at publication grade, is the target. GAMER is the right tool because its adaptive mesh resolves the dense soliton core cheaply, exactly where JAXiON's uniform grid fails (see the JAXiON Analysis convergence result).

2 · validateThe solitons are real

In matched 2 Mpc/h boxes across 3 random seeds, the densest GAMER cores fit the Schive (2014) profile cleanly — residuals < 2.5% — and obey the internal soliton scaling r_c ∝ ρ_c^−0.20 (Schive predicts −0.25). The core radii cluster at 0.20–0.26 kpc and central density correlates with host halo mass (r = +0.72). The Results tab carries the fit. This establishes that GAMER's cores are genuine solitons, not mesh artifacts.

validated
The objects GAMER forms are real Schive solitons. Whatever slope we ultimately fit, the cores themselves are trustworthy — the remaining uncertainty is purely statistical (mass range), not physical.

3 · find the wall2 Mpc is too narrow to pin the slope

Fitting M_core vs M_halo within the 2 Mpc boxes gives a slope a = 0.04 ± 0.13 — statistically consistent with zero, and unable to confirm 1/3. This is not a bug: the 2 Mpc box only spans ~1.7 dex of halo mass, far too short a lever arm to measure a slope against the intrinsic core-mass scatter. The same limitation shows up in the bridge prototype, where painting the 2 Mpc relation onto 12 halos and re-fitting under realistic scatter recovers an over-constrained slope — a direct echo of the narrow mass span.

honest gap
The 2 Mpc box validates the solitons but cannot constrain the slope. Confirming M_core ∝ M_halo^(1/3) requires ≥3 dex of halo mass — a fundamentally bigger box. This is the pending headline of the entire GAMER lane.

3b · the full 2 MpcWhat it settles, and what it can't

The completed 2 Mpc analysis (94 halos, 3 boxes) draws a sharp line between what is now settled and what remains untestable at this box size. Settled: the solitons are real and the fixed-mass Schive consistency holds (Results). Not settled: the core–halo slope itself. The stacked fit gives β = 0.04 ± 0.13, statistically consistent with zero — because the 94 halos span only 1.71 dex of halo mass, whereas resolving Schive's cube-root law against the intrinsic core-mass scatter needs roughly 3.6 dex of lever arm. This is a geometric limit of the box, not a physics failure — and it is the quantified motivation for the 20 Mpc campaign.

slope honestyCore–halo slope β over only 1.71 dex of mass
core-halo slope honesty
β = 0.04 ± 0.13 — consistent with 0, cannot confirm 1/3. The lever arm (1.71 dex) is far short of the ~3.6 dex the slope needs. Source: amr/twompc_full/fig2_slope_honesty.png
core-mass functionCore-mass function & soliton-to-halo fraction
core mass function and fraction
Core masses cluster at log M_c ≈ 8.1 ± 0.5; the soliton-to-halo mass fraction decreases with halo mass (slope ≈ −0.96), the qualitative Schive trend — but the narrow mass range keeps it qualitative. Source: amr/twompc_full/fig4_cmf_fraction.png
quantified motivation for 20 Mpc
2 Mpc validates the solitons and the fixed-mass Schive consistency, but the core–halo slope β = 0.04 ± 0.13 is not testable here — it needs ~3.6 dex of halo mass and the box delivers only 1.71. This is exactly the lever arm the in-progress 20 Mpc zoom-in campaign (below) is built to supply.

4 · scale upThe 20 Mpc zoom-in campaign

The fix is a three-stage 20 Mpc/h zoom-in campaign for the lever arm the 2 Mpc box lacks:

1Stage 1 — catalog. Evolve a 20 Mpc/h box and identify the halo catalog. Done / running: a z≈4 dump catalogs 150 halos (7.4×10⁸ – 1.5×10⁹ M⊙) — the seed list. The campaign is currently mid-Stage-1, evolving toward lower redshift. (Catalog plot in Results.)
2Stage 2 — zoom cores. Re-simulate the catalogued halos with deep AMR refinement so each soliton core is resolved across the full mass range. Pending.
3Stage 3 — fit the slope. Fit M_core vs M_halo over ≥3 dex and compare to 1/3. Pending — this is the result that closes the lane.

5 · connectThe bridge to JAXiON

The reproduction is not an end in itself — its product feeds JAXiON's inverse problem. The bridge paints the GAMER core–halo relation onto JAXiON's differentiable halos, builds the large-scale observable, and runs the validated mass-inference engine. The closure test passes: injected m=0.85 recovers to 0.84 (1.2%), m=1.45 recovers to 1.43 (1.3%), both within 2σ, in ~21 s wall. The painter reproduces the input relation to machine precision and the cores are sub-grid, so painting shifts the large-scale observable bands by <0.002 dex — they carry the mass signal cleanly.

the arc, in one line
Goal: reproduce M_core ∝ M_halo^(1/3) validated GAMER solitons (residuals <2.5%) found 2 Mpc too narrow to fit the slope launched the 20 Mpc zoom-in (Stage 1 catalog at z≈4, Stages 2–3 pending) built the bridge that hands the relation to JAXiON (closure ~1.3%). Done: solitons + bridge. Pending: the slope.
Lane · technique · how the AMR solver works

The GAMER method — adaptive-mesh ELBDM.

GAMER solves the same Schrödinger–Poisson system as JAXiON, but on a patch-based, block-structured adaptive mesh with finite differences. Refinement concentrates resolution exactly on the soliton core — the feature a uniform grid cannot afford.

ELBDM = Extremely Light Bosonic Dark Matter: the Schrödinger–Poisson wavefunction evolved on a fixed Eulerian mesh, but one that adapts its resolution in space and time.

Same equations, different discretisation

The physics is identical to JAXiON — ρ = |ψ|², gravity sourced by the overdensity, the field feeling the potential:

Schrödinger–Poisson (ELBDM)
$$ i\hbar\,\frac{\partial\psi}{\partial t} \;=\; -\frac{\hbar^{2}}{2m}\nabla^{2}\psi \;+\; m\,\Phi\,\psi, \qquad \nabla^{2}\Phi \;=\; 4\pi G\big(|\psi|^{2}-\bar\rho\big). $$

The difference is how the operators are applied. Where JAXiON multiplies by $-k^{2}$ in Fourier space (spectral, uniform), GAMER uses a finite-difference Laplacian on a hierarchy of nested grid patches.

The patch-based AMR hierarchy

The domain is tiled by a coarse root grid. Wherever a refinement criterion fires, GAMER overlays a finer patch with half the cell size, and this nesting recurses: each level ℓ has $dx_{\ell} = dx_0 / 2^{\ell}$. Refinement is triggered by:

1Density threshold (OPT__FLAG_RHO): refine any cell whose density exceeds a level-dependent threshold — solitonic cores, being the densest features, refine to the deepest levels.
2Löhner error estimator: refine where the normalised second derivative of the field is large — i.e. where ψ has sharp gradients and a coarse mesh would lose accuracy.

The payoff: the fine mesh exists only where the core is, so resolving a 0.2 kpc soliton inside a Mpc box costs a small fraction of what a uniform grid at that resolution would (which would be the hundreds-of-TB machine of the JAXiON convergence result).

The wave scheme and the timestep wall

On each patch the kinetic term uses a 4th-order finite-difference Laplacian and the update is done as a phase rotation of the complex field (a finite-difference analogue of the split-step propagator). Because the wave operator must resolve the de Broglie oscillation, the stable timestep scales as the square of the cell size:

wave-scheme CFL limit
$$ \Delta t \;\lesssim\; \frac{m}{\hbar}\,\frac{dx^{2}}{\,\text{const}\,}\;\propto\; dx^{2}. $$

This $\Delta t \propto dx^{2}$ is the notorious low-redshift timestep wall: as structure collapses and the finest levels reach very small dx, the timestep collapses quadratically and the run grinds down. To beat it in the high-z, smooth, fluid-like regime, GAMER can switch to a hybrid GRAMFE spectral scheme (a Gram–Fourier extension) that relaxes the timestep constraint where the field is well-resolved — accelerating the early evolution while the FD wave scheme handles the sharp collapsed cores.

Gravity: SOR / multigrid + root-grid FFT

Poisson is solved by FFT on the periodic root grid (fast, global) and by SOR or multigrid relaxation on the refined patches (local, with boundary values interpolated from the parent level). Finer levels are sub-cycled in time — a level-ℓ patch takes more, smaller steps per coarse step, since its CFL timestep is shorter — and the levels are synchronised at coarse-step boundaries.

Forward-only — and that is the point

Unlike JAXiON, GAMER is not differentiable: the AMR bookkeeping (patch creation/destruction, interpolation, sub-cycling) is not a clean autodiff graph. That is by design. GAMER's job is not inversion — it is to resolve the cores from first principles and produce the converged core–halo relation. That relation is the input the JAXiON inverse problem consumes.

the bridge, restated

GAMER (forward, resolves cores) ↔ JAXiON (inverse, infers m). GAMER pays the adaptive-mesh cost to get the core–halo physics right; JAXiON pays the differentiability cost to invert it. Painting GAMER's relation onto JAXiON's halos and recovering the injected mass to ~1.3% is the round-trip that proves the two codes speak the same physics.

Lane · GRAMFE · spectral-fluid + wave · cluster-scale capability

The Hybrid lane — a validated solver, paused on cost.

A GRAMFE hybrid scheme that runs a fast spectral-fluid solver on coarse levels and switches to the wave solver on refined halos. It is built and validated — the honest status is that its big 40 Mpc cluster run was deprioritized for cost, not because the solver failed. A proven capability, revivable for cluster-scale.

Scheme GRAMFE hybrid Parallel 8-GPU MPI Agreement 8 ppm vs FD
validated paused on cost no science run yet

GRAMFE hybrid solver — VALIDATED capability

✓ validated

The hybrid solver is built and correct. The GRAMFE (Gram–Fourier extension) spectral-fluid scheme reproduces the finite-difference wave solver to 8 parts per million on matched test problems, and it runs under true 8-GPU MPI parallelism — real domain-decomposed multi-GPU, not a single-device proxy. This is a working, validated capability.

what is validated
The hybrid scheme is numerically correct (matches FD to 8 ppm) and genuinely parallel (8-GPU MPI). Nothing about the physics or the implementation is in doubt — what is missing is a completed science run, which is a resourcing decision, not a solver problem.
agreement 8 ppm vs FD
parallelism 8-GPU MPI
target box 40 Mpc cluster
run reached z ≈ 55
No completed science run yet — deprioritized for cost. The 40 Mpc cluster-scale run was launched and reached z ≈ 55, then was paused on ROI grounds: the 20 Mpc zoom-in plus the 2 Mpc validation already span the core–halo slope, so the marginal science of the 40 Mpc box did not justify the cluster cost. The solver is checkpointed and revivable — this is a capability on the shelf, honestly labelled as such.
Hybrid lane · Results. GRAMFE spectral-fluid + wave, validated to 8 ppm against finite differences under 8-GPU MPI. The 40 Mpc cluster science run is deprioritized, not failed — revivable for cluster-scale work.
Lane · analysis · what the hybrid is for

The Hybrid role — why we built it, why we paused it.

The hybrid exists to push fuzzy dark matter to cluster-scale boxes the pure wave scheme cannot afford. Here is what it buys, and the honest ROI call that paused its big run.

GRAMFE is a speed lever for the high-redshift, large-box regime: it runs a fast spectral-fluid solver where the field is smooth, and hands off to the wave solver on refined halos at low redshift where quantum interference forms. We built it for the 40 Mpc cluster lever arm — then paused it because the 20 Mpc headline already constrains the science it would have sharpened.

1 · the bottleneckThe wave scheme is slow at high redshift in big boxes

The finite-difference wave solver (GAMER lane) carries a Δt ∝ dx² timestep wall: in a large box at high redshift the field is smooth and fluid-like, yet the wave scheme still pays the full quantum-oscillation cost everywhere. For a 40 Mpc cluster box that early evolution dominates the wall-clock budget.

2 · the leverSpectral-fluid where it is smooth, wave where it is sharp

GRAMFE runs a spectral local-fluid (Madelung) solver on coarse levels, which is far faster at high redshift because it does not resolve every de Broglie oscillation. As structure collapses and refined halos form at low z, the scheme switches to the wave solver exactly where quantum interference forms — the regime where the fluid description breaks and the wave physics matters. You pay the wave cost only where it buys physics.

what it buys
The hybrid is the only path to a 40 Mpc cluster-scale FDM box at tractable cost — the lever arm that would extend the core–halo measurement to the cluster-mass end and sharpen the FDM-vs-CDM contrast at the largest scales.

3 · the ROI callWhy we paused the 40 Mpc run

The 40 Mpc run was launched and reached z ≈ 55. At that point we made a deliberate, honest call: the 20 Mpc zoom-in campaign plus the 2 Mpc validation already span the core–halo slope the program needs. The marginal science of pushing the 40 Mpc box to completion did not justify its cluster cost — so we deprioritized it for ROI, not because anything broke. The solver is validated and checkpointed.

the honest status, in one line
Built validated to 8 ppm under 8-GPU MPI 40 Mpc run reached z ≈ 55 paused on ROI (the 20 Mpc headline already carries the slope). A proven capability on the shelf, revivable for cluster-scale.
Lane · technique · how GRAMFE works

The GRAMFE method — spectral fluid + switched wave.

GRAMFE = Gram–Fourier Extension. It is a hybrid integrator: a spectral local-fluid scheme on coarse levels and the finite-difference wave scheme on refined levels, with the switch triggered by the onset of quantum interference.

The same Schrödinger–Poisson physics, but solved with two complementary schemes stitched across the AMR hierarchy — fluid where the field is smooth, wave where it interferes.

Two descriptions of one field

The wavefunction admits a Madelung (fluid) form $\psi = \sqrt{\rho}\,e^{iS/\hbar}$, mapping the complex field onto a density $\rho=|\psi|^2$ and a velocity $\mathbf{v}=\nabla S/m$. In this form the dynamics look like a fluid with an extra quantum-pressure term:

Madelung / quantum-pressure form
$$ \partial_t\rho + \nabla\!\cdot(\rho\mathbf{v}) = 0, \qquad \partial_t\mathbf{v} + (\mathbf{v}\!\cdot\!\nabla)\mathbf{v} = -\nabla\Phi + \frac{\hbar^2}{2m^2}\nabla\!\left(\frac{\nabla^2\sqrt{\rho}}{\sqrt{\rho}}\right). $$

Where the field is smooth (high redshift, coarse levels) the fluid form is well-behaved and cheap. Where streams cross and the wavefunction interferes (collapsed halos, low redshift) the Madelung velocity becomes multi-valued and the fluid form fails — that is exactly where the wave form must take over.

Spectral fluid on coarse levels (the GRAMFE part)

On the coarse levels GRAMFE evolves the fluid form with a spectral method. The "Gram–Fourier extension" smoothly extends each non-periodic patch into a periodic super-domain so an FFT can be applied without Gibbs ringing at the patch boundary — giving spectral accuracy on a finite, refined patch.

1Extend the patch field into a periodic buffer via a Gram polynomial fit, killing boundary discontinuities.
2Spectral update the fluid variables on the extended domain with FFT-based operators — high-redshift smooth evolution at a relaxed timestep, free of the wave scheme's $\Delta t \propto dx^2$ wall.
3Restrict back to the physical patch and synchronise with the AMR hierarchy.

The scheme switch — triggered by interference

The hybrid's defining move is where it changes scheme. On refined levels, once the field develops the interference fringes that signal the fluid form's breakdown (multi-valued velocity, density nodes), the solver switches to the finite-difference wave scheme — evolving $\psi$ directly so the quantum interference is captured exactly, at the cost of the $\Delta t\propto dx^2$ timestep on those patches only.

the switch criterion
$$ \text{level } \ell:\quad \begin{cases} \text{spectral fluid (GRAMFE)}, & \text{field smooth (no interference)}\\[2pt] \text{FD wave on } \psi, & \text{interference fringes present}\end{cases} $$

Net effect: the fast fluid solver carries the expensive high-redshift, large-box evolution, and the exact wave solver is spent only on the refined halos at low z where quantum interference forms. That is the lever that makes a 40 Mpc cluster-scale FDM box tractable.

why it matters

GRAMFE is the cluster-scale capability of the program: spectral-fluid speed at high redshift, exact wave physics on the cores. Validated to 8 ppm vs finite differences under 8-GPU MPI — built, correct, and revivable. The 40 Mpc science run is paused on cost, not on the solver.

Lane · GADGET-4 · ΛCDM control · the no-FDM baseline

The CDM lane — the trustworthy control.

A standard cold dark matter N-body run with GADGET-4. Its job is to be the honest no-FDM baseline: the universe with no soliton core, no quantum interference, so every FDM-specific effect can be checked against a control that has none. Reproduces standard cosmology from scratch.

Code GADGET-4 · TreePM Run 256³ validation Cosmology Bolshoi ΛCDM
validated 512³ in progress honest gap

GADGET-4 reproduces standard cosmology from scratch

✓ validated · 256³

The control run recovers ΛCDM structure to within a few percent of theory. A 256³ GADGET-4 box, evolved from 2LPT initial conditions, reproduces the halo mass function within 4% of Sheth–Tormen / Tinker and the matter power spectrum within 3% of linear-theory + nonlinear expectation. This is the trustworthy no-FDM baseline.

HMF · z = 0Halo mass function vs Sheth–Tormen / Tinker
GADGET-4 halo mass function at z=0
Within 4% of the Sheth–Tormen / Tinker analytic mass function across the resolved mass range. Source: gadget4/hmf_z0.00.png
P(k) · z = 0Matter power spectrum vs theory
GADGET-4 matter power spectrum at z=0
Within 3% of the theory power spectrum — the box recovers ΛCDM clustering at z = 0. Source: gadget4/pk_z0.00.png
cosmic web · z = 0Density-slice cosmic web
GADGET-4 cosmic web density slice at z=0
The familiar CDM cosmic web — filaments, knots and voids — with no soliton cores and no interference granularity. That absence is the point. Source: gadget4/slice_z0.00.png
HMF within 4% of Sheth–Tormen/Tinker
P(k) within 3% of theory
grid 256³ validation
512³ publication-grade run IN PROGRESS. A deeper 512³ run is underway to extend the mass function to lower masses and to produce the FDM-vs-CDM small-scale suppression contrast directly — the matched-field comparison that turns this control into a quantitative null. The 256³ validation above is the honest current state.
CDM lane · Results. GADGET-4 ΛCDM control, 256³ validated against Sheth–Tormen/Tinker (HMF, 4%) and theory P(k) (3%). 512³ publication-grade run in progress. Figures from gadget4/.
Lane · analysis · the role of the control

The CDM role — proving which effects are FDM.

A control only earns its keep if it is trustworthy and if it has no FDM degrees of freedom. GADGET-4 ΛCDM is exactly that: a universe with no soliton core, so anything FDM-specific shows up as a difference from it.

The CDM lane is the null hypothesis made concrete. The FDM mass tension, the soliton cores, the small-scale power suppression — each is a claim about a departure from CDM. Without a trustworthy CDM baseline run in the same pipeline, those departures are not clean. GADGET-4 supplies it.

1 · why a controlThe tension is FDM-specific — prove it

The headline FDM mass tension (JAXiON Analysis) lives on a quantity CDM does not have: the soliton core radius. CDM halos have cuspy NFW centres and no core–halo degree of freedom at all — so a CDM twin run cannot produce the tension. Running the same combine machinery against a CDM control returns a null, which is precisely what demonstrates the tension is a property of the FDM model, not an artifact of combining heterogeneous datasets.

the role, stated plainly
CDM has no core, no interference, no quantum pressure. Every FDM-specific signature — solitons, granular heating, the small-scale cutoff, the mass tension — is defined as a difference from this baseline. The control is what makes those differences attributable to FDM rather than to the pipeline.

2 · the setupBolshoi-cosmology ΛCDM

The control uses the standard Bolshoi cosmology so it sits on a well-known reference: matter density Ω_m = 0.27, fluctuation amplitude σ₈ = 0.82, Hubble parameter h = 0.70 (flat ΛCDM). These are the same parameters used in the matched FDM/CDM field comparison, so the only physical difference between the FDM box and this control is the dark-matter model itself.

Ω_m 0.27
σ₈ 0.82
h 0.70
flat ΛCDM

3 · what it underwritesThe FDM-vs-CDM contrast

With the control validated (HMF 4%, P(k) 3%), the in-progress 512³ run will produce the matched-field FDM-vs-CDM suppression curve directly — same Gaussian field, same finder, dark-matter model the only variable. That is the quantitative form of "FDM suppresses small-scale structure", and it requires a CDM baseline this trustworthy to be meaningful.

the arc, in one line
Build a trustworthy ΛCDM control validate it (HMF 4%, P(k) 3%) use it as the null that proves the FDM tension is FDM-specific 512³ delivers the matched FDM-vs-CDM suppression contrast (in progress).
Lane · technique · how GADGET-4 works

The GADGET-4 method — TreePM N-body ΛCDM.

GADGET-4 is a classical collisionless N-body code: cold dark matter as gravitating particles, no wave physics. Gravity by TreePM, initial conditions by 2LPT, halos by FOF/SUBFIND.

Where JAXiON and GAMER evolve a wavefunction, GADGET-4 evolves particles under Newtonian gravity in an expanding box — the standard cold-dark-matter description, with no quantum pressure and no soliton.

Cold dark matter as particles

CDM is modelled as a set of N gravitating macro-particles sampling the dark-matter phase space. They feel only gravity and the cosmic expansion; there is no quantum-pressure term, so structure forms all the way down to the particle resolution — no small-scale cutoff, no core. This is exactly the physics FDM modifies.

Gravity: the TreePM split

GADGET-4 splits the gravitational force into a long-range Particle-Mesh (PM) piece, solved with an FFT on a periodic grid, and a short-range tree piece, evaluated with a hierarchical oct-tree multipole expansion. The PM part is fast and global; the tree part is accurate and local:

Poisson + TreePM force split
$$ \nabla^2\Phi = 4\pi G\,a^2\,(\rho-\bar\rho), \qquad \mathbf{F} = \underbrace{\mathbf{F}_{\rm PM}}_{\text{long-range, FFT}} + \underbrace{\mathbf{F}_{\rm tree}}_{\text{short-range, oct-tree}}. $$

This is the same Poisson source as the wave codes — but the field is sampled by particles, not a wavefunction, so there is no $|\psi|^2$ interference structure in the density.

Initial conditions: 2LPT

The box is seeded at high redshift with second-order Lagrangian perturbation theory (2LPT): particles are displaced from a uniform grid according to the ΛCDM linear power spectrum, with the 2nd-order correction that removes the transients a 1st-order (Zel'dovich) start would carry. Matching the same Gaussian field to the FDM box is what makes the FDM-vs-CDM comparison controlled.

12LPT ICs from the ΛCDM linear P(k) at the start redshift — the validated P(k) (Results) confirms the seed field is correct.
2TreePM evolution to z = 0 under Newtonian gravity in comoving coordinates with the scale factor a(t).
3FOF / SUBFIND halo finding: friends-of-friends groups, then SUBFIND for gravitationally bound substructure — the catalog behind the validated mass function.

Halos: FOF then SUBFIND

Halos are identified with friends-of-friends (a linking-length percolation that traces the cosmic web's overdense regions) and then decomposed into bound subhalos with SUBFIND. The resulting catalog is what the halo mass function (Results) is built from and what underwrites the FDM-vs-CDM count comparison.

the control, restated

GADGET-4 (ΛCDM N-body) is the null. Same cosmology, same field, same finder as the FDM runs — but no wave physics. It has no soliton and no interference by construction, so it is the baseline that makes every FDM-specific effect, including the mass tension, attributable to the model rather than the method.

Project-wide · every measured number, sourced

The ledger.

Single source of truth — every result across JAXiON · GAMER · Hybrid · CDM plus the differentiable-AMR, tension and inference threads. Each source links to its evidence chart (▸) so every entry is verifiable. Mirror of context/RESULTS_LEDGER.md.
confirmed / passed inconclusive / unconverged in progress / pending method validated ▸ = open evidence

⛔ Two core–halo slopes — never conflate

JAXiON uniform gives β = 0.30 ± 0.03 (real, but unconverged — cores never plateau). GAMER 2 Mpc AMR gives β = 0.035 ± 0.13 (inconclusive — box too small). Neither is the headline — the decisive slope is pending the GAMER 20 Mpc AMR run (~3 decades of lever arm). Until then, "we reproduced β = ⅓" is not a claim we make.

JAXiON — uniform-grid spectral (Mocz reproduction) 512³ → 2048³ · box 1 h⁻¹Mpc · m₂₂=2.5
ResultValueStatusEvidenceNote
Core–halo slopeβ = 0.30 ± 0.03unconvergedAnalysis tab ▸CI 0.30–0.34; n=56 (live) / 48 (reports) / 46&28 by r_c-gate. Consistent with ⅓ but resolution-limited.
ρ_c convergence series44k→69k→109k→228knever plateausjaxion_convergence ▸512³→1024³→1536³→2048³ — the convergence-impossibility.
Boson-mass sweep0 / base / 17 / 60confirmedAnalysis tab ▸halos by z=7 at m₂₂ = 1 / 2.5 / 5 / 10 — heavier boson ⇒ more structure.
Power spectrum P(k)measuredconfirmedAnalysis tab ▸1536³; matches expected shape.
Mass / energy conservation|ΔL/L| = 0 · 301 framesmachine precisionAnalysis tab ▸spectral split-step is symplectic.
GAMER — ELBDM AMR (resolving solitonic cores) 2 Mpc (3 seeds) done · 20 Mpc in progress
ResultValueStatusEvidenceNote
Genuine Schive solitonsr_c ∝ ρ_c−0.20; corr 0.81confirmedcorehalo_3seed ▸cores resolved; M_c–r_c consistency across 3 seeds.
Core–halo slope (stacked 3-seed)β = 0.035 ± 0.129inconclusivecorehalo_3seed ▸n=94; consistent with 0; 1.5-dex range too narrow.
Core–halo slope (single-seed)β = −0.17 ± 0.21inconclusivecorehalo ▸n=45; verdict in file: "bigger box needed".
Core–halo scatter0.50 dexmeasuredcorehalo_3seed ▸
20 Mpc Stage 1 (the headline)z ≈ 4.5 → z = 4in progresscatalog_z4 ▸→ catalog → Stage 2 zoom → Stage 3 slope fit. The decisive ⅓ test.
20 Mpc prelim catalog (z~6)resolution gate CLEANde-riskedprelim_z6 ▸GO/NO-GO passed early.
Hybrid — GRAMFE spectral-fluid + wave scheme validated · 40 Mpc dropped (cost)
ResultValueStatusEvidenceNote
HYBRID scheme supportGRAMFE + wave wiredvalidatedchart pending ⚠configure.py + GramFE solver sources + LSS_Hybrid test problem present (hybrid40_proof.md).
Hybrid vs FD (bulk, matched-z)large-scale agreementvalidatedchart pending ⚠data in hybval_z9/ (seeds 1/1003/7777, z=9) — not yet plotted.
Deep-core ρ_c (hybrid vs FD)inconclusivedepth-mismatchchart pending ⚠refinement-depth mismatch, NOT a solver failure.
40 Mpc cluster productionprovisioned → droppeddropped (cost)decision (no chart)cluster lever-arm judged unnecessary; headline covered by 2 + 20 Mpc.
CDM — GADGET-4 (ΛCDM control) 512³ production · Bolshoi · L=100 h⁻¹Mpc
ResultValueStatusEvidenceNote
Production run512³ (1.34×10⁸ particles)in progressslice ▸confirmed at Sync-Point 0 = 512³ exactly. Current run (256³ was validation only).
256³ validation (Phase 0/1)all blind gates PASSpassedslice ▸
Power spectrum P(k) @ z=0vs linear × D(z)²passed (256³)pk_z0 ▸512³ re-test pending run completion.
Halo mass function @ z=0vs Sheth–Tormen / Tinkerpassed (256³)hmf_z0 ▸512³ overlay (convergence.py) pending.
Differentiable AMR — research thread Phases 0–2 GO · Phase 3 gated
ResultValueStatusEvidenceNote
Phase 0 kill-test (1D)gradients flow; m recoveredGOp0_gradients ▸usable ∂obs/∂m through soft refinement.
Phase 1 (3D soliton)r_c/dx ≥ 8, gradients validGOp1_3d ▸converged core uniform JAXiON can't reach.
Phase 2 — ∂obs/∂m end-to-endAD/FD → 1 (unif 0.999, AMR 1.011)verifiedp2_grad ▸at h=1e-3, through a cosmological collapse.
Phase 2 — inversion for mm = 1.0346 (true 1.05)bias −1.5%p2_inversion ▸5 iterations.
Phase 3 blockerfine-block ρ_c 36 vs ref 180coupling issuep2_field ▸scheme/coupling, NOT the gradient, NOT memory.
FDM mass tension + m-inference triad the original science
ResultValueStatusEvidenceNote
Tension (published likelihoods, combined)8.7σmeasuredmoneyplot ▸v2 — proper product of published constraints.
σ_CH scatter resolutiondoes NOT resolve tensionmeasuredsigma_ch ▸σ_CH≈0.2 dex (Chan+2022) marginalized.
Obs A — dwarf coresUPPER: m₂₂≈1 (<1.1 @95%)reproducedobs_a ▸Schive / Marsh&Pop / Chen / GM.
Obs B — Lyman-αLOWER: m₂₂ > 20 (2σ)reproducedobs_b ▸Iršič 2017.
Obs C — satellite countsLOWER boundreproducedobs_c ▸
Sign-flip (A-upper vs B/C-lower)= origin of the tensionestablishedmoneyplot ▸
DATA LOCATIONS
S3 · s3://fdmsim-artifacts-297904677595/ → amr/corehalo/ (fits) · lab/runs/ + lab/harvest/ (JAXiON 128–2048 logs) · gadget4/ · hybval_z9/ · analytics.json · reports/
On-box · /opt/gw/stage1_20mpc (Stage 1) · /opt/gw/diffamr_p* · /opt/gw/tension_v2 · /opt/gadget4/runs/bolshoi512
Master text · context/RESULTS_LEDGER.md (read first, update after every analysis)
Evidence coverage · 23/26 entries linked · gap: Hybrid validation chart not yet plotted (hybval_z9 data exists)
Last updated · 2026-06-28 · headline (20 Mpc AMR slope) pending
Project-wide · spans JAXiON + GAMER

The literature.

Project-wide section — the fuzzy-dark-matter papers both codes build on.
Project-wide · spans JAXiON + GAMER

The encyclopedia.

Project-wide section — the physics behind both the spectral and AMR codes.
Project-wide · spans JAXiON + GAMER

The reports.

Project-wide section — written summaries of the whole program.