pbhgr · docs/v1_devlog.md · Markdown
Журнал
V1 development log — areal–CMC spherical Einstein–Vlasov (Stage A step 2)
Журнал ведётся на английском языке в репозитории pbhgr (docs/v1_devlog.md). Записи идут по времени добавления; краткая сводка по-русски — на странице «Результаты».
Started 2026-09-24. Code: pbhgr/cosmo_ev.py (solver), pbhgr/cosmo_id.py (initial data), pbhgr/ltb.py (exact LTB),
csrc/kernels.c (mass_integrate_cmc, shell_constraints), scripts/v1_ladder.py (validation ladder),
scripts/debug_*.py (diagnostics). Runs in runs/v1/.
Formulation (as in brief_verification/verification_and_plan.md, Appendix B)
ds² = −α²dt² + A²(dR + βdt)² + R²dΩ², slicing K = −3H(t), FLRW exterior α = A = 1, β = −HR. Fully constrained: K_θ from the momentum constraint (cumulative momentum), m by the R²-weighted cell integration of the Hamiltonian constraint, 1/A² = 1 − 2m/R + R²K_θ², α from the K-evolution equation (tridiagonal BVP, α′(0) = 0, α(R_out) = 1). Particles carry (x = R/a, P = normal-frame radial momentum, L², N, τ); RK4; grid uniform in x on [0, 5 r_m]. Initial data: Yoo et al. 2026 eqs. (3.4)–(3.11) in spherical symmetry (ε_i = 0.2), cold shells.
Lessons (each cost a failed test)
- Super-horizon conditioning. 1/A² = 1 − 2m/R + R²K_θ² is a difference of terms of size (HR)² (≈ 3750 at the box edge at t_i). Any relative error d in m or K_θ becomes d·(HR)² in A. Random (stratified) sampling, random peculiar momenta, cloud-in-cell deposition onto cell centres, midpoint-rule weights and a piecewise-constant source inside cells all failed for this reason (A errors of 10⁻³–10⁻¹, spurious lapse gradients, runaway momenta). A coherent peculiar velocity P relative to the CMC normals at H R ≫ 1 is itself a violent perturbation (δE_shell ≈ P·HR·…), not a small one. Yoo et al.'s regular particle load exists for the same reason.
- What works: quiet start (particles at volume midpoints of equal sub-intervals, weights from the spline antiderivative of dN/dR), cumulative deposition (running sums over sorted shells interpolated linearly in v = x³ and differenced at cell edges; exact for uniform density, continuous as shells cross edges), exact shell volumes (4π/3)(R³₊ − R³₋), R²-weighted sources inside cells for the mass ODE, 8 RK4 substeps per cell (the mass ODE is stiff at H R ≫ 1: deviations relax on the length 1/(4πρR)).
- Nearest-cell (cell-sum) deposition with 4 shells per cell is exact at t = t_i but jumps by 25 % per cell when a shell crosses an edge; the lapse solve turns that into a central bump that kicks the innermost shells outward (errors of 150 % at r < 0.2 r_m). Cumulative deposition removed it (unused-equation residual 0.9 → 3×10⁻⁴).
- A half-shell (shell-code) mass convention has an O(w²(HR)²) discreteness error at the super-horizon start and is
worse there than the grid integration; kept in
shell_constraintsfor later sub-horizon use. - The unused-equation residual (evolution equation of A) is a useful monitor only with the cumulative deposition; with cell sums it is dominated by shells crossing edges between the two solves.
Validation status (24–25 Sep 2026)
| Test | Setup | Result |
|---|---|---|
| 1 FLRW to 0.3 t_H | K = 1000, 4 shells/cell, x_out = 5 r_m | max |
| ID vs exact LTB | μ = 0.3 | m and E per shell agree to 10⁻⁶ (≤ 5×10⁻⁶ p95), total mass excess 0 |
| 2 LTB cycloid to 0.81 t_C(0), μ = 0.3 | K = 2000 / 4000, 4 shells/cell | median |
| 3 AH, μ = 0.5 | K = 2000, 4 shells/cell | first trapped surface on the CMC slice at t = 21.5 t_H (LTB central singularity 7.5 t_H) at x = 0.36 r_m, M_AH = 1.12 M_H(t_k) (shells initially inside 0.79 r_m); then growing (1.95 M_H at 27.8 t_H). Central lapse 10⁻³ by then: CMC singularity avoidance delays the coordinate time at which the slice meets the trapped region. Invariant check (shell proper time at the AH vs LTB t_AH) in progress |
Open items
- Horizon-time definition must be gauge-invariant for the deadline classification: record the proper time of the shells at the AH and the exterior time of the slice; compare with LTB t_AH(r). Yoo's 3D dust runs find the AH at 11–12 t_H for μ = 0.3–0.5 in their slicing (2.20); the CMC lag here is larger. Consider a second slicing later.
- Innermost-bin prediction accuracy (label interpolation) — refine the LTB M_rest(r) table or use analytic inversion.
- Time-step limiter (dt ≤ 0.02 t) convergence check; compiled pusher for 10⁵–10⁶ shells.
- Next physics: μ = 0.3 through the caustic (LTB globally naked) — does the Vlasov evolution trap later? Then the causal-bound runs μ = 0.36, 0.40 (LTB: first protected trapped sphere at 0.51 r_m / 0.37 r_m by proper time 10.1 / 8.6 t_H).
25 Sep: stretched grid, particle time step, adaptive mass substeps
CosmoGrid(stretch=s): x_j = x_out sinh(s j/K)/sinh(s); K = 2000, s = 4 gives dx_min = 3.7×10⁻⁴ r_m at the centre and dx_max = 0.01 r_m outside. FLRW stays exact (10⁻⁸); LTB μ = 0.3 to 0.81 t_C(0): median 3.9×10⁻⁵ (as K = 4000 uniform), inner bins 4×10⁻⁶–8×10⁻⁵, in 1207 steps / 71 s.- Time step is now particle-based (cfl × cell width / shell speed, plus dt ≤ 0.02 t and dt ≤ 0.05/|αK_R|); the constraint solve is elliptic so the grid light speed imposes nothing. 3× fewer steps than the light-speed CFL.
- The mass ODE is stiff where 4πρR·ΔR ≳ 1 (large outer cells at t_i); the kernel now chooses the RK4 substep count per cell so that h·4πρR ≤ 0.3. Without it the stretched grid's outer cells hit the RK4 stability limit (A error 1.7×10⁻²).
- Per-shell trapping records: τ_trap (shell proper time at first 2m/R ≥ 1 with K_θ > 0) and the coordinate time of detection. 2m/R is a scalar at the shell's event, so τ_trap is slicing-independent as long as the slice reaches the event (α > 0). The invariant horizon curve τ_trap(label) is compared with LTB t_AH(r); μ = 0.5 first detection agreed exactly (11.20 vs 11.20 t_H). Deadline classification will use τ_trap of the outer (single-stream) shells, whose proper time equals exterior cosmic time, not the coordinate time of the CMC slice (which lags by up to 10 t_H).
- μ = 0.3 (LTB globally naked), uniform grid: a trapped surface formed at proper time 9.12 t_H (LTB t_AH of the shell labelled 0.18 r_m: 9.12) with M = 0.014 M_H inside one grid cell — the core was unresolved and frozen, so this is not yet a Vlasov result; resolution study on the stretched grid in progress.
25 Sep: causal-bound test passed; cold caustic freezes the CMC lapse
- μ = 0.36, s = 4, K = 2000, cold (L = 0): 3496 shells trapped, labels 0.095–0.875 r_m, τ_trap / t_AH^LTB = 1.0001 (p5–p95 0.9999–1.0027) in every label bin, including the protected shells beyond r₁ = 0.51 r_m (LTB t_AH = 9.95–14.2 t_H). The causal-bound pass criterion (horizon at r ≥ 0.51 r_m by proper time 10.1 t_H) is met exactly. Coordinate lag of the CMC slice at detection: median 7.2 t_H.
- The 1854 shells inside the first horizon (labels < 0.137 r_m) have proper times 8.06–8.17 t_H at detection while the LTB caustic is at 8.03 t_H: the core froze 0.03 t_H after the crossing (fraction re-expanded beyond the horizon radius: 0). The CMC lapse collapses on the cold radial caustic — a genuine ρ ∝ 1/R² central singularity for L = 0 — so the post-caustic dynamics are never followed and every later trapping is the dust (LTB) result. Same at μ = 0.3 (LTB globally naked): first trapping at labels 0.18 → 0.16 → 0.11 r_m for dx_min = 2.5×10⁻³ → 3.7×10⁻⁴ → 1.8×10⁻⁴ r_m, each at its LTB t_AH: the sequence converges toward the caustic, not away from it.
- Consequence: the cold limit must be regularized physically (velocity dispersion), as the plan and the memo require; the cold L = 0 runs are LTB reproductions with a frozen core, valid only for the protected region (r > r₁).
- Dispersion injection implemented (
inject_t,inject_sigma,inject_xmax): isotropic Maxwellian in the shell frame added at t = 1 t_H (near entry; at the super-horizon start any random momentum is a violent perturbation, see lesson 1) to shells with x < 2 r_m; radial part into P, tangential into L². Runs with σ = 10⁻³ at μ = 0.36 and 0.30 in progress; the test is whether the core's proper time advances through the crossing and whether the early trapping (labels < r₁) disappears while the protected trapping (μ = 0.36, r > r₁) survives.
25 Sep: what happens at the cold caustic (μ = 0.36, s = 4, K = 2000, scripts/debug_caustic.py)
Shell trace through the crossing (proper time of the inner shells 7.95 → 8.06 t_H, LTB caustic 8.03):
- The innermost shells (labels ≤ 0.03 r_m) cross the centre at low speed and exit slowly (P ≈ +0.02–0.08): their enclosed mass has already left with the shells that crossed before them, so they fall through a nearly empty centre.
- The next shells (labels 0.06–0.12 r_m) arrive relativistically (P ≈ −0.7 to −4) and are decelerated on exit by the mass that has accumulated inside them; the central compaction 2m/R rises 0.3 → 0.63 → 0.88 → 1.16 within 0.05 t_H of proper time. The CMC lapse collapses after the compaction rises (0.35 → 0.036 → 6×10⁻⁷), i.e. the freeze is the consequence of a genuine trapped core (multi-stream pile-up), not its cause.
- The continuum single-passage flux criterion (2m/R = 4ṁ/v with ṁ the LTB arrival rate,
4 mdot≤ 0.44 inside r_m for μ = 0.36, ≤ 0.32 for μ = 0.3, ≤ 0.78 for μ = 0.5) would not trap; the pile-up of decelerated outgoing shells does. - The trapped core at first detection: 0.008–0.010 M_H(t_k) (labels ≈ 0.11–0.16 r_m) at τ ≈ t_C(0) + 0.05–0.2 t_H, then growing along the LTB apparent-horizon curve (all later shells trap at their LTB t_AH to 10⁻³).
- A dispersion of σ = 10⁻³ at entry changes nothing: the pericentres it implies (≈ 0.07/k for the inner shells) are 40× smaller than the Schwarzschild radius of the mass arriving with them (≈ 2.8/k). The regulator only matters once L/p exceeds 2m of the simultaneously arriving mass, roughly σ ≳ 0.03–0.05 at entry for μ = 0.36. Run with σ = 0.03 in progress. Convergence of the first-trapping label with resolution (0.18 → 0.16 → 0.11 r_m for dx_min = 2.5×10⁻³ → 3.7×10⁻⁴ → 1.8×10⁻⁴ r_m) is not yet established; K = 8000, s = 6 (1.9×10⁻⁵ r_m) in progress.
- Reading for the programme: with a small physical dispersion, spherical cold collapse at μ = 0.3–0.36 forms a small black hole right at the caustic, which then accretes along the LTB curve; "globally naked in LTB" (μ = 0.30) does not prevent this. The threshold question therefore moves to lower μ (0.05–0.15, where C_ta ≈ 0.88 μ is small and the pile-up may virialize) and to the σ-dependence; both are the next runs.
25 Sep: σ = 0.03 at μ = 0.36 and cold μ = 0.10
- μ = 0.36, σ = 0.03 at entry (x < 2 r_m): still traps at the caustic, now as a puffier core: first detection at coordinate 12.8 t_H, R_AH = 17/k, M_AH = 8.5 = 0.046 M_H (labels < 0.185 r_m, 2305 shells, frozen at τ ≈ 8.08); earliest τ_trap = 8.06 t_H for label 0.24 r_m (before that label's LTB t_AH: the core traps as a whole); trapping curve τ_trap/t_AH^LTB = 1.003 (p5–p95 0.96–1.05).
- μ = 0.10, cold: same mechanism. LTB t_C(0) = 25.14 t_H; earliest τ_trap = 25.39 (label 0.053 r_m); first detection at coordinate 28.3 t_H with M_AH = 1.31 = 0.007 M_H (labels < 0.145 r_m); the horizon then grows along the LTB curve (τ_trap/t_AH^LTB = 0.996–1.005 for all labels to 0.74 r_m), reaching 0.41 M_H by 54 t_H. Interior gauge failure (u < 0) grows to 100–230 cells inside 0.005 r_m; the AH sits at 0.03 r_m, so the exterior is unaffected, but excision is now needed for long runs.
- Interim reading: for cold data the spherical collisionless collapse traps at the central caustic for every μ tried (0.10, 0.30, 0.36, 0.50), at proper time ≈ t_C(0) = 0.589 e^{3μ} μ^{−3/2} t_H, with a first horizon of 10⁻²–10⁻¹ M_H that then accretes along the LTB apparent-horizon curve. This is the brief's F4 regime (no spherical floor) with the deadline set by the central caustic rather than the r_m shell (t_C(0) ≈ 0.22 t_C(r_m) at small μ, versus the 0.735 t_C(r_m) horizon times of Yoo's triaxial runs). Caveats before this becomes a result: resolution convergence of the first trapping (K = 8000, s = 6 pending), the dispersion dependence at low μ (σ = 0.03 at μ = 0.10 running), and the regular-centre discretization (all shells with 2m(label) < R_c cross unresolved).
25 Sep: two bugs caught by new tests; the corrected μ = 0.36 / 0.10 picture
- Mirror-side sign bug (fixed). During RK4 stages a shell that has crossed the centre carries x < 0; the RHS used
P as the outward momentum for those stages, so the velocity and the lapse-gradient force had the wrong sign on the
mirror side and crossing shells were braked. Fix: physical outward momentum is sgn(x)·P in the sources
(
Poinsolve_metric) and sgn(x) factors inrhs. Effect: μ = 0.36 unchanged (the trapping there sits on the LTB curve, see below); μ = 0.10 first trapping moved from 25.39 to 26.07 t_H (label 0.088 r_m), i.e. the multi-stream core takes ≈ 0.9 t_H after the caustic to trap instead of 0.25. - Tangential stress double counted (fixed).
S_cusedsp + 2 sqalthoughsq = Σ N L²/(R² W)already holds both tangential components; S = S_R + S_θ + S_φ =sp + sq. Only the lapse source 4π(E+S) is affected, and only for shells with L² ≠ 0, i.e. the σ > 0 runs (being redone); cold runs are untouched. Caught by the static test below: with the bug the E0c = 1.3 star had α(0) 2.5 % low and collapsed to a black hole within 1.3 t_dyn. - Ladder step 4, static Einstein–Vlasov star (
scripts/v1_static_test.py). NewStaticBackground(a = 1, H = 0, K = 0: maximal slicing, α(R_out) = √(1−2M/R_out)); isotropic polytropes fromsteady_state.build(E0c = 1.2: 2M/R = 0.108, max 2m/R = 0.18; E0c = 1.3: 2M/R = 0.134, max 2m/R = 0.236, z_c = 0.40), 4×10⁴ particles with L² ≠ 0 (radial orbits cross the centre: multi-stream, strong field), K = 800. Initial data: α_c matches e^μ to 3×10⁻⁴, m(R) to 1×10⁻³ (sampling noise). Evolution over 3 t_dyn (≈ 4500 steps, 27 min each on the VPS): E0c = 1.2 — max 2m/R = 0.1805 ± 0.0003 (initial 0.1807), α(0) drift 8×10⁻⁶, total Killing energy Σ N α W drift 2×10⁻⁶, per-particle α W rms 9×10⁻⁴; E0c = 1.3 — max 2m/R 0.2360 → 0.2399 (+1.6 %), α(0) −0.5 %, Killing energy −0.24 %, per-particle rms 3×10⁻³ (a slow secular contraction of the near-marginal z_c = 0.4 star, same level as the polar-areal code's earlier 1 % test). This validates the multi-stream pusher, the L² terms and the maximal-slicing lapse; the cosmological runs use the same code paths with K = −3H. - Corrected μ = 0.36 reading. All trapped shells trap at their LTB t_AH (median ratio 1.0001, p5–p95
0.9999–1.0027); the first is label 0.093 r_m at τ = 8.10 t_H = its own t_AH^LTB; the shells inside it (< 0.093,
which crossed the centre at τ = 8.03–8.09) are enclosed but never themselves on a trapped sphere. So at μ = 0.36
the Vlasov run reproduces the censored LTB collapse: the first horizon is LTB's, not a product of the pile-up.
Newtonian shell reference (
scripts/newton_shells.py 0.36 0.05): 2m/r ≥ 1 first at 1.055 t_C(0) for label 0.02 (m = 0.07), peak 2m/r = 3.1; at 1.02 t_C(0) mass inside r < 2.5 is 0.50 vs 1.34 in GR — the Newtonian shells re-expand through the incoming ones before those reach R = 2m, the GR ones do not (relativistic infall, 2m/R → 1 before the crossing). Expected: the two theories differ where 2m/R is O(1). - μ = 0.10 is a different regime. LTB t_AH(0.088 r_m) = 25.41 t_H but the run traps that label at 26.07: the inner shells cross, re-expand and re-collapse (core t_dyn ≈ 0.05 t_H), and the accumulated core reaches 2m/R = 1 only after ≈ 18 core dynamical times. Here the Newtonian reference (10× less mass inside r < 2.5 at 1.04 t_C(0)) is a real discrepancy to resolve, because the pile-up is weak-field until the very end.
- Caustic benchmark (
scripts/v1_caustic_bench.py). Isolated cold Gaussian sphere at rest, 2M/R0 = 0.02 and 0.002, identical shells in the GR code (static background) and a Newtonian leapfrog shell code (softening = dx_min), compared at equal central proper time. Low-resolution smoke test (K = 400): m(< 0.03 R0)/M at τ = 1.00, 1.02, 1.05 t_C(0) is 0.011/0.024/0.045 (Newton) vs 0.007/0.018/0.049 (GR) — same pile-up within the 1–2 % time-dilation spread of the C = 0.02 model. Full-resolution runs (K = 2000, s = 4) in progress.
25 Sep: the "10× Newtonian discrepancy" at μ = 0.10 was a clock mismatch
Corrected μ = 0.10 run (K = 2000, s = 4, diagnostics every 20 steps; runs/v1/mu01fix2), Newtonian references
scripts/newton_shells.py 0.10 {0.05, 0.02} (softening 0.05 and 0.02/k, 4797 shells, labels < 0.4 r_m).
-
In CMC slicing the core's proper time lags the coordinate (≈ far-away FLRW) time long before any trapping: at the slice where the core reaches τ_core = t_C(0) the coordinate time is already 1.09 t_C(0) (lag 2.3 t_H; core lapse 0.8), and at τ_core = 1.02 t_C(0) the lag is 2.5 t_H (lapse 0.6). The shells arriving at the centre on that slice therefore carry proper times ≈ their LTB t_C, i.e. ≈ 1.03–1.05 t_C(0), not 1.02. Comparing "mass inside R" at equal core proper time with the Newtonian universal time (= LTB time of the arriving shells) compares different events.
-
On the shells' clock (coordinate time here; LTB time in the Newtonian code) the two histories agree to a factor ≲ 2 and the horizon times to 3 %:
t/t_C(0) GR m(R<1), m(<2.5), m(<5), m(<10) Newton ε=0.02 Newton ε=0.05 1.10 0.040 0.098 0.185 0.263 0.089 0.225 0.432 0.850 0.101 0.221 0.420 0.764 1.12 0.076 0.182 0.338 0.671 0.122 0.273 0.525 0.956 0.117 0.233 0.434 0.825 1.14 0.185 0.435 0.612 0.926 (2m/R = 0.37) 0.233 0.356 0.584 1.004 (0.53) 0.113 0.229 0.443 0.893 (0.35) 1.147 0.538 0.974 1.156 1.413, AH (2m/R = 1.08) — — 1.16 (trapped, M_AH growing) 0.254 0.487 0.823 1.398, 2m/r = 1.3 0.104 0.212 0.452 0.899 (0.22) 1.18 0.430 0.645 1.074 1.710 (5.6) 0.104 0.273 0.507 1.065 (2m/r ≥ 1 at 1.185) GR first AH at coordinate 28.83 t_H = 1.147 t_C(0), M_AH = 0.68 (0.004 M_H, labels < 0.117 r_m; the earlier "1.43, labels < 0.172" was the same run detected 0.13 t_H later with the coarser diagnostic cadence — the per-shell τ_trap record is cadence-independent: label 0.088 at 26.07 t_H in both). Newtonian 2m/r ≥ 1 at 1.16 (ε = 0.02) and 1.185 t_C(0) (ε = 0.05), i.e. 3–4 % (0.3–1 t_H) later than GR, with a core of 0.3–0.6/k³ mass units inside r < 1 by 1.2 t_C(0). GR concentrates the pile-up faster and denser (stronger gravity at 2m/R ≈ 0.4 and the exiting streams are slowed by the deep lapse), but the Newtonian shells also bind a tight core: the "fountain" is not lossless. So the pile-up trapping at μ = 0.10 is a property of cold multi-stream collapse, not of the gauge or of GR alone; GR only moves it earlier.
-
Softening sensitivity of the Newtonian core is strong (ε = 0.05 vs 0.02: core mass inside r < 1 at 1.2 t_C(0) 0.11 vs 0.51): the Newtonian reference resolves the core only for ε ≲ 0.02, consistent with 2m ≈ 0.1–0.5 of the masses involved. The GR run has dx_min = 9×10⁻⁴/k there.
-
Consequence for the deadline bookkeeping: report every horizon time twice — per-shell proper time τ_trap (what the local scalar decay clock sees) and CMC coordinate time (the far-away FLRW clock). At μ = 0.10 they differ by 2.8 t_H at first trapping (26.07 vs 28.83 t_H) purely from the lapse lag, not from dynamics.
-
μ = 0.36, σ = 0.03 rerun with the stress fix: first AH at coordinate 12.82 t_H, M_AH = 8.2 = 0.045 M_H (labels < 0.249 r_m), earliest τ_trap = 8.07 t_H (label 0.239): same as before the fix within 10 % (the tangential stress is a small source at this σ).
25 Sep: caustic benchmark, weak field (2M/R0 = 0.002; runs/bench/caustic_C0.002_K2000_s4.out)
Isolated cold Gaussian sphere at rest, 8000 identical shells in both codes, K = 2000, s = 4 (dx_min = 2.9×10⁻⁴ R0), Newtonian softening = dx_min, GR sampled at equal central proper time (lapse 0.999 → 0.980, so the clock ambiguity is ≤ 2 % of t_C(0) here and the two clocks agree at the 10⁻³ level before the caustic).
| τ/t_C(0) | Newton m(<0.01 R0), m(<0.03), m(<0.1), m(<0.3) / M | GR same |
|---|---|---|
| 0.98 | 0.0003 0.0045 0.039 0.183 | 0.0001 0.0028 0.034 0.180 |
| 1.00 | 0.0027 0.0112 0.052 0.200 | 0.0007 0.0069 0.046 0.197 |
| 1.02 | 0.0113 0.0248 0.069 0.218 | 0.0071 0.0173 0.062 0.215 |
| 1.05 | 0.0141 0.0450 0.099 0.247 | 0.0148 0.0465 0.092 0.244 |
| 1.10 | 0.0194 0.0533 0.160 0.298 | 0.0185 0.0539 0.154 0.296 |
| 1.20 | 0.0196 0.0603 0.170 0.403 | 0.0223 0.0612 0.185 0.403 |
| 1.30 | 0.0205 0.0580 0.177 0.498 | 0.0235 0.0593 0.173 0.498 |
The multi-stream pile-up after the caustic agrees between the GR code and the Newtonian shell code to 5–10 % in the mass inside 0.01–0.1 R0 for τ ≥ 1.05 t_C(0); through the caustic itself (1.00–1.02) the GR core lags by ≈ 0.01 t_C(0) (the grid-deposited inner mass reaches the centre slightly later than the exact shell sums; converges with K). The cold pile-up binds 2 % of M inside 0.01 R0 and 6 % inside 0.03 R0 in both codes, i.e. a dense core of ≈ 0.05 M forms by 1.1 t_C(0) in Newtonian dynamics as well. GR run 2140 s (21590 steps) vs 209 s Newtonian. Together with the static-star test this closes the question raised on the μ = 0.10 core: the GR code's multi-stream dynamics is correct in the weak field, and the pile-up is Newtonian physics. Strong-field version (2M/R0 = 0.02) in progress.
25 Sep: μ = 0.10 resolution check and σ = 0.03 (fixed code)
| run | dx_min (r_m) | earliest τ_trap (label) | first AH: coordinate t, τ_core, M_AH (M_H) | labels ≥ 0.1 r_m: τ_trap/t_AH^LTB |
|---|---|---|---|---|
| K = 2000, s = 4, n = 4 | 3.7×10⁻⁴ | 26.07 t_H (0.088) | 28.83 t_H = 1.147 t_C(0), 1.033 t_C(0), 0.68 (0.004) | 0.9995 |
| K = 4000, s = 4, n = 4 | 1.8×10⁻⁴ | 25.75 t_H (0.060) | 28.38 t_H = 1.129 t_C(0), 1.023 t_C(0), 0.34 (0.002) | 0.9992 |
- The trapping of every label ≥ 0.1 r_m on the LTB apparent-horizon curve is converged (10⁻³). The first trapping
is not: doubling the resolution moves it 0.3 t_H earlier (t_C(0) + 0.93 → + 0.61 t_H), to a smaller label
(0.088 → 0.060) and half the mass. The trend points to a horizon emerging from the caustic itself with vanishing
initial mass, then growing along the LTB curve — as in the censored case — so the deadline-relevant statement,
"a horizon exists from ≈ t_C(0) (+ ≤ 1 t_H) on", is already converged; the mass of the first horizon is not a
useful observable. K = 8000 and n = 8 per cell queued (
runs/v1/queue3.sh) to confirm the direction. - σ = 0.03 at entry (x < 2 r_m), μ = 0.10: still traps, earlier in proper time and as a whole core — earliest τ_trap = 25.33 t_H (label 0.150, before its LTB t_AH = 25.9), first AH at coordinate 27.98 t_H = 1.113 t_C(0) with M_AH = 1.52 = 0.008 M_H (labels < 0.118, of which 34 % had re-expanded beyond R_AH before being caught); trapping curve for labels 0.1–0.3: 0.984 t_AH^LTB. A warm core does not pass through the centre; it virializes with all the arrived mass inside a radius ≈ (σ-set pericentres), and 2M/R reaches 1 sooner than the cold multi-stream pile-up. The σ needed to prevent trapping must be found higher up (σ ≳ 0.1?): next scan.
- Interpretation for V1: for the Yoo profile at μ = 0.10 (LTB-naked, C_ta ≈ 0.09) spherical collisionless collapse with σ ≤ 0.03 forms a horizon at ≈ t_C(0) = 25 t_H (per-shell proper time) / 28 t_H (CMC coordinate time), i.e. 0.26–0.29 t_C(r_m) — much earlier than Yoo's triaxial 0.735 t_C(r_m). Since t_C(0) = 0.589 e^{3μ} μ^{−3/2} t_H, deadlines 100/300/1000 t_H would correspond to μ ≈ 0.033/0.016/0.007 if the cold spherical result held at all μ; the scan to μ = 0.05 and the σ ladder decide whether it does.
25 Sep: why the cold pile-up traps at μ = 0.10 although C_ta ≈ 0.09 — and where the spherical threshold should be
Re-reading the Newtonian μ = 0.10 reference (ε = 0.02) and the isolated benchmark in the same dimensionless terms:
- By LTB time 1.10 t_C(0) the shells up to label 0.27 r_m (m = 4.6/k³) have reached the centre; most re-expand (fountain), 5–20 % stay inside r < 2.5/k. The retained core has 2m/r ≈ 0.18 at r = 1–10/k (a plateau), rising to 0.5 at 1.18 and 1.0 at 1.20 t_C(0). The turnaround compaction of the shells arriving at those times is |2E(r)| = (2μ/3) r² e^{−r²/6} = 0.027 (1.10), 0.047 (1.20): the plateau is 6–20 × C_ta of the currently arriving shells, and C_ta grows ∝ r² as later shells arrive. In the isolated Gaussian benchmark the same code gives a plateau ≈ 2–5 × the collapsed region's compaction, so the amplification is similar; the difference from the plan's estimate ("plateau ~ C_ta ≈ 0.88 μ" from the r_m shell) is that trapping happens when the shells with C_ta ≈ 0.03–0.05 arrive, long before r_m, and that the flat-core synchronicity amplifies by ~10.
- GR traps somewhat earlier than the Newtonian shells (1.13–1.15 vs 1.20 t_C(0), i.e. when C_ta ≈ 0.03 instead of 0.05): stronger gravity at 2m/R ≈ 0.3–0.5 plus the deep lapse slowing the exiting streams.
- Prediction (to be tested by the μ scan): the cold spherical collapse traps when some shell with C_ta ≳ 0.03–0.05 has arrived. |2E| peaks at r = √6/k = r_m with value 1.47 μ (μ e^{−1}·4 ... = 2μ/3·6/e), so no shell reaches C_ta = 0.05 for μ < 0.034 (0.02 for the GR value 0.03): a cold spherical threshold μ_V,sph ≈ 0.02–0.035 with the horizon time rising steeply towards t_C(r_m) as μ → μ_V,sph — so the deadline matters exactly there. Expected horizon times: μ = 0.07 → ≈ 1.3 t_C(0) ≈ 50 t_H; μ = 0.05 → shells to label ≈ 0.5–0.6 r_m needed, ≈ 1.5 t_C(0) ≈ 90 t_H (near D = 100); μ = 0.04 → ≈ 2 t_C(0) ≈ 170 t_H; μ = 0.03 → only if shells near r_m suffice, ≳ 500 t_H (t_C(r_m)), i.e. NO-COLLAPSE for D ≤ 300. Runs queued: μ = 0.07, 0.05, 0.04, 0.03 (cold, K = 2000, s = 4).
25 Sep: μ = 0.10 convergence (cold, s = 4; runs/v1/mu01fix2)
| run | dx_min (r_m) | earliest τ_trap (label) | first AH: coord t/t_C(0) (t_H) | τ_core/t_C(0) at AH | M_AH, R_AH | wall |
|---|---|---|---|---|---|---|
| K 2000, n 4 | 3.7×10⁻⁴ | 26.07 t_H (0.088) | 1.1466 (28.83) | 1.0326 | 0.68, 1.27 | 219 s |
| K 4000, n 4 | 1.8×10⁻⁴ | 25.75 (0.060) | 1.1288 (28.38) | 1.0229 | 0.335, 0.626 | 672 s |
| K 4000, n 8 | 1.8×10⁻⁴ | 25.74 (0.061) | 1.1290 (28.39) | 1.0228 | 0.341, 0.626 | 1114 s |
| K 8000, n 4 | 9×10⁻⁵ | 25.60 (0.025) | 1.1203 (28.17) | 1.0176 | 0.355, 0.623 | 2009 s |
- Shells per cell: converged (n = 4 vs 8 identical to 10⁻³). Grid: first order in dx_min — the successive differences halve (coordinate AH time 0.0178 → 0.0085 t_C(0); earliest τ_trap 0.32 → 0.15 t_H), so the Richardson limits are: first AH at coordinate ≈ 1.112 t_C(0) = 27.96 t_H, core proper time ≈ 1.012 t_C(0), earliest trapping τ ≈ 25.45 t_H = t_C(0) + 0.3 t_H, emerging from the innermost labels (→ 0); the first detected horizon mass and radius are converged from K = 4000 on: M_AH = 0.34–0.36 (0.002 M_H), R_AH = 0.62/k.
- Reading: at μ = 0.10 a horizon exists from ≈ t_C(0) + 0.3 t_H (per-shell proper time) = 25.5 t_H, i.e. 0.26 t_C(r_m), first detected with M ≈ 0.002 M_H at the CMC coordinate time ≈ 28 t_H, then growing along the LTB apparent-horizon curve (all labels ≥ 0.1 r_m trap at 0.999 t_AH^LTB at every resolution). K = 2000 (s = 4) is adequate for horizon times to ≈ 1 t_H and for masses after the first ≈ 0.3 t_H of growth; K = 4000 for the first horizon mass.
25 Sep: cold μ scan, first results (K = 2000, s = 4, n = 4; runs/v1/scan)
| μ | t_C(0) | t_C(r_m) | earliest τ_trap (label) | first AH: coordinate t | τ_core at AH | M_AH (M_H) | arriving label, its C_ta = |2E| | labels 0.1–0.3: τ_trap/t_AH^LTB |
|---|---|---|---|---|---|---|---|---|
| 0.10 | 25.1 t_H | 98.6 | 26.07 (0.088) [→ 25.5 converged] | 28.8 t_H = 1.147 t_C(0) [→ 1.112] | 1.033 | 0.004 [0.002] | 0.30 r_m, 0.037 [0.029] | 0.9995 |
| 0.07 | 39.2 | 160 | 41.5 (0.085) | 45.2 t_H = 1.152 t_C(0) | 1.056 | 0.011 | 0.32 r_m, 0.025 | 1.0055 |
| 0.05 | 61.2 | 257 | 68.1 (0.078) | 73.7 t_H = 1.204 t_C(0) | 1.109 | 0.015 | 0.36 r_m, 0.023 | 1.074 |
| 0.04 | 83.0 | 353 | 97.8 (0.064) | 106.2 t_H = 1.279 t_C(0) | 1.174 | 0.018 | 0.41 r_m, 0.023 | 1.139 |
| 0.03 | 124.0 | 534 | 161.3 (0.021) | 178.5 t_H = 1.439 t_C(0) | 1.309 | 0.012 | 0.50 r_m, 0.023 | 1.28 |
| 0.025 | 160.6 | 696 | 231.9 (0.048) | 260.1 t_H = 1.619 t_C(0) | 1.460 | 0.032 | 0.57 r_m, 0.024 | 1.43 |
| 0.02 | 221.1 | 965 | 361.0 (0.008) | 403.4 t_H = 1.824 t_C(0) | 1.650 | 0.021 | 0.64 r_m, 0.022 | 1.62 |
| 0.017 | 279.7 | 1225 | 504.8 (0.056) | 566.9 t_H = 2.027 t_C(0) | 1.830 | 0.025 | 0.69 r_m, 0.020 | 1.80 |
- The horizon appears when the shells arriving at the core have turnaround compaction C_ta = |2E(r)| ≈ 0.023–0.03 (K = 2000; the converged μ = 0.10 value is 0.029), independent of μ — the rule anticipated above, with the GR value of the constant. Below μ = 0.05 the trapped shells no longer sit on the LTB curve (τ_trap/t_AH^LTB = 1.07 for labels 0.1–0.3 at μ = 0.05): the core traps as a whole once its multi-stream pile-up reaches 2m/R = 1, and the first horizon is correspondingly more massive (0.015 M_H at μ = 0.05 vs 0.002 at 0.10).
- With C_ta,crit ≈ 0.025 and |2E| ≤ 1.47 μ (maximum at r = r_m): cold spherical threshold μ_V,sph ≈ 0.017; predicted
first-horizon (coordinate) times from the arrival of the shell with |2E| = 0.025: μ = 0.04 → ≈ 1.3 t_C(0) ≈ 110 t_H;
0.03 → ≈ 1.5 t_C(0) ≈ 185 t_H; 0.02 → ≈ 2.1 t_C(0) ≈ 470 t_H; 0.017 → ≈ t_C(r_m) ≈ 1200 t_H. Deadline map for cold
spherical collapse of the Yoo profile: μ_th(100 t_H) ≈ 0.04, μ_th(300) ≈ 0.025, μ_th(1000) ≈ 0.018 (K = 2000
numbers; the first-order resolution error shifts horizon times earlier by ≈ 3 % of t_C(0)). The 100 t_H entry
coincides with Yoo et al.'s 3D boundary (0.045–0.050), which they obtained with runs of a few t_H — a coincidence
to be examined, not a confirmation. μ = 0.04 came out at 1.279 t_C(0) = 106 t_H (predicted ≈ 1.3, ≈ 110 t_H), with |2E| = 0.023 at the arriving
shell and the shells' proper times at trapping 97–100 t_H: the D = 100 t_H boundary of cold spherical collapse
is at μ ≈ 0.04 (per-shell proper time) to 0.045 (coordinate time). μ = 0.03: horizon at coordinate 178.5 t_H = 1.439 t_C(0) (predicted ≈ 1.5, 185 t_H), M = 2.2 at
detection; the run then died in a diagnostics line (
np.maxof an empty array when the mass kernel reports substep trouble but no edge has u ≤ 0: fixed) — rerun queued together with μ = 0.025, 0.02, 0.017 (D = 1000) and σ = 0.03, 0.1 at μ = 0.05. The arriving-shell rule |2E| ≈ 0.023–0.025 has now held for μ = 0.10, 0.07, 0.05, 0.04, 0.03 (five decades of 2m/R amplification ruled by one number).
25 Sep: caustic benchmark, stronger field (2M/R0 = 0.02; runs/bench/caustic_C0.02_K2000_s4.out)
Same set-up as the weak-field case, ten times the compaction (lapse at the centre 0.99 → 0.70 by 1.2 t_C(0)).
| τ_core/t_C(0) | Newton m(<0.01), m(<0.03), m(<0.1) / M; max 2m/r | GR same; max 2m/R | α(0) |
|---|---|---|---|
| 1.02 | 0.011 0.025 0.069; 0.027 | 0.008 0.018 0.063; 0.023 | 0.92 |
| 1.05 | 0.014 0.045 0.099; 0.034 | 0.017 0.048 0.095; 0.038 | 0.86 |
| 1.10 | 0.021 0.052 0.160; 0.044 | 0.022 0.061 0.163; 0.052 | 0.82 |
| 1.20 | 0.020 0.059 0.172; 0.042 (peak 0.060) | 0.034 0.077 0.206; 0.116 | 0.71 |
| 1.30 | 0.021 0.058 0.174; 0.049 (peak 0.074) | black hole (2m/R > 1, α(0) = 0, 308 interior cells with u < 0) | 0 |
-
Up to 1.1 t_C(0) the two agree as in the weak-field case (GR 5–15 % higher). Then they part: the Newtonian core plateaus at 2m/r ≈ 0.05–0.07 (≈ 3 × 2M/R0), the GR core keeps growing (0.116 at 1.2) and collapses to a black hole between 1.2 and 1.3 t_C(0). Mechanism (the same one that sets C_ta,crit ≈ 0.025 in the cosmological runs): the core's proper time runs slow (α = 0.7–0.85) while the infall from outside continues on the far-away clock, so relative to the core's own relaxation time the feeding rate is 15–30 % higher; the pile-up compaction rises, the lapse drops further — positive feedback with gain > 1 once 2m/R ≈ 0.1. Newtonian dynamics has no such feedback.
-
This is a strong claim (a cold collisionless sphere with 2M/R0 = 0.02 collapses to a black hole in 1.3 free-fall times) and needs two checks before it is used: resolution (K = 1000 repeat running; K = 4000 later) and an independent slicing/code (the polar-areal pbhgr code on the same shells up to 1.2 t_C(0), where it is still regular). Literature to compare: Shapiro & Teukolsky 1985–86 cold cluster collapse, Rein–Rendall–Schaeffer 1998 and Olabarrieta–Choptuik 2002 (critical amplitudes for isolated Einstein–Vlasov collapse).
-
GR run: 116 230 steps, 8141 s (2.3 h) — the compiled pusher is now the pacing item for the benchmarks.
-
μ = 0.025 and 0.02 (runs to 400 and 600 t_H): horizons at 260 and 403 t_H (predicted 250–290 and 470), again when the arriving shell has |2E| = 0.022–0.024. Below μ ≈ 0.05 the core traps as a whole long after the LTB times of its shells (τ_trap/t_AH^LTB = 1.4–1.6) with a first-horizon mass of 0.02–0.03 M_H.
-
Cold spherical deadline map (Yoo profile, K = 2000, s = 4; per-shell proper time / CMC coordinate time): μ = 0.10: 26.1 / 28.8 t_H (converged 25.5 / 28.0); 0.07: 41.5 / 45.2; 0.05: 68.1 / 73.7; 0.04: 97.8 / 106.2; 0.03: 161.3 / 178.5; 0.025: 231.9 / 260.1; 0.02: 361.0 / 403.4; 0.017: 504.8 / 566.9 (predicted ≈ 640). Hence μ_th(D = 100 t_H) ≈ 0.040–0.045, μ_th(300) ≈ 0.022, μ_th(1000) ≈ 0.014–0.015 (|2E|_crit drifts from 0.024 at μ = 0.03 to 0.020 at 0.017; with |2E|_max = 1.47 μ the absolute floor of cold spherical trapping is μ ≈ 0.014, where the horizon time → t_C(r_m)). Resolution shifts these times earlier by ≈ 3 % of t_C(0) (first order in dx); the deadline thresholds move by < 0.002 in μ.
-
σ = 0.03 at μ = 0.05 is not a regulator but a violent perturbation: horizon at coordinate 62.9 t_H = 1.027 t_C(0), before the cold caustic, M = 0.012 M_H, with the arriving shells at |2E| = 0.004 only. Reason: the isotropic kick at t = 1 t_H includes a radial component ±σ on shells whose Hubble speed is 0.12 c, so it changes their binding energy by ±v_H σ ≈ ±0.004 — larger than |E| ≈ 0.001–0.005 of the labels ≤ 0.25 r_m at this μ. Half the shells become 2–8× more bound and collapse early into a dense core; the other half are unbound. At low μ the peculiar velocities of the collapsing region are ≈ √|2E| ≈ 0.05–0.15 c, so "σ_ent = 0.03" is hot, not a small regulator. Consequences: (i) the regulator ladder for the cold threshold must use σ ≪ √|2E|_crit ≈ 0.15 c and ≪ |E|/v_H — i.e. σ ≤ 10⁻² at μ = 0.03–0.04, 10⁻³ to be safe; (ii) the physical σ axis needs the brief's maps (Harada et al. eq. 42, Ebrahimian et al. 37–39) evaluated per μ before any run is called "warm"; (iii) a warm distribution function needs many velocity samples per cell (n ≥ 16), not 4. Runs with σ = 10⁻³ and 10⁻² at μ = 0.04 and 0.03 queued; σ = 0.1 at μ = 0.05 running (expected: even earlier sub-collapse).
-
σ = 0.1 at μ = 0.05: horizon at coordinate 102.7 t_H = 1.68 t_C(0) (τ_core 89.8 t_H), M_AH = 0.025 M_H at R_AH = 8.9/k, when the arriving shell has |2E| = 0.050 (cold: 0.022 at 73.7 t_H; σ = 0.03: 0.004 at 62.9 t_H). So the dispersion axis is non-monotonic at this μ: 0.03 seeds early sub-collapse through the radial kicks, 0.1 is hot enough for the angular-momentum barrier (pericentres ≈ σ R_inj ≈ 4–5/k, comparable to R_AH) to hold until twice the cold critical compaction has arrived, moving the horizon past the 100 t_H deadline in coordinate time (not in proper time). Any statement about σ therefore needs the physical maps and a smooth DF; the present kicks are a discrete-stream caricature (4 velocities per cell).
26 Sep: the σ > 0 runs are unreliable at the caustic — unresolved pericentres
σ = 10⁻³ and 10⁻² at μ = 0.04 and 0.03 all "trap" within 0.03 t_C(0) of the caustic with M_AH = 0.01–0.016 M_H, and μ = 0.03, σ = 10⁻³ reports M_AH = 392 = 2.1 M_H at R = 20/k (2m/R = 39): impossible — at 1.03 t_C(0) the LTB mass inside R < 5/k is ≤ 0.1, and a kick of v_H σ = 10⁻⁴ cannot move the label-0.24 shells (|E| = 0.004) inward. Cause: a warm shell has L = R_inj σ_t ≈ 45 σ/k, pericentre R_p ≈ L/P ≈ 0.05/k for σ = 10⁻³, while the global RK4 step near the caustic is ≈ 0.4 dR_min/v ≈ 1 time unit (the comoving grid's physical spacing is a·Δx_min ≈ 2.4/k at a ≈ 2700). The step overshoots the pericentre by 20×, the shell lands at R ≪ R_p where W = √(1+P²+L²/R²) is 10–100, and its deposited energy fabricates the "mass". The cold runs are unaffected (L = 0 exactly; the crossing is a reflection). Earlier σ runs: σ = 0.03 at μ = 0.36/0.10 had R_p ≈ 1/k against dR ≈ 1–2/k (marginal, probably qualitatively right but not quantitative); σ = 0.1 at μ = 0.05 had R_p ≈ 4.5/k (resolved). All σ > 0 numbers are withdrawn until the pusher substeps stiff particles (per-particle substeps under the stage metric for shells with ω dt = L dt/(R² W) > 0.2), which is now the next code item; a global pericentre time-step limit would slow warm runs by 20–200× and is not an option.
- Implemented (26 Sep,
CosmoRun._stiff_substeps): shells with ω dt = L dt/(R² W) > 0.2 are integrated over the global step with RK4 substeps (n_sub = 4 ω dt/0.2, ≤ 4000) under the metric frozen at the start of the step; their positions at t + dt/2 and t + dt feed the stage sources of the global RK4. Cold shells are untouched. Static-star test unchanged. Reruns of μ = 0.04 σ = 10⁻³/10⁻² and μ = 0.05 σ = 0.03 queued (runs/v1/scan2). - First rerun with substepping (
runs/v1/scan2): still garbage at μ = 0.04, σ = 10⁻³ (M_AH = 331 at R = 70, a shell with P = 5725 at the end); the stiffness test flagged only 49–57 shells because it used the angular frequency at the start of the step, while a warm shell at R ≈ 1/k with v ≈ c reaches its pericentre R_p ≈ 0.05/k within one global step and is then kicked by the centrifugal term evaluated at R ≪ R_p. Second version: estimate the pericentre from angular-momentum conservation with the momentum the shell would carry there, R_p = √(L²/(P² + L²/R² + 1)), and flag every warm shell that can travel to within 4 R_p during the step with ω_p dt > 0.2 (n_sub = ω_p dt/0.05, ≤ 4000). Rerun inruns/v1/scan3; acceptance: max |P| at the end O(1–10), no mass function above the LTB mass. - Strong-field benchmark at K = 1000 (s = 4, Δx_min = 5.9×10⁻⁴; process ended after the 1.20 row without a traceback, probably killed for memory while five jobs shared the VPS): at τ = 1.20 t_C(0) GR m(<0.01, 0.03, 0.1)/M = 0.031, 0.075, 0.201 with max 2m/R = 0.069 and α(0) = 0.79, versus K = 2000: 0.034, 0.077, 0.206, 0.116, 0.71, and Newtonian 0.020–0.023, 0.059–0.064, 0.172, 0.042–0.047. The GR excess over Newtonian is present at both resolutions (masses within 3 %, the same at both K); the runaway's timing is resolution-sensitive (compaction 0.069 vs 0.116 at 1.20), as for the first-trapping time in the cosmological runs. Polar-areal cross-check (K = 4000 uniform, dr = 10⁻³): at τ = 1.05 and 1.10 it gives 0.018/0.052/0.102 (2m/r = 0.040) and 0.028/0.068/0.169 (2m/r = 0.102, e^μ(0) = 0.73): the same excess, and a runaway even earlier than the areal–CMC code. Independent code and slicing therefore confirm the phenomenon; its onset time is what needs resolution and cross-code agreement before it is quoted with a number.
- Second version works (
runs/v1/scan3, μ = 0.04, σ = 10⁻³): max |P| at the end 9.4 (no shell above 10), mass function sane, horizon at coordinate 93.8 t_H = 1.130 t_C(0) (τ_core 88.3 t_H; earliest τ_trap = 88.0 t_H for label 0.166), M_AH = 0.009 M_H at R_AH = 2.8/k. So a 10⁻³ dispersion moves the μ = 0.04 horizon 12 t_H earlier than the cold run (106.2 / 97.8 t_H): the exact fountain is broken (shells no longer re-expand through the exact centre, and the radial kicks v_H σ ≈ 10⁻⁴ are 10–20 % of |E| for the inner labels), so more mass is retained. The D = 100 t_H classification at μ = 0.04 stays COLLAPSE in both clocks. Cost: 6096 s — 50–170 shells per step at the 4000-substep cap; the substeps are now bucketed by need (powers of two) to cut that, and the run is repeated (runs/v1/scan4) to confirm result and timing before the warm campaign (μ = 0.03–0.07 × σ = 10⁻³–10⁻¹, 4 velocity samples per cell, one case at 8). - Bucketed rerun (
runs/v1/scan4) reproduces the result (horizon at 93.7 t_H, M_AH = 0.008 M_H, max |P| = 10.3) but took 10 094 s (sharing the VPS with the polar-areal run): the substep loop is Python-bound (np.interp of the metric at every RK4 stage), bucketing only adds loop iterations. The polar-areal cross-check was stopped after 5.5 h CPU at τ = 1.10 (its fixed coordinate step cannot follow the collapsing lapse); its 1.05/1.10 rows are the result. Next: the stiff-shell substepper as a C kernel (linear metric interpolation on the edge grid, RK4), which is the "compiled pusher" item and makes the warm campaign 5–10 min per run. - Compiled substepper (
stiff_substepsincsrc/kernels.c, per-shell even substep counts, linear metric interpolation on the edge grid by bisection): agrees with the Python version to machine precision (|ΔP| < 10⁻¹⁸ on 300 shells × 64 substeps), 300 shells × 4000 substeps in 0.5 s (≈ 100× faster); static-star test unchanged. Runruns/v1/scan5(μ = 0.04, σ = 10⁻³) repeats the case with it; the warm campaign (runs/v1/warm,queue9.sh) is gated on its completion. runs/v1/scan5(compiled substepper): same answer as the Python path — horizon at coordinate 93.6 t_H, τ_trap earliest 88.3 t_H, M_AH = 0.008 M_H, max |P| = 9.3 — in 328 s instead of 6096–10094 s. Warm campaign started (runs/v1/warm): μ = 0.04 × σ = {10⁻², 3×10⁻², 10⁻¹}; μ = 0.03 × {10⁻³, 10⁻², 3×10⁻², 10⁻¹}; μ = 0.05 × {10⁻³, 3×10⁻², 10⁻¹}; μ = 0.07 × {10⁻², 10⁻¹}; μ = 0.04, σ = 10⁻² with 8 shells per cell.
26 Sep: warm campaign, first six runs (K = 2000, 4 velocity samples per cell; runs/v1/warm)
| μ | σ_ent | horizon, proper / coordinate (t_H) | cold (proper / coord) | M_AH (M_H), R_AH | arriving |2E| | wall |
|---|---|---|---|---|---|---|
| 0.04 | 10⁻³ | 88.3 / 93.6 | 97.8 / 106.2 | 0.008, 2.8 | 0.010 | 328 s |
| 0.04 | 10⁻² | 84.9 / 90.8 | 0.008, 2.7 | 0.009 | 325 s | |
| 0.04 | 3×10⁻² | 80.3 / 83.6 (1.007 t_C(0)) | 0.008, 2.6 | 0.001 | 213 s | |
| 0.04 | 10⁻¹ | 117.4 / 131.3 (1.58 t_C(0)) | 0.048, 17.4 | 0.037 | 586 s | |
| 0.03 | 10⁻³ | 134.3 / 141.8 | 161.3 / 178.5 | 0.011, 3.7 | 0.010 | 364 s |
| 0.03 | 10⁻² | 126.4 / 132.9 | 0.010, 3.5 | 0.005 | 340 s | |
| 0.03 | 3×10⁻² | 116.6 / 120.3 (0.97 t_C(0)) | 0.009, 3.3 | 0.000 | 234 s |
- σ ≤ 3×10⁻² makes the horizon earlier (by 10–40 t_H), σ = 10⁻¹ later and more massive. The early trapping is driven by the radial component of the kick: v_H σ = 0.12 σ is 4 % (σ = 10⁻³) to 100 % (3×10⁻²) of |E| of the labels 0.1–0.2 r_m at these μ, so the inward-kicked shells collapse early and their core traps with |2E| of the mean flow as low as 0.001. Whether a smooth warm distribution function does the same, or whether the 4-sample representation makes the early sub-population lumpy and spuriously compact, is what the 8-sample run (queued) and a 16–32-sample run must decide before the σ axis is reported. Deadline reading if it holds: μ = 0.04 is COLLAPSE for D = 100 t_H at all σ ≤ 3×10⁻² in both clocks and NO-COLLAPSE at σ = 10⁻¹ (coordinate 131 t_H, proper 117 t_H); μ = 0.03 is COLLAPSE for D = 300 t_H at every σ tried so far.
- Sanity of the six runs: the substep cap (4000) is hit in all of them (the smallest pericentres are under-resolved), but shells ending with |P| > 20 carry ≤ 0.066 mass units (≤ 5 % of M_AH; they are inside the horizon at the end, where the normal-frame momentum grows physically), so the mass functions are not contaminated. n_stiff reaches 1000–1800 shells per step at the caustic.
26 Sep: warm campaign complete (13 runs, K = 2000, s = 4; runs/v1/warm, scripts/warm_summary.py)
Horizon time, CMC coordinate / per-shell proper (t_H); M_AH at first detection in M_H:
| μ | cold | σ = 10⁻³ | 10⁻² | 3×10⁻² | 10⁻¹ |
|---|---|---|---|---|---|
| 0.07 | 45.2 / 41.5 | — | 42.4 / 39.6 (0.005) | — | 61.4 / 52.1 (0.041) |
| 0.05 | 73.7 / 68.1 | 67.2 / 63.5 (0.006) | — | 63.0 / 59.7 (0.007) | 103.2 / 89.2 (0.040) |
| 0.04 | 106.2 / 97.8 | 93.6 / 88.3 (0.008) | 90.8 / 84.9 (0.008); n = 8: 98.7 / 91.8 (0.020) | 83.6 / 80.3 (0.008) | 131.3 / 117.4 (0.048) |
| 0.03 | 178.5 / 161.3 | 141.8 / 134.3 (0.011) | 132.9 / 126.4 (0.010) | 120.3 / 116.6 (0.009) | 192.2 / 175.0 (0.052) |
- Systematic across μ: σ_ent ≤ 3×10⁻² brings the horizon forward (to 0.97–1.15 t_C(0), earlier for larger σ, with the same 0.005–0.011 M_H first mass as the cold pile-up), σ_ent = 10⁻¹ pushes it back to 1.55–1.7 t_C(0) with a puffier first horizon of 0.04–0.05 M_H at R_AH ≈ 15–18/k, when the arriving shell has |2E| ≈ 0.03–0.06.
- Sampling: μ = 0.04, σ = 10⁻² with 8 instead of 4 velocity samples per cell traps 8 t_H later (98.7 vs 90.8 t_H) with 2.5× the first mass — the early-trapping branch is not converged in the DF sampling at the 10 % level (16 samples running). The σ = 10⁻¹ branch (angular-momentum barrier, |2E| ≈ 0.04) is expected to be robust to it.
- Deadline reading (both clocks unless stated): D = 100 t_H — μ = 0.04 COLLAPSE for σ ≤ 3×10⁻² (coordinate 84–99 t_H, borderline at n = 8), NO-COLLAPSE at σ = 10⁻¹; μ = 0.05 at σ = 10⁻¹ borderline (coordinate 103, proper 89); μ = 0.07 COLLAPSE at all σ. D = 300 t_H — μ = 0.03 COLLAPSE at every σ ≤ 10⁻¹. So μ_th(100 t_H) moves from ≈ 0.04 (cold, σ ≤ 3×10⁻²) to ≈ 0.05 at σ_ent = 10⁻¹; μ_th(300 t_H) stays ≈ 0.02–0.025 for σ ≤ 10⁻¹.
- Caveats carried: (i) DF sampling (n = 4 → 8 → 16); (ii) the σ injection is an isotropic kick at 1 t_H on shells inside 2 r_m, not a physical map (the two maps of the plan are to be evaluated per μ); (iii) first order in Δx.
- DF sampling check at μ = 0.04, σ = 10⁻²: 4 / 8 / 16 velocity samples per cell → horizon at coordinate 90.8 / 98.7 / 97.0 t_H (proper 84.9 / 91.8 / 91.1), M_AH = 0.008 / 0.020 / 0.016 M_H, R_AH = 2.7 / 5.8 / 5.7. Converged from 8 samples (2 %); the 4-sample campaign values on the early-trapping branch are early by ≈ 6 % of t_C(0) and their first masses low by 2×. Reading unchanged: σ_ent ≤ 3×10⁻² still traps before the cold time (97 vs 106 t_H coordinate, 91 vs 98 proper at μ = 0.04), COLLAPSE for D = 100 t_H in both clocks. Wall 1090 s at n = 16.
26 Sep: resolution at low μ (cold, s = 4; runs/v1/scan, K = 2000 vs 4000)
| μ | K | first AH coordinate (t_H, t/t_C(0)) | proper (τ_core / earliest τ_trap) | M_AH (M_H), R_AH |
|---|---|---|---|---|
| 0.03 | 2000 | 178.5 (1.439) | 162.4 / 161.3 | 0.012, 4.3 |
| 0.03 | 4000 | 164.9 (1.329) | 153.2 / 152.1 | 0.006, 2.0 |
| 0.02 | 2000 | 403.4 (1.824) | 364.8 / 361.0 | 0.021, 7.4 |
| 0.02 | 4000 | 362.1 (1.638) | 333.6 / 333.6 | 0.010, 3.4 |
- The shift per doubling is 8–10 % at these μ (1.6 % at μ = 0.10): the comoving grid's physical spacing a·Δx_min is 4.2/k at K = 2000 by a ≈ 4700, comparable to R_AH = 2–4/k, so the first horizon is one cell wide there. First-order Richardson limits: μ = 0.03 → ≈ 151 t_H coordinate / 143 proper; μ = 0.02 → ≈ 321 / 293. The deadline map moves down by ≈ 0.002–0.003 in μ: μ_th(300 t_H) ≈ 0.020 (μ = 0.02 is borderline: proper 293 < 300 < coordinate 321), μ_th(100 t_H) ≈ 0.037–0.04, μ_th(1000 t_H) ≈ 0.014. K = 8000 runs at μ = 0.03 and 0.02 queued to close this; the earlier "< 0.002" statement is withdrawn. Lesson for the production setup: add cells or re-stretch the grid as a grows so that a·Δx_min stays below R_AH/10 (≈ 0.3/k) — a comoving grid cannot hold its physical resolution.
26 Sep: three resolutions at low μ (cold; K = 8000 runs 2240 s and 4432 s)
| μ | K | first AH coordinate (t_H) | earliest τ_trap (t_H) | M_AH (M_H), R_AH (1/k) |
|---|---|---|---|---|
| 0.03 | 2000 / 4000 / 8000 | 178.5 / 164.9 / 159.5 | 161.3 / 152.1 / 147.7 | 0.012, 4.3 / 0.006, 2.0 / 0.003, 1.0 |
| 0.02 | 2000 / 4000 / 8000 | 403.4 / 362.1 / 348.1 | 361.0 / 327.2 / 316.3 | 0.021, 7.4 / 0.010, 3.4 / 0.005, 1.7 |
- Differences shrink by 2.5–3× per doubling (better than first order once the horizon is a few cells wide). Extrapolated horizon times: μ = 0.03 → ≈ 156 t_H coordinate / 144 proper; μ = 0.02 → ≈ 341 / 310. The first-detected mass keeps halving with resolution at these μ (the horizon emerges from the innermost, unresolved scales, as at μ = 0.10), so "first mass" is not an observable here; the mass 1–3 t_H later is.
- Converged cold deadline map (Yoo profile, per-shell proper time / coordinate time both considered): μ_th(100 t_H) ≈ 0.038–0.040, μ_th(300 t_H) ≈ 0.021 (μ = 0.02 is NO-COLLAPSE in both clocks: 310 / 341 t_H), μ_th(1000 t_H) ≈ 0.014–0.015. Cold floor μ ≈ 0.014.
- Cost note: K = 8000 at μ = 0.02 took 74 min on the VPS; the grid that re-stretches with a (or an areal-radius grid in physical units for the core) is the right fix rather than brute K.
27 Sep: the σ maps (what σ_ent in the warm runs means physically)
Sources read in full text (scratchpad/harada2023.txt, ebrahimian2025.txt): Harada, Kohri, Sasaki, Terada, Yoo 2023
(arXiv:2211.13950) Appendix A, eqs (36)–(46); Ebrahimian, Abolhasani, Mirbabayi 2025 (arXiv:2507.18312) eqs (31)–(41).
- De Broglie map (mine, not from the papers). In the Vlasov limit of the oscillating scalar the particle momenta are the field's gradient momenta k/a, so the dispersion at horizon entry of the r_m scale is σ_ent ≈ k/(a m) = (k/aH)(H/m) = √6/q_ent. Hence σ_ent = 10⁻³, 3×10⁻³, 10⁻², 3×10⁻², 10⁻¹ ↔ q = 2450, 820, 245, 82, 25. The brief's V1b ladder q = 50–1600 is σ_ent = 0.05–0.0015: exactly the warm campaign's range. Our injection (isotropic kick at entry, momenta then redshifting as 1/a) is the right model for this source. Reading of the campaign on this axis: q ≳ 80 (σ_ent ≤ 0.03) → horizon earlier than cold; q ≈ 25 (σ_ent = 0.1) → horizon delayed to 1.55–1.7 t_C(0); the transition lies at q ≈ 30–80.
- Harada et al. 2023, Case I (virialized small-scale halos released at t*). Eq. (42): σ_v² ≃ h δ_ent(k), h = 3/5 for a uniform ball, with δ_ent(k) the entry amplitude of a small-scale mode k > k̃ that virializes before the PBH-scale collapse (condition (40)); the dispersion is released to the whole region only at t* when the collapsing region's mean density reaches ρ_vir = 8 ρ_ent δ_ent³ (eq. 43–44), unredshifted. Non-formation needs δ_ent < (h/9)(k̃/k)⁴ (eq. 46). Correspondence if the same dispersion were present at entry: δ_ent(k) = σ_ent²/h = 1.7×10⁻⁶ (σ_ent = 10⁻³) … 1.7×10⁻² (10⁻¹). But our injected dispersion redshifts by a_core/a_ent = (t_hor/t_H)^{2/3} = 9 (μ = 0.10) to 55 (μ = 0.02) before the horizon forms, whereas Harada's is released at t* at full strength: a released dispersion equal to our core dispersion corresponds to δ_ent(k) = 6×10⁻⁶–2×10⁻⁴ for σ_ent = 0.1. Conversely a realistic small-scale amplitude ζ_rms ≈ 0.01–0.05 at k ≈ 10 k̃ (Case I holds for k ≳ 6 k̃ at δ_ent ≈ 0.05) releases σ_v ≈ √(0.6 × 0.03) ≈ 0.13 c at t* — hotter than anything in the campaign at the core.
- Ebrahimian et al. 2025, eq. (39). Modes k > k₀ superposed on the collapsing region go nonlinear during the contraction (δ_k ∝ ζ_k (k/k₀)² a(t_max) b^{−3/2}, eq. 38) and then carry σ_v,k² ∼ (GM/R)(k₀/k)²; the halting condition (36) is met at the k₀ scale itself when δ_k₀ ∼ 1, giving δ_th ∼ ζ_k₀^{2/5} (eq. 40) and, for a generic peak profile, δ_th ∼ ζ_rms^{1/10} (eqs 49–50). With GM/R ≈ 0.01–0.03 at our cores, k/k₀ = 3, 10, 30 give σ_v,k ≈ 0.03–0.06, 0.010–0.017, 0.003–0.006 at the moment of release — again a release-during-collapse source.
Consequence: the entry-injection campaign is the physical σ axis for the scalar-field (de Broglie) source and maps one-to-one onto q; the substructure sources of maps 2 and 3 need a second injection mode — "release at t*": when the mean density inside the collapsing region reaches ρ_vir(k), give the shells there an isotropic dispersion σ_v = √(h δ_ent(k)) (map 2) or √(m/R)(k₀/k) (map 3). That mode is the next code item after the re-stretch.
27 Sep: grid re-stretch (CosmoRunConfig.dR_target, driver --dR)
Every 20 steps the sinh stretch s is raised (never lowered) so that a(t)·Δx_min ≤ dR_target; the scheme is fully constrained, so replacing the grid needs no remapping (particles carry the state). With dR_target = 0.3/k and K = 2000 (s grows 4 → 5.9 at μ = 0.10, → 7.0 at μ = 0.03):
- μ = 0.10: first AH at coordinate 1.1203 t_C(0) = 28.17 t_H, τ_core 1.0184, earliest τ_trap 25.63 t_H — identical to the K = 8000 fixed grid (1.1203 / 1.0176 / 25.60), whose physical spacing at the horizon time happens to be the same 0.3/k — in 194 s instead of 2009 s. First-detected mass 0.16 vs 0.355 (not an observable, see above).
- The cold deadline map (μ = 0.04, 0.03, 0.025, 0.02, 0.017) and the warm campaign (8 samples per cell) are being
rerun with dR_target = 0.3 (
runs/v1/restretch).
27 Sep: "release at t*" dispersion mode implemented (CosmoRunConfig.release_mode, driver --release)
Per shell, on its own interior (m_i = enclosed mass, R_i = a|x_i|, R_max,i and a at turnaround recorded):
harada: released when 3 m_i/(4π R_i³) ≥ ρ_vir = 8 ρ_ent(k̃) (k/k̃)⁶ δ_ent³ (Harada et al. 2023 eqs 43–44, with ρ_ent(k̃) = 3H²/8π at the r_m entry, t_H) and the shell is collapsing; kick σ_v = √(h δ_ent) (eq. 42), isotropic in the shell frame (radial into P, tangential into L² = max(L², (R σ_t)²)). Parameters k/k̃, δ_ent(k), h (3/5).ebrahimian: released when R_i/R_max,i ≤ b_nl = [ζ_k (k/k₀)² a_max,i/a_ent]^{2/3} (eq. 38 with δ_k = 1); kick σ_v,i = √(m_i/R_i) (k₀/k) (eq. 39). Parameters k/k₀, ζ_k. Static test unchanged (mode off). Trial: μ = 0.10, dR = 0.3,haradawith k/k̃ = 10, δ_ent = 0.05 (σ_v = 0.17 c, ρ_vir/ρ_ent = 10³) running inruns/v1/release; for m = 0.5 shells the trigger corresponds to 2m/R ≈ 0.6 and for m = 0.05 to 2m/R ≈ 0.04, so the light inner shells are released first.- μ = 0.03 with dR_target = 0.3 (s → 7.06, 13 601 steps, 633 s): first AH at coordinate 139.1 t_H = 1.121 t_C(0), earliest τ_trap 133.4 t_H — 20 t_H earlier than the K = 8000 fixed grid (159.5), whose core spacing at that time was 0.97/k, not 0.3. Sequence in core spacing 4.2 / 2.1 / 0.97 / 0.3 → 178.5 / 164.9 / 159.5 / 139.1 t_H: the last step is the largest, so the low-μ horizon time is NOT converged; the milestone times t(M_AH ≥ 0.01 M_H) move identically (178.5 / 165.2 / 160.0 / 140.3), so this is the whole trapping event, not a detection artefact (in every run the first horizon is one cell wide). Candidates: time resolution of the crossing (dt ∝ core spacing; the fixed grids took 0.4–1.6 time-unit steps through a core with R/v ≈ 1–3) or shell sampling (0.3 shells per cell at the centre with re-stretch). Checks launched: cfl 0.2 and 8 shells per cell, both at dR = 0.3. At μ = 0.10 the same test converged (K = 8000 and re-stretch both 0.3/k, both 1.1203), so the issue is specific to the long, slow low-μ pile-up.
- Release mode, first trial: misfired at t = 0.0006 t_H — the trigger ρ̄ ≥ ρ_vir is satisfied trivially in the
expanding phase (ρ(t_i) = 3 ≫ ρ_vir = 8.8×10⁻⁴), and "P < 0" is no collapse criterion in this gauge (P is the
peculiar momentum, negative for every overdense shell). Fixed: a shell is a candidate only past its turnaround
(R < 0.95 R_max,i). Trial relaunched. (Also:
pkill -fwith the run's own arguments killed the tool shell again — lesson 4 of the devlog, now violated twice; kill by PID only.) - Release mode, corrected trial (μ = 0.10, dR = 0.3,
haradak/k̃ = 10, δ_ent = 0.05 → σ_v = 0.17 c, ρ_vir = 10³ ρ_ent): first release at coordinate 26.9 t_H (core proper time ≈ t_C(0)), 2787 shells released by the end; horizon at coordinate 29.05 t_H = 1.155 t_C(0) with M_AH = 0.0017 M_H, against 28.17 t_H = 1.120 t_C(0) cold. A 0.17 c dispersion released shell by shell when the shell's interior reaches ρ_vir arrives too late to matter: at that moment the shells sit at 2m/R ≈ 0.04–0.6 with infall speeds 0.3–0.7 c, so the release delays trapping by 3 % of t_C(0) only. Under Harada's Case I map with realistic small-scale power, spherical trapping at μ = 0.10 is therefore not prevented. Scan queued: μ = 0.04 and 0.03 withharada(k/k̃ = 10, δ_ent = 0.05) and withebrahimian(k/k₀ = 10, ζ_k = 0.05), all at dR = 0.3. - μ = 0.03, dR = 0.3 checks: cfl 0.2 → 140.3 t_H (28 961 steps; cfl 0.4: 139.1) — converged in the time step; 8 shells per cell → 143.2 t_H (τ_trap 136.3; n = 4: 133.4–134.3). So neither explains the 20 t_H gap to the K = 8000 fixed grid (159.5). Remaining difference: shells per cell at the centre — the fixed K = 8000 grid had 4 shells per 0.97/k cell (shell spacing 0.24/k), the re-stretched K = 2000 grid has 0.3 (n = 4) to 0.6 (n = 8) shells per 0.3/k cell, i.e. shell spacing 1–0.5/k, and the cumulative deposition (uniform density between consecutive shells) then misrepresents the cusp below the shell spacing. The n = 8 run moved 3 t_H toward the fixed-grid value; n = 16 (shell spacing 0.25/k, matching K = 8000) launched to close this.
27 Sep: cold deadline map on the re-stretched grid (dR_target = 0.3/k, K = 2000, n = 4; runs/v1/restretch)
| μ | t_C(0) (t_H) | fixed K = 2000: first AH coord / proper | re-stretch 0.3: first AH coord / proper (t/t_C(0)) | M_AH, R_AH at detection | wall |
|---|---|---|---|---|---|
| 0.10 | 25.1 | 28.8 / 26.1 | 28.2 / 25.6 (1.120) | 0.001 M_H, 0.31 | 194 s |
| 0.04 | 83.0 | 106.2 / 97.8 | 92.8 / 88.1 (1.118) | 0.0018, 0.60 | 834 s |
| 0.03 | 124.0 | 178.5 / 161.3 | 140.3 / 134.3 (1.131) | 0.0009, 0.31 | 2703 s (cfl 0.2) |
| 0.025 | 160.6 | 260.1 / 231.9 | 179.6 / 173.5 (1.118) | 0.0009, 0.30 | 1444 s |
| 0.02 | 221.1 | 403.4 / 361.0 | 248.4 / 241.4 (1.123) | 0.0009, 0.30 | 2127 s |
| 0.017 | 279.7 | 566.9 / 504.8 | 313.9 / 306.7 (1.123) | 0.0009, 0.31 | 2593 s |
- With the core resolved at 0.3/k the first horizon appears at a universal 1.12–1.13 t_C(0) (coordinate; proper ≈ 1.09–1.10) for every μ from 0.10 to 0.017, always in the innermost cell (R_AH = 1 cell, M_AH ≈ 10⁻³ M_H). The "arriving-shell |2E| ≈ 0.022 rule" of the fixed-grid runs was therefore a resolution artefact of the comoving grid at low μ (core spacing 1–5/k there); the trapping is a property of the central caustic's aftermath — the cusp left by the first-collapsed shells — and scales with t_C(0) alone. If it holds under the two remaining checks (16 shells per cell; core spacing 0.15/k, both running), then: no cold floor in μ; the cold deadline map is 1.12 t_C(0) = D, i.e. μ_th(100 t_H) ≈ 0.038, μ_th(300 t_H) ≈ 0.018, μ_th(1000 t_H) ≈ 0.008 (coordinate time; ≈ 5 % lower in per-shell proper time).
- Caveat on "resolution-stable": the first horizon is one cell wide at every resolution tried, so the first-detection time may keep moving earlier with finer cells; the brief's criterion (θ₊ = 0 resolution-stable) needs a mass milestone. Milestone times computed next.
- Mass milestones on the re-stretched grid (coordinate t/t_C(0) at which M_AH first exceeds 0.002 / 0.005 / 0.01 / 0.02 M_H): μ = 0.10: 1.123 / 1.131 / 1.149 / 1.190; 0.04: 1.118 / 1.121 / 1.128 / 1.150; 0.03: 1.132 / 1.134 / 1.139 / >1.155; 0.025: 1.119 / 1.122 / 1.128; 0.02: 1.124 / 1.126 / 1.132; 0.017: 1.123 / 1.125 / 1.131 (runs stop 3 t_H after first detection). The horizon reaches 1 % of M_H within 0.01–0.03 t_C(0) of its first detection at every μ, so t(M_AH = 0.01 M_H) ≈ 1.13–1.15 t_C(0) is the robust statement of the cold spherical horizon time, independent of where exactly the one-cell first detection sits.
- Core spacing 0.15/k (n = 4): μ = 0.10 → first AH 1.1137 t_C(0) (0.3: 1.1203; 0.6: 1.1288 — differences −0.0085, −0.0066 per halving, limit ≈ 1.10); μ = 0.03 → 1.0885 (0.3: 1.131; 0.97: 1.286 — still moving by −0.04 per halving), earliest τ_trap 130.4 t_H = 1.05 t_C(0), which is the LTB t_AH of the label ≈ 0.2 r_m. Reading: as the core is resolved, the low-μ runs approach the LTB apparent-horizon curve — the multi-stream fountain does not prevent trapping once the crossing is resolved; the coarse fixed grids were "numerically warm" (puffy cores, shells re-expanding too far, trapping delayed until more compaction arrived). The cold spherical threshold then vanishes for every μ tried, and the converged cold horizon time is t_C(0)(1 + ε) with ε → 0 in first detection; the mass milestone t(M_AH = 0.01 M_H) is the observable to converge (table next).
- Milestones vs core spacing: μ = 0.10 → t(0.01 M_H) = 1.149 (0.3/k) and 1.152 (0.15/k): converged; μ = 0.03 → 1.139 (0.3), 1.106 (0.15), 1.162 (0.3 with 8 shells per cell): still moving toward the LTB value (the label with m = 0.01 M_H = 1.84/k³ is 0.21 r_m, LTB t_AH = 1.06 t_C(0)). So the cold horizon time at low μ is bracketed: LTB curve (1.06 t_C(0)) ≤ t(0.01 M_H) ≤ 1.13 t_C(0). Deadline map from 1.12 t_C(0) = D: μ_th(100) ≈ 0.038, μ_th(300) ≈ 0.018, μ_th(1000) ≈ 0.008; the LTB limit lowers these by ≈ 3 %. Plan, doc and memory updated.
- 16 shells per cell at μ = 0.03, dR = 0.3: first AH 146.9 t_H = 1.184 t_C(0) (n = 4: 1.131, n = 8: 1.154; steps
+0.023, +0.030 — not converging), milestone t(0.01 M_H) = 1.191 (1.139, 1.162). Finer cells make it earlier
(0.15/k: 1.089), more shells later. Reading: at low μ the core lingers for many dynamical times at 2m/R ≈ 0.1–0.5
with only 30–120 shells inside it, and shell-crossing discreteness (force jumps of order N_shell/R² at every
crossing) drives a relaxation that concentrates the core — a gravothermal-like collapse of the numerical system,
faster for heavier shells and for finer cells (less smoothing). At μ = 0.10 the trapping is LTB-fast and 4 vs 8
shells per cell gave identical results, so that case is safe; at μ ≤ 0.04 the cold horizon time is
discreteness-limited and the "universal 1.12 t_C(0)" is not yet the collisionless answer. Action: shell number
scan with a dense inner sampling (
--n_inner 16/32/64for x < 0.5 r_m,sample_shells_quietextended) at μ = 0.03, and a 16-per-cell check at μ = 0.10; the doc's low-μ statements to be re-qualified after it. - μ = 0.10, dR = 0.3, 16 shells per cell inside 0.5 r_m (18 368 shells): first AH 1.1201 t_C(0), earliest τ_trap 25.62 t_H — identical to 4 per cell (1.1203, 25.63). The μ = 0.10 cold result is converged in shells, cells (0.15 vs 0.3/k: 0.6 %) and time step; the discreteness problem is confined to the slow low-μ cores.
- Release scan, μ = 0.04 and 0.03 (dR = 0.3, k/k̃ = 10, δ_ent or ζ_k = 0.05):
harada(σ_v = 0.17 c when the shell's interior reaches ρ_vir = 10³ ρ_ent): first release at 1.016 / 1.009 t_C(0), first AH at 94.0 t_H = 1.132 t_C(0) (cold re-stretch 92.8 = 1.118) and 138.9 t_H = 1.120 (cold 140.3 = 1.131), t(0.01 M_H) = 1.149 / 1.140 — the released dispersion changes the horizon time by ≤ 1.5 % of t_C(0) at all three μ tried (0.10, 0.04, 0.03): under Harada's Case I map with ζ ≈ 0.05 at k = 10 k̃, spherical trapping is not prevented and hardly delayed.ebrahimianat μ = 0.04 (σ_v,i = √(m_i/R_i)/10 when R_i ≤ b_nl R_max,i; b_nl clips at 0.95 for these parameters, so the kick comes right after each shell's turnaround, ≈ 0.005–0.02 c): first AH at 125.4 t_H = 1.51 t_C(0), t(0.01 M_H) = 1.512, M_AH = 0.008 M_H — a delay like the σ_ent = 0.1 entry runs, past the 100 t_H deadline. But its first release is logged at 7.3 t_H = 0.09 t_C(0), long before any shell turns around (≈ 0.5 t_C(0)): to be checked before the number is used (μ = 0.03 run in progress). - The early
ebrahimianreleases are a trickle (12 shells at 9.6 t_H, 150 by 0.64 t_C(0)) of the innermost labels (< 0.02 r_m, negligible mass, negligible kick); the bulk (1000+ shells) is released from 0.67 t_C(0) on, at the turnarounds of the flat core as intended. The μ = 0.04 result (first AH 1.51 t_C(0)) therefore stands: a kick of ≈ 0.005–0.02 c given right after turnaround delays the horizon past the 100 t_H deadline, whereas the same substructure released only at ρ_vir (harada) does nothing — the timing of the release, not its amplitude, decides. ebrahimianat μ = 0.03 (101 361 steps, 2.4 h): bulk release after the turnarounds, first AH at 259.7 t_H = 2.09 t_C(0) with M_AH = 0.006 M_H (cold 140.3 = 1.13). The delay under this map grows toward low μ (+0.4 t_C(0) at 0.04, +1.0 at 0.03). Deadline map under the Ebrahimian release (k/k₀ = 10, ζ_k = 0.05): μ = 0.04 → 125 t_H (NO-COLLAPSE for D = 100), μ = 0.03 → 260 t_H (COLLAPSE for D = 300, borderline); by interpolation μ_th(100 t_H) ≈ 0.045 and μ_th(300 t_H) ≈ 0.028 — within Yoo et al.'s 3D boundary 0.045–0.050 for the shorter deadline. Runs at μ = 0.05 and 0.025 queued to pin both (runs/v1/queue16.sh, after the shell-number scan).
28 Sep: warm campaign on the re-stretched grid (dR = 0.3/k, 8 shells per cell; runs/v1/restretch)
Horizon, coordinate t_H (t/t_C(0)); M_AH at first detection; cold re-stretched baseline 1.12 t_C(0):
| μ | cold | σ_ent = 10⁻³ | 10⁻² | 3×10⁻² | 10⁻¹ |
|---|---|---|---|---|---|
| 0.07 | ≈ 44 (1.12) | — | 40.7 (1.04) | — | 52.1 (1.33), 0.043 M_H |
| 0.05 | ≈ 69 (1.12) | 64.7 (1.06) | — | 74.9 (1.22), 0.028 | 75.9 (1.24), 0.036 |
| 0.04 | 92.8 (1.12) | 86.7 (1.05) | 81.0 (0.98) | 101.3 (1.22), 0.025 | 99.7 (1.20), 0.037 |
| 0.03 | 140.3 (1.13) | 128.2 (1.03) | 141.8 (1.14) | 151.3 (1.22), 0.022 | 142.1 (1.15), 0.044 |
- With the core resolved the σ axis is mild: σ_ent ≤ 10⁻² moves the horizon to 0.98–1.06 t_C(0) (earlier than cold), σ_ent = 3×10⁻²–10⁻¹ to 1.15–1.33 t_C(0) with first masses 0.02–0.04 M_H behind the angular-momentum barrier. The fixed-grid delays (1.55–1.7 t_C(0) at σ = 0.1) were inflated by the coarse core. Threshold under σ_ent = 0.1 (q ≈ 25): μ_th(100 t_H) ≈ 0.040–0.044 against 0.038 cold — a ≤ 15 % effect in μ for the whole de Broglie range q ≥ 25; μ_th(300 t_H) ≈ 0.019–0.021.
- Caveats: the early-trapping branch (σ ≤ 10⁻²) shares the low-μ discreteness issue of the cold core (n scan in progress); the σ ≥ 3×10⁻² branch is set by pericentres ≈ 45 σ/k ≫ cell size and should be robust. Shells with |P| > 20 at the end carry negligible mass (checked below); the substep cap is still hit.
- Cold re-stretched baselines completed: μ = 0.07 → first AH 43.6 t_H (1.110 t_C(0)), τ_trap 40.5, t(0.01 M_H) = 1.129; μ = 0.05 → 68.5 t_H (1.119), τ_trap 64.4, t(0.01 M_H) = 1.131 (both 8 shells per cell). The universal 1.11–1.13 t_C(0) now holds at every μ from 0.10 to 0.017 on this grid.
- Shell-number scan at μ = 0.03 (dR = 0.3): 4 / 8 / 16 / 4+16 inner / 4+32 inner shells per cell (8 000 / 16 000 /
32 000 / 18 368 / 32 192 shells) → first AH 1.131 / 1.154 / 1.185 / 1.185 / 1.209 t_C(0); t(0.01 M_H) 1.140 / 1.162 /
1.191 / 1.191 / 1.215; earliest τ_trap 1.083 / 1.099 / 1.118 / 1.119 / 1.136. The increase is ≈ 0.026 t_C(0) per
doubling of the shell number with no sign of saturation (logarithmic, as for discreteness relaxation, not 1/N):
in a shell code the cold low-μ core collapses by shell-crossing noise on a time that grows with the number of
shells, so its collisionless limit is not reached by these runs and may not trap at 1.1–1.3 t_C(0) at all.
Consequences: (a) the cold horizon time at μ ≥ 0.05 stands (fast, LTB-like trapping, shell-number independent
at 0.10; to be checked at 0.05/0.04); (b) at μ ≤ 0.03 the cold spherical answer is open — bracketed between the
few-shell value ≈ 1.1 t_C(0) and no trapping — and the deadline entries for D = 300 and 1000 t_H are not results;
(c) the right tool for the low-μ cold core is a radial phase-space (R, P) Vlasov solver, not shells; noted for
the plan. n_inner = 64 running; the same scan at μ = 0.04 and 0.05 queued (
queue17.sh). - n_inner = 64 at μ = 0.03 (59 840 shells, 5342 s): first AH 1.2092 t_C(0), t(0.01 M_H) 1.2141, τ_trap 1.1351 —
identical to n_inner = 32 (1.2092 / 1.2150 / 1.1359). The shell-number dependence saturates between 32 and 64
inner shells per cell: the discreteness relaxation is gone once ≈ 1000 shells sit in the core. Converged cold
result at μ = 0.03 on the 0.3/k grid: first AH at 1.21 t_C(0) = 150 t_H (0.01 M_H by 150.7 t_H), 8 % later than
the 4-shell value, still COLLAPSE for D = 300 t_H. Check of the cell-spacing dependence at converged shell number
(n_inner 64, dR = 0.15) launched; μ = 0.02 and 0.017 at n_inner 32 queued (
queue18.sh). Deadline map with 1.21 t_C(0) = D: μ_th(300 t_H) ≈ 0.019, μ_th(1000 t_H) ≈ 0.0085 (100 t_H unchanged at ≈ 0.038 if μ ≥ 0.05 is shell-number independent — checks running). - Shell-number checks at μ = 0.05 and 0.04 (dR = 0.3, 8 / 4+16 / 4+32 per cell): μ = 0.05 → first AH 1.119 / 1.115 / 1.115 t_C(0) (t(0.01 M_H) 1.131 / 1.128 / 1.128) — shell-number independent; μ = 0.04 → 1.118 / 1.144 / 1.150 (t(0.01 M_H) 1.128 / 1.154 / 1.160) — weakly dependent and saturating (+0.026, +0.006). The transition from LTB-fast trapping to the discreteness-sensitive slow core lies between μ = 0.05 and 0.04. Converged cold horizon times: μ = 0.05 → 68.3 t_H (1.115); μ = 0.04 → 95.5 t_H first AH, 96.3 t_H for 0.01 M_H (1.15–1.16), still inside the 100 t_H deadline in coordinate time (per-shell proper time 89.7 t_H). Hence μ_th(100 t_H) ≈ 0.039.
- Cell spacing at converged shell number (μ = 0.03, n_inner 64): 0.15/k → first AH 1.191 t_C(0) (147.7 t_H), t(0.01 M_H) 1.200, τ_trap 1.117; 0.3/k → 1.209 / 1.214 / 1.135. A 1.5 % shift per halving: the μ = 0.03 cold result is converged at the 2 % level, horizon at 1.18–1.21 t_C(0) = 146–150 t_H (6 h wall at 0.15/k). With μ = 0.05 (1.115) and 0.04 (1.15) the converged cold horizon time rises slowly toward low μ: 1.12 → 1.15 → 1.19 t_C(0) for μ = 0.05 → 0.04 → 0.03 (μ = 0.02, 0.017 at 32 shells per cell running).
ebrahimianat μ = 0.05: first AH 76.0 t_H = 1.242 t_C(0), t(0.01 M_H) 1.244, M_AH = 0.007 M_H (cold re-stretch 68.5 = 1.119). With μ = 0.04 → 125 t_H and 0.03 → 260 t_H the delay under this map grows from +0.12 t_C(0) at 0.05 to +1.0 at 0.03; log-linear interpolation puts the 100 t_H crossing at μ ≈ 0.045 (COLLAPSE at 0.05, NO-COLLAPSE at 0.04): μ_th(100 t_H | Ebrahimian, k/k₀ = 10, ζ_k = 0.05) ≈ 0.045. μ = 0.025 (6 h in) will fix μ_th(300 t_H) under this map.ebrahimianat μ = 0.025 (214 380 steps, 6.8 h): no horizon by 450 t_H = 2.8 t_C(0), max 2m/R = 0.18. Under this map the delay grows steeply toward low μ (+0.12, +0.4, +1.0, > +1.7 t_C(0) at μ = 0.05, 0.04, 0.03, 0.025): the early released dispersion (≈ 0.005–0.02 c right after turnaround) acts like a floor near μ ≈ 0.027 for deadlines up to at least 450 t_H. Map under the Ebrahimian release (k/k₀ = 10, ζ_k = 0.05): μ_th(100 t_H) ≈ 0.045, μ_th(300 t_H) ≈ 0.028 (0.03 traps at 260 t_H, 0.025 not by 450), μ_th(1000 t_H) ≤ 0.027 if at all.- μ = 0.02 at 32 shells per cell in the core (32 192 shells, 4.8 h): first AH 1.2835 t_C(0) = 283.8 t_H, t(0.01 M_H) 1.2875 = 284.7 t_H, earliest τ_trap 1.209 = 267 t_H (4 shells per cell: 1.123 = 248 t_H). Converged cold horizon times now rise smoothly toward low μ: 1.115 (0.05), 1.15 (0.04), 1.19–1.21 (0.03), 1.28 (0.02) t_C(0). Deadline map (coordinate / proper): μ = 0.02 → 284 / 267 t_H, COLLAPSE for D = 300 with little margin, so μ_th(300 t_H) ≈ 0.019; μ_th(1000 t_H) ≈ 0.009–0.010 if the factor keeps rising to ≈ 1.5–2 (μ = 0.017 at 32 shells running: t_C(0) = 280 t_H, expected ≈ 380 t_H).
- μ = 0.017 at 32 shells per cell (5.6 h): first AH 1.302 t_C(0) = 364 t_H, t(0.01 M_H) 1.306 = 365 t_H, earliest τ_trap 1.232 = 345 t_H (4 per cell: 1.123 = 314 t_H). The converged cold factor t_hor/t_C(0) flattens toward low μ: 1.115, 1.15, 1.2, 1.28, 1.30 at μ = 0.05, 0.04, 0.03, 0.02, 0.017. Converged cold deadline map (Yoo profile, spherical, coordinate time; per-shell proper time ≈ 5–8 % earlier): μ_th(100 t_H) ≈ 0.039, μ_th(300 t_H) ≈ 0.019, μ_th(1000 t_H) ≈ 0.0085–0.009 (extrapolating the factor 1.3–1.4; a μ = 0.010 run to 1000 t_H launched to check). No cold floor down to μ = 0.017. Open item (i) of the plan is closed at the 2 % level in cells and shells.
- μ = 0.010 at 32 shells per cell (t_C(0) = 607 t_H; 138 041 steps, 6.2 h): first AH 1.307 t_C(0) = 793 t_H, t(0.01 M_H) 795.5 t_H, earliest τ_trap 770 t_H — COLLAPSE for D = 1000 t_H. The converged cold factor is flat at 1.30–1.31 from μ = 0.017 to 0.010, so μ_th(1000 t_H) ≈ 0.0086 (1.31 t_C(0) = 1000 t_H). Cold map closed: μ_th(100 / 300 / 1000 t_H) ≈ 0.039 / 0.019 / 0.0086 in coordinate time (per-shell proper time 3–5 % earlier), no cold floor down to μ = 0.010.
26 Sep: next steps agreed (plan 6.11) and item 1 launched (runs/v1/queue19.sh)
- Added
release_b_nl(driver--rel_bnl): fixed release radius R = b_nl R_max for the Ebrahimian mode, to scan the release timing separately from the kick amplitude √(m/R)(k₀/k). Static test unchanged. - Campaign (15 runs, two at a time): group S — σ_ent = 10⁻³ and 10⁻² at μ = 0.04 and 0.03 with 32 shells per cell in
the core (dR = 0.3), plus σ = 3×10⁻² at μ = 0.04 as the robust-branch control (
runs/v1/sigma32); group E — Ebrahimian amplitude k/k₀ = 3, 30 (turnaround release) and timing b_nl = 0.6, 0.3 (k/k₀ = 10) at μ = 0.04, k/k₀ = 3 at μ = 0.05, k/k₀ = 3, 30 and b_nl = 0.6 at μ = 0.03; Harada (k/k̃, δ_ent) = (10, 0.2) and (5, 0.05) at μ = 0.04 (runs/v1/release2). Report: μ_th(D; q) and μ_th(D; k/k₀, b_nl) surfaces.
27 Sep: σ axis at converged shell number (group S of queue19; 32 shells per cell in the core, dR = 0.3)
| μ | cold (converged) | σ_ent = 10⁻³ | 10⁻² | 3×10⁻² |
|---|---|---|---|---|
| 0.04 | 95.5 t_H (1.15) | 87.9 (1.059) | 89.5 (1.078) | 94.3 (1.136) |
| 0.03 | 150 (1.21) | 130.4 (1.051) | 132.8 (1.071) | — |
- The early-trapping branch survives the sampling convergence but shrinks: σ_ent ≤ 10⁻² traps 6–13 % of t_C(0) earlier than cold (at 8 shells per cell it was 5–25 %), σ_ent = 3×10⁻² is within 1 % of cold. With the n = 8 values for σ_ent = 10⁻¹ (1.20–1.33 t_C(0)) the whole de Broglie axis q ≥ 25 moves the thresholds by ≤ 15 % in μ, and only upward for q ≲ 30. The σ axis is closed as a result at this level.
- Ebrahimian at μ = 0.04 with k/k₀ = 3 (kick 3× the k/k₀ = 10 case, ≈ 0.02–0.06 c at turnaround): no horizon by 300 t_H = 3.6 t_C(0) (125 056 steps, 2 h). So the substructure floor depends strongly on the kick amplitude: k/k₀ = 10 → 125 t_H, k/k₀ = 3 → none by 300 t_H at the same μ. Remaining scan (k/k₀ = 30, timing b_nl, μ = 0.05 and 0.03, Harada points) running.
27 Sep: release-source scan complete (queue19 group E; dR = 0.3, 4 shells per cell; runs/v1/release2)
Horizon, coordinate t_H (t/t_C(0)); cold at this sampling: μ = 0.05 → 68.5 (1.12), 0.04 → 92.8 (1.12), 0.03 → 140.3 (1.13).
| source | setting | μ = 0.05 | μ = 0.04 | μ = 0.03 |
|---|---|---|---|---|
| Ebrahimian, release at turnaround | k/k₀ = 3 (kick ≈ 0.02–0.06 c) | none by 150 | none by 300 | none by 400 |
| k/k₀ = 10 (≈ 0.005–0.02 c) | 76.0 (1.24) | 125.4 (1.51) | 259.7 (2.09) | |
| k/k₀ = 30 (≈ 0.002–0.006 c) | — | 100.8 (1.21) | 167.3 (1.35) | |
| Ebrahimian, k/k₀ = 10, later release | b_nl = 0.6 R_max | — | 117.8 (1.42) | 221.5 (1.79) |
| b_nl = 0.3 R_max | — | 110.2 (1.33) | — | |
| Harada, release at ρ_vir | (k/k̃, δ_ent) = (10, 0.05): σ_v = 0.17 c at 1.0 t_C(0) | — | 94.0 (1.13) | 138.9 (1.12) |
| (10, 0.2): σ_v = 0.35 c at 1.05 t_C(0) | — | 90.2 (1.09) | — | |
| (5, 0.05): σ_v = 0.17 c from 0.61 t_C(0) | — | 115.3 (1.39) | — |
- The substructure "floor" is set by the kick amplitude and the release time together, not by the map: a kick of ≈ 0.03 c at turnaround prevents trapping to ≥ 2.5–3.6 t_C(0) at every μ tried, ≈ 0.01 c delays it by 0.1–1 t_C(0) (growing toward low μ), ≈ 0.003 c by ≤ 0.15 t_C(0); releasing the same kick later (0.6, 0.3 R_max) shortens the delay monotonically even though √(m/R) is then larger; a release at ρ_vir matters only if ρ_vir is low enough to fire near turnaround (Harada k/k̃ = 5: +0.27 t_C(0)), and is irrelevant when it fires at the caustic (k/k̃ = 10, any δ_ent).
- Deadline map under substructure released at turnaround: k/k₀ = 30 → μ_th(100 t_H) ≈ 0.040, μ_th(300) ≈ 0.025; k/k₀ = 10 → 0.045 / 0.028; k/k₀ = 3 → no spherical PBH at any μ ≤ 0.05 within 300 t_H. Since nonlinear modes at k = 3–10 k₀ with ζ ≈ 0.05 are what a realistic spectrum supplies, the cold "no floor" result is fragile against substructure, in line with Ebrahimian et al.'s Newtonian claim and with Yoo et al.'s 3D boundary; the decisive test is 3D with a real small-scale spectrum (plan 6.11, item 3b), where the release is not modelled but simulated.
27 Sep: item 2 (profile shapes) and the 3D semi-analytics started
pbhgr/profiles.py: mean peak profiles of log-normal spectra (BBKS conditioning on ν and the mean curvature x̄(ν, γ), eq. 6.14) for Δ = 0.1 and 0.5 at ν = 4, and a near-top-hat control ½[1 − tanh((r − 2)/0.5)];LTBProfileinltb.py(spline ζ, r_m = argmax of −2E, t_H = t_i (r_m H_i)³);yoo_spherical_cmc(..., zeta_fns=); driver--profile {yoo, ln0.1, ln0.5, tophat}. Gaussian reproduced through the tabulated path to 1e-8. Profile facts at μ = 0.3: ln0.1 → r_m = 2.68/k_p, Ψ crosses zero at r ≈ 3.2 (underdense ring), t_C(r_m)/t_C(0) = 2.2; ln0.5 → r_m = 1.87, t_C(r_m)/t_C(0) = 5.7; tophat → r_m = 2.06, −2E peaks at 0.84 at the edge, t_C(r_m)/t_C(0) = 1.01 (all shells collapse together). Validation (LTB cycloid test at μ = 0.3) running (runs/v1/profiles/val_*.out).scripts/ellipsoidal_collapse.py: Bond–Myers ellipsoid with linear external tide, Zel'dovich initial conditions, per-axis freeze at 1 % of the maximum; collapse times t₁ ≤ t₂ ≤ t₃ relative to the spherical case and the Sheth–Mo–Tormen (e, p | ν) distribution for ν = 4. Running (slow: elliptic integrals inside the RHS).- Profile validation (LTB cycloid test, μ = 0.3, to 0.9 t_C(0)): ln0.1 and ln0.5 pass at the Yoo level (median
|R/R_LTB − 1| ≤ 9×10⁻⁵, p95 ≤ 2.7×10⁻³, mass drift 10⁻⁶). The tanh "top-hat" failed twice — a shifted tanh has a
nonzero slope at r = 0 (cusp: t_C(0) → 0) and, when widened, negative energy density in the long-wavelength CMC
data — and is replaced by the super-Gaussian exp(−(r/2.5)⁴): smooth at the centre, flat core (no central growing
mode: t_C(0) = ∞, the first caustic is a shell crossing near r_m = 2.5/k, t_C(r_m) = 93 / 192 / 345 t_H at
μ = 0.05 / 0.03 / 0.02 in its own t_H = 260 t_i); its LTB test passes. Driver falls back to t_C(r_m) when t_C(0)
is not finite. Profile maps re-queued (
runs/v1/queue22.sh); the tanh run was discarded.
27 Sep: ellipsoidal-collapse semi-analytics (ν = 4) and first profile-map results
- Bond–Myers ellipsoid (linear external tide, Zel'dovich initial conditions, δ_i = 10⁻², per-axis freeze at 1 % of maximum; spherical case reproduces the top-hat collapse time to 0.3 %). Collapse times relative to the spherical one, (e, p): t₁ / t₂ / t₃ = 0.975 / 0.998 / 1.011 at e = 0.05; 0.936 / 0.995 / 1.031 at 0.10; 0.892 / 0.991 / 1.060 at 0.15; 0.847 / 0.987 / 1.097 at 0.20; 0.757 / 0.978 / 1.206 at 0.30 (p = 0; p = ±e/2 changes t₃ by < 1 %). Zel'dovich ellipticity of ν = 4 peaks (Sheth–Mo–Tormen): median e = 0.132 → pancake at 0.91 t_sph, last axis at 1.05 t_sph; 90th percentile e = 0.19 → 0.85 / 1.09. Reading: for the typical ν = 4 peak the last-axis collapse is only 5–9 % later than the spherical collapse, so if the horizon needs the third axis the deadline map shifts by ≤ 3 % in μ; the pancake comes 9–15 % early, and whether a pancake of a μ ≈ 0.04 peak can already satisfy the hoop criterion is the question for the Newtonian 3D step (its compaction at the pancake is ≈ C_ta ≪ 1, so presumably not). Oblateness alone does not explain a 3D boundary at 0.045–0.05 against the spherical 0.039; substructure (the release scan) does.
- Profile maps (interim, 32 shells per cell, own t_H of each profile; t_ref = t_C(0), or t_C(r_m) for the flat core): ln0.1 (narrow spectrum, Gaussian-like with an underdense ring) behaves like the Yoo profile — first AH at 1.10 t_C(0) (μ = 0.03) and 1.16 (μ = 0.02), first mass 7×10⁻⁴ M_H; ln0.5 (broad spectrum, steep profile, t_C(r_m)/t_C(0) = 8) traps much later — 1.48 t_C(0) at μ = 0.05 and not by 1.8 t_C(0) (153 t_H) at μ = 0.03 with 2m/R = 0.67 still rising (run extended to 320 t_H); the super-Gaussian flat core traps at 0.99–1.05 t_C(r_m) with 0.79–0.82 M_H at once — the classic top-hat collapse to a black hole at the edge caustic. The synchronization of the collapse (how fast t_C(r) grows outward) sets the pile-up rate and hence the horizon time: flat core → immediate full-mass horizon; Gaussian-like → 1.1–1.3 t_C(0) seed; steep → delayed or absent. Profile shape is a first-order effect for the deadline map, comparable to the substructure axis.
- μ = 0.02 rows: ln0.1 → 1.158 t_C(0) (186.7 t_H); ln0.5 → no horizon by 272 t_H = 1.8 t_C(0) with max 2m/R only 0.08; tophat → 0.965 t_C(r_m) (333 t_H) with 0.77 M_H. The queue scripts for the ln0.1 μ = 0.05 rerun and the ln0.5 μ = 0.03 extension died silently (as did the original ln0.1 μ = 0.05 run, empty output at launch); both relaunched directly.
- Cause of the silent deaths: the OOM killer (dmesg: two python processes killed at 1.35 and 1.5 GB RSS). A 32-shell per-cell run needs ≈ 1–1.5 GB; the 3.7 GB VPS holds two concurrently, not three. Rule from now on: at most two dense-sampling runs at a time (queues 25+ obey it).
- ln0.5 μ = 0.03 extended to 320 t_H: first AH at 153.3 t_H = 1.81 t_C(0) (0.001 M_H), i.e. just past the end of the first run — COLLAPSE for D = 300 t_H, at 1.8 t_C(0) against 1.2 for the Yoo profile. The ln0.1 μ = 0.05 run was OOM-killed a second time when started next to a dense run; relaunched alone (third attempt).
- ln0.1 μ = 0.05 (third attempt, alone): first AH 48.5 t_H = 1.086 t_C(0), 0.0013 M_H. Root cause of the launch
deaths found:
lognormal_peak_profilebuilt a 4001 × 20001 outer product (three ≈ 640 MB arrays, ≈ 2 GB transient) at import, so a log-normal-profile run starting next to another dense run tripped the OOM killer; now chunked (peak RSS ≈ 100 MB, identical Ψ). Cold profile map complete:
| profile | μ = 0.05 | μ = 0.03 | μ = 0.02 |
|---|---|---|---|
| ln0.1 (t_C(0) in own t_H: 44.6 / 90.5 / 161) | 1.086 t_C(0) | 1.100 | 1.158 |
| ln0.5 (41.9 / 84.9 / 151) | 1.484 | 1.803 | none by 1.8 (2m/R = 0.08) |
| super-Gaussian (t_C(r_m): 93 / 192 / 345) | 1.046 t_C(r_m), 0.82 M_H | 0.992, 0.79 M_H | 0.965, 0.77 M_H |
- σ_ent = 0.03 points per profile (32 shells per cell): ln0.1 μ = 0.03 → first AH 100.4 t_H = 1.109 t_C(0) with 0.022 M_H (cold: 1.100, 0.0007 M_H) — as for the Yoo profile, a small dispersion leaves the time unchanged and makes the first horizon puffier. ln0.5 μ = 0.05 and the flat core μ = 0.03 running.
- σ_ent = 0.03 points complete: ln0.1 μ = 0.03 → 1.110 t_C(0) (cold 1.100); ln0.5 μ = 0.05 → 1.663 t_C(0) (cold 1.484, +12 %: the steep profile is the one sensitive to dispersion, its slowly fed pile-up being easier to disturb); flat core μ = 0.03 → 0.975 t_C(r_m) with 0.75 M_H (cold 0.992, 0.79 M_H). Item 2 closed. Reading for the programme: the deadline map is profile-dependent at first order through the synchronization of the collapse — Gaussian-like/narrow-spectrum profiles give the universal 1.1–1.3 t_C(0) seed; broad-spectrum (steep) profiles delay trapping by 50–80 % and lose it at low μ within 1.8 t_C(0); flat cores form a near-M_H black hole at once at the edge caustic. Any threshold quoted for the early-matter era must state the profile (i.e. the spectrum shape), as the brief's Section 6.4 anticipated.
27 Sep: item 3b started — Newtonian 3D particle-mesh code for one triaxial peak (pbhgr/pm3d.py, scripts/pm3d_peak.py)
Comoving PM in an EdS box (periodic, side L in units of r_m), CIC deposit/interpolation, FFT Poisson with the 1D code's units (G = 1, k_p = 1, H_i = 5, a_i = 1), canonical momentum p = a² dx/dt and a kick-drift-kick leapfrog in a (dx/da = p/(a³H), dp/da = −∇Φ/(aH), ∇²Φ = (3/2)H_i² δ/a). Zel'dovich initial data at a = 1 from ζ(x) = μ Ψ(r_ell) with the peak made triaxial through the profile (A_i ∝ λ_i^{−1/2} of the Zel'dovich eigenvalues (1+3e+p, 1−2p, 1−3e+p)/3, ∏A_i = 1) plus an optional small-scale tail (Gaussian field, flat dimensionless power ζ_rms² / ln(k₂/k₁) between k₁ and k₂). Diagnostics: comoving semi-axes of the inner Lagrangian sets (r_ell,q < 0.1, 0.2, 0.3 r_m) → pancake, filament and third-axis collapse times; hoop compactness 2M/√((a₁²+a₂²)/2) of those sets; enclosed mass and 2M/R within 1–8 cells of the densest point.
- Bugs found in the smoke tests: the initial displacement was sampled half a box off (mesh arrays are indexed on [0, L)); fixed. Lattice + CIC discreteness: at 1 particle per cell the central density on a 2-cell block grows 2–3× faster than linear theory (mass transport of a compressed lattice through CIC overestimates the inflow by 1.5 at first order), at 8 per cell 0.73× — the density and the force are wrong on the scale of 1–2 particle spacings, which made the innermost ≈ 30 particles collapse at 0.5 t_C(0). Remedy: resolve the profile by ≥ 30 cells (N = 192 on a 6 r_m box, dx = 0.031 r_m) so that the biased region is < 0.06 r_m (negligible mass); the physical radii of the 1D horizons (0.3–10/k) are far below any 3D resolution (they are 10⁻⁴–10⁻³ of the box in comoving units), so the 3D code measures collapse times of Lagrangian sets, not 2m/R at trapping.
- Production: N = Np = 192 (7.1 M particles, ≈ 1 GB, ≈ 12 s per step, ≈ 1.5 h per run to 1.3 t_C(0) at μ = 0.10).
Spherical calibration run launched (
runs/pm3d/sph_N192.out): the 0.2 and 0.3 r_m sets must reach their minimum size at the LTB times 1.02 and 1.05 t_C(0). - Calibration at N = 192 FAILED: the 0.1 / 0.2 r_m Lagrangian sets reach their minimum size at 0.45 / 0.54 t_C(0)
(LTB: 1.01 / 1.06) and then bounce; the collapse is 2× too early independently of N (also at 64), so it is not
a cell-scale effect. Direct checks at a = 1: mesh density within 10 % of the continuum field, radial force within
6 % of Gauss's law — the initial force is right. Linear regime (a ≤ 150): displacements and momenta 0.8–0.95 of
linear theory (slightly low) while the central 2-cell density grows 3× faster than linear. Suspect: the lattice
instability of PM codes (Marcos et al. 2006) — with the particle spacing equal to the mesh spacing, CIC forces on
a regular lattice have anisotropic errors whose modes grow faster than the fluid growth rate, triggered first
where δ is largest. Test running (
scripts/pm3d_shelltest.py): Lagrangian-shell radii against the exact LTB R(t)/(a r) for plain CIC, Gaussian force smoothing of 1 and 2 cells, and 8 particles per cell with smoothing. - Shell test (
runs/pm3d/shelltest.out, N = 96, spherical μ = 0.1; LTB comparison per unit Lagrangian q, i.e. R/(a e^ζ r)): plain CIC at 1 particle per cell collapses the inner shells at 0.3–0.5 t_C(0) — the lattice instability is confirmed; Gaussian force smoothing of 1 cell is not enough, 2 cells suppress it: the shells then follow LTB to ≈ 5 % up to 0.7 t_C(0) and lag by 10–15 % near their collapse when their radius approaches the smoothing scale (at N = 192 that scale is 0.06 r_m). 8 particles per cell at N = 64 with 1-cell smoothing is too slow throughout (the profile spans only 11 cells there). Production adopted: N = Np = 192, L = 6 r_m, smoothing 2 cells; the spherical calibration runs alongside the first triaxial case (runs/pm3d/queue_pm.sh: e = 0 & 0.13; 0.19 & 0.3; tails ζ_rms = 0.05 at k = 2–10 for e = 0 and 0.13 (two seeds)). ≈ 1.5 h per pair, ≈ 6 h in all. - Production pair A: the spherical calibration and (later) the e = 0.3 run were OOM-killed at 1.4 GB each — the VPS is
now shared with other sessions' processes (a local app server, test matrices, pytest jobs; ≈ 1 GB), so two 3D
runs no longer fit. The pair queue was stopped; the remaining runs go one at a time with a free-memory gate of
2 GB before each launch (
runs/pm3d/queue_pm2.sh): e = 0 (calibration, rerun), e = 0.3, then the three tail runs. The e = 0.13 run survived: 0.3 r_m set pancakes (a₃ minimum, a₃/a₁ → 0.03) at 0.71 t_C(0), a₂ at 0.82, a₁ at 1.35; 0.2 r_m set a₂ at 0.78, a₁ at 1.04 — earlier than Bond–Myers (pancake ≈ 0.9 of the set's spherical time); to be judged against the spherical calibration before any reading.
29 Sep: item 3b results — Newtonian 3D PM, μ = 0.10, N = Np = 192, L = 6 r_m, 2-cell smoothing (runs/pm3d)
Collapse times of the Lagrangian sets (first time an axis falls below 0.1 of its initial comoving length), in t_C(0), and the same divided by the spherical PM run (which itself collapses 15–20 % before LTB: 0.80 / 0.85 for the 0.2 / 0.3 r_m sets against 1.03 / 1.08 — the residual lattice bias; ratios are the robust output):
| run | set | a₃ (pancake) | a₂ (filament) | a₁ (third axis) | ratios to spherical PM | Bond–Myers t₁ / t₃ |
|---|---|---|---|---|---|---|
| e = 0.13 | 0.2 / 0.3 | 0.61 / 0.65 | 0.75 / 0.82 | not by 1.35 | 0.77 / 0.94–0.97 / > 1.7 | 0.91 / 1.05 |
| e = 0.19 | 0.2 / 0.3 | 0.48 / 0.54 | 0.71 / — | not by 1.35 | 0.60–0.64 / 0.89 / > 1.7 | 0.85 / 1.09 |
| e = 0.30 | 0.2 / 0.3 | 0.26 / 0.28 | 1.32 / — | not by 1.35 | 0.32 / 1.66 / > 1.7 | 0.76 / 1.21 |
| tails (ζ_rms = 0.05, k = 2–10 k_p), e = 0 and 0.13, two seeds | 0.2 / 0.3 | — | — | — | no axis below 0.1 a₀ by 1.35 t_C(0); smallest axes 0.08–0.16 (2.5–5 cells) | — |
- The initial data carry the intended tidal ellipticity (deformation-tensor eigenvalues at the peak give e_eff = 0.130 / 0.190 / 0.300 for the nominal values), so the disagreement with Bond–Myers is not a set-up error: a peaked profile with the tidal ellipticity of a ν = 4 peak collapses far more anisotropically than the homogeneous ellipsoid — pancake at 0.77 (not 0.91) and third-axis collapse beyond 1.7 (not 1.05) of the spherical time at e = 0.13; at e = 0.3 the pancake forms at a third of the spherical time. Reading for the deadline map (third-axis collapse as the Newtonian proxy for the horizon): a typical ν = 4 peak needs ≥ 1.7 × the spherical time, which moves μ_th(100 t_H) from 0.039 to ≈ 0.06 if the factor is 1.7 and to ≈ 0.055 at 1.5 — above Yoo et al.'s 3D boundary 0.045–0.050 (their e = 0.2 runs). Runs extended to 2.5 t_C(0) to pin t₃.
- Enclosed mass around the densest point at 1.35 t_C(0) (within 2 / 4 / 8 cells; 0.3 r_m set = 5.0 units, M_H = 184): spherical 25 / 51 / 71; e = 0.13: 20 / 44 / 67; e = 0.19: 12 / 34 / 60; e = 0.3: 4 / 15 / 37 — the central object grows more slowly with ellipticity. With the tail the outcome is realization-dependent: e = 0.13 seed 0 still builds a dominant central clump (26 / 54 / 69), seed 1 fragments the region (6 / 10 / 13); e = 0 with tail: 16 / 46 / 69. So substructure at ζ_rms = 0.05, k = 2–10 k_p prevents a compact central collapse in a fraction of realizations (1 of 3 here) and delays it in the rest — in line with the 1D Ebrahimian-release scan (k/k₀ = 3–10 with the same ζ: trapping prevented or delayed), now from a spectrum rather than a map. Two seeds are not statistics; a seed ensemble is the next step if this axis is pursued.
- Caveats: the 8-cell radius is 0.25 r_m comoving (physical 920/k at the end), so the compaction reachable here is 2M/R ≈ 0.15 — the 3D code sees collapse times and mass assembly, not trapping; the spherical PM runs 15–20 % early (lattice residual after smoothing); one μ only (Newtonian scaling makes the ratios μ-independent).
- Extended runs to 2.5 t_C(0) (
runs/pm3d/long): third-axis collapse (a₁ < 0.1 a₀) at e = 0.13: 2.13 / 2.26 t_C(0) for the 0.2 / 0.3 r_m sets = 2.67 × the spherical PM time; at e = 0.19: 1.36 / 1.49 = 1.7–1.76 × (the filament of the stronger tide knots sooner — the threshold criterion on the long axis is sensitive to how the filament fragments, so take 1.7–2.7 as the range, not a trend). Bond–Myers gives 1.05–1.09. Mass within 2 / 4 / 8 cells at 2.5 t_C(0): 31 / 78 / 142 (e = 0.13), 26 / 81 / 126 (e = 0.19) — the central object does assemble, only later. - Reading for the deadline map: in the Newtonian picture the horizon forms somewhere between the filament stage (≈ 0.9–0.97 × the spherical time, if the hoop criterion is met along the two short axes — unresolvable here) and the third-axis collapse (1.7–2.7 ×). Hence μ_th(100 t_H) lies between the spherical 0.039 and ≈ 0.06–0.08 (t_C(0) f₃ × 1.15 = 100 t_H with f₃ = 1.7–2.7); Yoo et al.'s 3D boundary 0.045–0.050 sits inside this bracket. Closing it needs GR (a filament's compactness), i.e. item 3c.
29 Sep (evening) — GRChombo stack built (stage 1 of plan §6.12 prerequisites)
scripts/grchombo/build_grchombo_ax102.sh (stages pkgs/clone/config/chombo/grchombo/grtresna/env/tests/smoke/python + bench/tune)
run end to end on the Hetzner CCX33 at compute server (8 vCPU EPYC Milan, Ubuntu 24.04.3) and on the 2 vCPU VPS.
Versions: Chombo (GRChombo fork) 8684f2e, GRChombo 37e6595 (main, Apr 2026, ships Examples/ScalarFieldCosmo),
GRTresna 2e671e1 (GRTLCollaboration). GCC 13.3 -O3 -march=native, OpenMPI 4.1.6, HDF5 1.10.10, PETSc 3.19.6 (AH finder on).
CCX33 timings: Chombo 35 s, ScalarFieldCosmo 15 s, GRTresna ~1 min, 17/17 GRChombo tests in 1m43s (incl. ApparentHorizonFinderTest3D),
smoke: analytic-IC run 1 s, GRTresna CTTK solve 32³ 8 s, GRChombo restart from it 2 s; venv with yt 4.4.2. Total ~5 min.
Fixes found by the test runs: NAMESPACE=TRUE renames artefacts to 3d_ch.; Make.defs.local must append (cxxcppflags +=) or GRTresna loses -DUSE_CTTK;
GRChombo's restart path does not create hdf5/pout/data subdirs; the GRTresna cosmo example needs dx = 2 (dx = 4 → NaN at step 1).
Bench 96³ × 10 steps on CCX33: 8x1 16.4 s, 4x2 16.1 s, 4x1 18.3 s, 2x2 19.4 s, 2x4 20.3 s (SMT +12 %; hybrid 4x2 ≈ 8x1).
Instructions: docs/grchombo_ax102.md. Next: replace InitialScalarData with the ζ-profile + GRTresna constraints for the e = 0 test against the spherical map.
29 Sep (night) — stage 1 launched: GRChombo e = 0 test, μ = 0.1
Design (the scalar-field proxy cannot start at ε = 0.2: 10⁵ H_i⁻¹ of super-horizon evolution with resolved oscillations): the 3D run starts from the exact LTB solution at t_0 = 0.5 t_C(0) (central turnaround, K(0) = 0), converted to isotropic coordinates (ϱ → a(t_0) r far away, χ = (ϱ/R)², K^ϱ_ϱ = −Ṙ'/R', K^θ_θ = −Ṙ/R), matter = real scalar with φ = 0, Π = √(2ρ): ρ_sf = ρ and J = 0 exactly, so the LTB geometry satisfies the constraints exactly (1D check 1e-4, 64³ FD 1e-3). De Broglie map q = m/H_ent = 1.5 m t_H, σ_ent = √6/q: first run m t_H = 30 (q = 45, σ_ent = 0.054; matched 1D warm reference to be run), later 100 and 300. Box 8 a(t_0) r_m (periodic-face constraint violation 2e-5; 4 r_m gives 20 %), N = 64, nested spheres 2.5/1.0/0.4/0.2 r_m (levels 3–4 gated by ρ > 50/300 ρ_far(t_0)), dt = 0.2/m (oscillation-limited, 16× below the coarse CFL; non-subcycled stepping tried: 17× larger Ham violation, rejected). Gauge: first tried 1+log with K − K_corner (FLRW far field): the far lapse stays 1, but in the core K − K_far ≥ 2/t, so α_c ∝ (t_0/t)⁴ (R/R_0)⁶ and the core's proper time saturates at ~0.17 t_C(0) — the slice would never reach the collapse (standard 1+log is unusable for a slow collapse from a diffuse turnaround state; the CMC lapse lags only 10 %). Adopted: ∂_t α = −ε α (K − f(x) K_far(t)), f = K_0(x)/K_0(far) carried as a static grid variable (1 far away, 0 at the centre), ε = 0.3: α ≡ 1 initially everywhere (12-step test: centre 0.99997, corner 0.999999), and in the core α ∝ (R/R_0)^{3ε} — a CMC-like mild collapse. Found: GRChombo's ScalarFieldCosmo example sets K_mean on a gauge object that never reaches MatterCCZ4RHS (upstream bug). Run: /root/pbh_runs/mu0.1_L8 on the CCX33, 3394 coarse steps to 1.4 t_C(0), ~500 time units/h early (≈ 15 h total); AH search from 1.0 t_C(0); 1D reference (cold, CMC time): first AH at 1.1203 t_C(0).
1D references for the 3D test (μ = 0.1, 32 shells/cell, re-stretched grid, runs/v1/sigma32): cold: first AH 1.1203 t_C(0), M_AH ≈ 0.01 M_H; σ_ent = 0.016 (q = 150 ↔ m t_H = 100): 1.1379 t_C(0), M_AH = 0.0033 M_H, τ_core 1.0365; σ_ent = 0.054 (q = 45 ↔ m t_H = 30, the running 3D case): 1.2120 t_C(0) = 30.48 t_H, M_AH = 0.0159 M_H at x_AH = 0.0016 r_m, τ_core 1.090; M_AH grows slowly afterwards (0.05 M_H at 1.33 t_C(0)). Consequence for the comparison: the first 1D horizon is a core of comoving radius 0.0016 r_m (≈ 3 coordinate units at t_0 against a finest cell of 13) — unresolvable in 3D at any affordable resolution; the 3D finder will only see the horizon once M_AH ≳ 0.2–0.3 M_H. The observable for the 3D–1D test is therefore the time at which M_AH reaches a given mass (0.1, 0.3 M_H), which is also far less slicing-dependent than the first tiny horizon; extended 1D runs (stop 50 t_H after the first AH, cold and σ = 0.054) are running in runs/v1/ref3d to provide the M_AH(t) curves.
30 Sep — 1D horizon-growth curves for the 3D test (μ = 0.1, runs/v1/ref3d, 50 t_H after the first AH)
| M_AH / M_H | cold, t/t_C(0) | σ_ent = 0.054, t/t_C(0) |
|---|---|---|
| first AH | 1.1202 (0.001 M_H) | 1.2120 (0.016 M_H) |
| 0.03 | 1.224 | 1.251 |
| 0.05 | 1.289 | 1.329 |
| 0.1 | 1.428 | 1.548 |
| 0.2 | 1.678 | 1.819 |
| 0.3 | 1.922 | 1.959 |
| 0.5 | 2.431 | 2.388 |
The horizon grows slowly (accretion of the outer shells): the resolvable 3D horizon (0.1–0.3 M_H) appears at 1.5–2.0 t_C(0), so the 3D run (currently stopping at 1.4 t_C(0)) must be extended to ≈ 2.2 t_C(0) (restart from the 750-step checkpoint with stop_time = 10500): ~2× the cost, ≈ 30 h on the CCX33 (15 h on a CCX43). The cold and warm curves converge above 0.3 M_H (2.43 vs 2.39 at 0.5 M_H): the σ effect is confined to the first ~0.2 M_H.
30 Sep 11:40 UTC — 3D run at 1.5 t_C(0): the scalar core bounces (no horizon)
μ = 0.1, m t_H = 30 (q = 45), profile-referenced weak gauge; far field FLRW to 0.07 % (K_corner·t = −2.0015), lapse 1.0001. Central density ρ(0)/ρ_far: 5.6 (0.5 t_C(0)) → 19.6 (0.75) → 233 (1.00, the LTB caustic time) → 5.1 (1.25) → 2.3 (1.50), with 0.1–0.2 r_m evacuated (0.13/0.02 ρ_far) at 1.50; lapse_min 0.79 at 1.12 recovering to 0.93; no AH. The 1D warm Vlasov run with the "matched" σ_ent = 0.054 traps 0.016 M_H at 1.21 t_C(0). Interpretation: the coherent field is not a warm Vlasov fluid; the free-field Kaup limit M_max = 0.633/m = 0.028 M_H (m t_H = 30) exceeds the first-horizon masses of the 1D map (0.016 warm, 0.001 cold), so the de Broglie pressure reflects the converging core instead of trapping it. A dust-like proxy for the M_AH ≥ 0.1 M_H observable needs M_Kaup ≲ 0.01 M_H → m t_H ≥ 100 (0.0084) to 300 (0.0028), at 3–10× the present cost (≈ 4–12 days on the CCX33; subcycled fine levels dominate: dt = 0.2/m is 16–400× below the CFL). The first tiny horizon of the cold map can never be reproduced by an affordable scalar (m t_H ~ 10⁴ would be needed). Options: (1) finish this run to 2.2 t_C(0) to see whether the re-accumulated 0.1–0.2 M_H (≫ M_Kaup) collapses later; (2) validate the 3D pipeline against the 1D map at large μ (0.3: t_C(0) ≈ 9 t_H, first AH ≳ 0.1 M_H, ~5× cheaper); (3) the small-μ regime needs particles (stage 2, GRTeclyn) or m t_H = 100 on a 16-core machine (2–3 days).
30 Sep 12:00 UTC — decisions (user: "1–3 as you see fit")
- μ = 0.1, m t_H = 30 run continues to 2.2 t_C(0) (does the re-accumulated mass ≫ M_Kaup collapse later?).
- Pipeline validation at μ = 0.3 queued on the CCX33 after run 1 (/root/pbh_runs/mu0.3_L8): t_C(0) = 8.82 t_H, t_0 = 0.5 t_C(0), m t_H = 60 (q = 90, σ_ent = 0.027, M_Kaup = 0.014 M_H ≪ the expected first horizon 0.01–0.1 M_H of the μ = 0.3 map), box 8 r_m, N = 64, 5 levels, 2380 coarse steps (≈ 8–12 h); 1D references (cold and σ = 0.027, 30 t_H after the first AH) running in runs/v1/ref3d. Generator check: chi(0) = 0.449, Ham residual 5e-5.
- Stage 2 survey: GRTeclyn 542500d (Sep 2026, AMReX port) has matter = ScalarField/KleinGordon only; "ParticleInterpolator" is an interpolation utility built on AMReX particles (metric/field values at particle positions), no particle matter source. A Vlasov (N-body) matter module therefore has to be written: particle push (geodesics in the BSSN metric, using the existing interpolation), deposition of ρ, S_i, S_ij with proper-volume weights, coupling to the CCZ4 matter terms and constraints, tests against the 1D Einstein–Vlasov code (dust collapse, σ maps). Design note to follow in docs/.
30 Sep — 1D references for μ = 0.3 (runs/v1/ref3d; t_C(0) = 8.817 t_H)
| M_AH / M_H | cold, t/t_C(0) | σ_ent = 0.027, t/t_C(0) |
|---|---|---|
| first AH | 1.3521 (0.0025 M_H, x = 0.0005 r_m, τ_core 1.004) | 1.4506 (0.015 M_H, x = 0.0027 r_m, τ_core 1.033) |
| 0.03 | 1.487 | 1.480 |
| 0.1 | 1.691 | 1.669 |
| 0.3 | 2.034 | 2.078 |
| 0.5 | 2.312 | 2.300 |
| 0.7 | 2.606 | 2.652 |
At μ = 0.3 the first horizon is again a tiny core (the earlier expectation of a large first horizon at high μ was wrong — that number came from an older setup); the resolvable 0.1 M_H horizon appears at 1.67–1.69 t_C(0), so the queued 3D run is extended to 2.2 t_C(0) (stop_time 3671.6, ≈ 4500 coarse steps, 12–18 h). M_Kaup(m t_H = 60) = 0.014 M_H is crossed by the 1D horizon mass at ≈ 1.45 t_C(0), so a BH should form in the scalar run around 1.5 t_C(0) and be resolved by 1.7.
30 Sep 14:00 UTC — run 1 at 1.87 t_C(0): dispersal confirmed; μ = 0.3 scalar run cancelled
ρ(0)/ρ_far: 1739 at 1.09 t_C(0) (caustic) → 1.9 (1.29) → 2.3 (1.48) → 0.30 (1.68) → 0.34 (1.87); everything inside 0.5 r_m is below the background density, the matter has flowed out beyond ~1 r_m; χ(0) 0.12, lapse(0) 0.97; no AH. The bounce happens within ~0.1 t_C(0) of the caustic, whereas the 1D horizon mass crosses M_Kaup only 0.2–0.5 t_C(0) later (μ = 0.1: 0.028 M_H at 1.24; μ = 0.3 with m t_H = 60: 0.014 M_H at 1.45) — the core disperses before enough mass is present. A scalar proxy that traps at the caustic needs M_Kaup below the first-horizon mass: m t_H ≈ 340 for μ = 0.3 (0.0025 M_H), ~10⁴ for the cold μ = 0.1 core — infeasible. The queued μ = 0.3 scalar run (m t_H = 60) is therefore cancelled; its setup (/root/pbh_runs/mu0.3_L8, 1D references above) becomes the e = 0 test case for the particle module (stage 2), and the CCX33 is kept free for stage-2 builds after run 1 ends (~2.2 t_C(0), 4 h).
30 Sep 17:00 UTC — stage 2, milestone 2: Vlasov particles as matter in GRTeclyn work (FLRW dust test)
grteclyn/PBHVlasov (GRTeclyn AHFinder fd76177 + AMReX 2ceecb3, built on the CCX33 in ~10 min): particles carry
(m, u_i); CIC deposition of ρ = Σ mΓW/(√γ dV), S_i, S_ij into 10 grid variables read by ParticleMatter in
CCZ4RHSWithMatter; midpoint-RK2 geodesic push from linearly interpolated (α, β, χ, h̃) and 4th-order derivatives.
FLRW dust (16³, 8 particles/cell, geodesic slicing, H_0 = 1, t = 0 → 1.5, a: 1 → 2.2): ⟨K⟩/(−2/t) = 0.998–1.000,
⟨χ⟩ a² = 1.000–1.002, ⟨ρ⟩/ρ_FLRW = 1.000–1.003, rest mass 0.119366 and N_p = 32768 conserved exactly, ρ_max/⟨ρ⟩ = 1.00000.
The 0.2–0.3 % drift is the first-order source lag (sources deposited at t^n, held through the RK4 step); a midpoint
deposit can remove it later. Bugs found on the way: dangling CellData reference in the matter Vars (crash),
collective TotalNumberOfParticles inside the I/O-rank block (MPI hang), post_regrid hook fired before the particles
exist, line extraction end point on the periodic boundary. Next: LTB e = 0 (μ = 0.3) on particles in geodesic
slicing up to ~0.95 t_C(0) against the analytic LTB (ρ(0,t), shells), then the K − f K_far lapse and the AH finder.
30 Sep 17:40 UTC — stage 2, milestone 3a: LTB e = 0 on particles agrees with the exact solution
μ = 0.3, t_0 = 0.5 t_C(0), box 8 r_m, 64³ single level (dx = r_m/8), 8 particles/cell (2.1 M), geodesic slicing, zero shift (coordinates stay attached to the LTB labels through the t_0 map); 41 steps to 0.96 t_C(0) in 98 s on 8 ranks. Ratios 3D/LTB at 4 / 6 / 8 / 12 / 16 / 24 cells from the centre: ρ 0.997–1.021 / 1.002–1.005 / 1.002–1.005 / 1.001–1.004 / 1.001–1.003 / 1.000–1.002; K 0.999–1.04 / 0.993–1.000 / 0.994–1.000 / 0.996–1.000 / … ; χ 0.995–1.000 / 1.000–1.003 / … — i.e. 0.2–0.5 % agreement everywhere the LTB profile is resolved, up to the caustic; at 2–3 cells the CIC smearing of the contracting core shows (ρ 0.79–0.97). Far field FLRW: ⟨χ⟩ a² and ⟨K⟩ t as in the FLRW test. Script: scripts/grchombo/vlasov_ltb_compare.py; generator writes ltb_vlasov_table.dat + params_vlasov.txt. Next (3b): weak profile-referenced lapse (K − f K_far) and AH finder in GRTeclyn, AMR levels for the core, then the μ = 0.3 run through the horizon epoch against the 1D M_AH(t) table (0.1 M_H at 1.69 t_C(0)).
30 Sep 18:30 UTC — stage 2: gauge and AMR status
Weak profile-referenced lapse (ε = 0.3, Γ-driver shift) ported to GRTeclyn (PBHGaugeTeclyn, fref state variable,
K_far = min K on level 0): μ = 0.3 single-level run stable to 0.96 t_C(0) (lapse_min 0.82, χ_min 0.24).
AMR: level-aware particle lattice (n_per_dir·2^l per level-0 cell under level l) and average-down of the deposited
sources; FLRW on two levels keeps the mass exactly but shows 1 % mean density deficit and 2–3 % inhomogeneity at the
coarse–fine interface: the per-level CIC deposit drops the fine particles' clouds that cross into the coarse region and
misses coarse particles' clouds entering the fine grids. Fix: use AMReX's multilevel AssignDensity (virtual + ghost
particles, as in Nyx) with the 10 weighted quantities in particle slots — in progress. AH finder: capped, quiet copy of
the GRTeclyn AHFinder-branch class (PBHAHFinder) prepared for in-run horizon searches.
30 Sep 22:40 UTC — stage 2: consistent coarse–fine deposition
Per-level CIC deposition is inconsistent at AMR interfaces (FLRW two-level test: −12 % in the coarse cells outside the fine
grids, +12 % inside; AMReX's AssignDensity gives a similar dipole). Fixed with (i) a level-aware lattice with a 2-cell buffer
so that particles on both sides of an interface have the same mass, (ii) ghost copies of coarse particles within 1 coarse
cell of a fine grid deposited on the fine level with the fine kernel (AMReX CreateGhostParticles/AddParticlesAtLevel, ghost
extent ≤ deposit ghost cells − 1, otherwise out-of-bounds writes hang the run), (iii) copies of fine particles within one
coarse cloud of the fine boundary deposited on the coarse level with the coarse kernel, (iv) average-down of the covered
coarse cells. FLRW two-level line profile through the interface: 0.998–1.004 (was 0.86–1.12); a 3 % spike remains somewhere
off the line (to be located). sum_fine_to_coarse is not used (double counts with (iii)).
30 Sep 23:10 UTC — stage 2, milestone 3b: AMR particles validated
FLRW on two levels (32³ + half-box level 1, 710k particles, 240 coarse steps): ⟨K⟩/K_FLRW 0.9993, ⟨χ⟩a² 1.0004, ⟨ρ⟩/ρ_FLRW 1.001, mass exact; a static 3 % local spike remains off the extraction line (to be located; the line profile through the interface is within 0.4 %). LTB e = 0, μ = 0.3 on three levels (64³ + halves, 8.3 M particles, 41 coarse steps, 720 s on 8 ranks): ratios 3D/LTB at 4–24 coarse cells: ρ 1.000–1.006, K 0.997–1.018, χ 1.000–1.002 up to 0.96 t_C(0); ρ(0) resolved to 587 ρ_far (single level: 126). A +0.4–0.5 % ρ excess sits at the two interfaces (8 and 16 cells). Cost ≈ 18 s per coarse step with 3 levels; the horizon run needs ≈ 6–7 nested levels (finest cell ~1.5 physical units for a 37-unit horizon) → ~2 M particles per level, estimate a few hours.
30 Sep 22:40 UTC — horizon run launched (μ = 0.3, particles, 7 levels)
Lattice generation rewritten per level (grown level grids minus the next level's grown region, disjoint box lists — the coarse-cell buffer around a deep level had produced 10⁸ particles and an OOM). Regression: FLRW two-level test identical (710144 particles, mass exact, interface profile within 0.4 %). Horizon configuration: μ = 0.3, t_0 = 0.5 t_C(0), box 8 r_m, 64³ per level, nested halves to level 6 (finest cell 1.5 physical units; horizon at 0.1 M_H ≈ 37), 17.8 M particles, weak lapse (ε = 0.3) + Γ-driver, AH search every 8 coarse steps from 1.3 t_C(0) (capped at 300 iterations). Shakedown: 7 levels run; ≈ 150–200 s per coarse step (AH cost not yet separated) → ≈ 8 h to 2.2 t_C(0). Run: /root/pbh_runs/vlasov_mu0.3_hor (run.log, pbh_vlasov_out.dat, pbh_ah.dat). 1D references: cold first AH 1.352, 0.1/0.3 M_H at 1.691/2.034 t_C(0); σ = 0.027: 1.451, 1.669/2.078.
1 Oct 10:10 UTC — horizon run aborted at the first AH search; module rewritten for speed
The μ = 0.3 particle run reached 1.31 t_C(0) (72 coarse steps, 9.3 min per coarse step, lapse_min 0.70, χ_min 0.12, mass
exact, through the caustic without incident) and aborted at the first apparent-horizon search: the AMReX TimeIntegrator
inside the AH finder requires integration.type = RungeKutta and integration.rk.type = 4 (now in the generator). The
old checkpoints carry no particles (restart hooks were missing), so the run must be repeated. Meanwhile the module was
rewritten (commit 65c6bf0): each level deposits only its own particles (+ ghost copies from the coarser and virtual copies
from the finer level) at its own step instead of all levels at every finest step; fields are interpolated inside the push
(no 44 per-particle slots, memory 2.5× lower); particle checkpoint/restart hooks added. Regression on the VPS and the
AH-finder unit test on the server are running before the relaunch.
1 Oct 16:00 UTC — rewritten particle module validated on the VPS
FLRW single level: identical to before (K 0.998, χa² 1.002, ρ 1.003). FLRW two levels (710 144 particles, 240 coarse steps): ⟨K⟩/K_FLRW 0.9993, ⟨χ⟩a² 1.0004, ⟨ρ⟩/ρ_FLRW 1.0006, mass exact, and now rho_max/⟨ρ⟩ = 1.0000–1.0001 with the interface line profile 0.9999–1.0007 — the 3 % spike of the all-level deposit is gone (it came from double counting in the old scheme). Server: AH finder unit test passes (38 iterations, 8 s). Disk: 29 GB of plots/checkpoints purged.
1 Oct 17:30 UTC — server regression of the rewritten module; AH finder runaway
LTB e = 0 (μ = 0.3) on three levels with the per-level deposit: 400 s (was 720 s), 3D/LTB ratios ρ 0.994–1.002, K 0.989–1.019 (near the centre), χ 0.997–1.002 up to 0.96 t_C(0); the interface excess dropped from +0.5 % to +0.2 %. Horizon configuration (7 levels, 17.8 M particles): ≈ 80 s per coarse step (was 560 s → ≈ 3.5 h for the whole run); the particle checkpoint is written (chk00000/vlasov_particles). A forced AH search without a horizon ran away (surface radius −2·10⁵, interpolation abort) → runaway guard added to the finder copy (surface must stay within [dx_finest/2, 0.4 L], otherwise "no horizon").
1 Oct 18:10 UTC — horizon run relaunched with the rewritten module
Shakedown with a forced AH search: the finder now stops gracefully without a horizon (42 iterations, "no horizon"). Production: /root/pbh_runs/vlasov_mu0.3_hor, 7 levels, 17.8 M particles, AH search every 8 coarse steps from 1.3 t_C(0) (≤ 300 iterations, surface bounds), plots every 5 and checkpoints (with particles) every 20 coarse steps, old checkpoints pruned; expected ≈ 3.5–4 h to 2.2 t_C(0). Observable: time at which M_AH reaches 0.1 and 0.3 M_H versus the 1D table (cold 1.69/2.03, σ_ent = 0.027: 1.67/2.08 t_C(0)).
2 Oct 01:00 UTC — horizon run: crash at 1.62 t_C(0), diagnosis, restart from chk00080
- Timing: 4.75 min per coarse step on the 8 ranks (the "80 s" above was the 3-level test), 65 steps in 4.9 h. At coarse
step 100 (t_run 2419 = 1.62 t_C(0)) all 8 ranks segfaulted in
VlasovParticles::push→interp_fields_at(out-of-bounds read of the 1-ghost field MultiFab). The flow AH finder had run 7 searches from 1.30 t_C(0) and found nothing: from the guess radius 77.4 (the generator's comoving estimate) the hyperbolic flow with cfl_factor 7 moved the surface by ≈ 15 coordinate units per iteration, jumped over the real horizon (5 finest cells, below) and ran away to h ≈ −570 until the runaway guard stopped it (43 iterations every time). - Core state (checkpoints read with
scripts/grchombo/chk_diag.py, spherical expansion along the x axis): step 60 (1.17 t_C(0)): no trapped surface, χ_min 0.033, α_min 0.36, M_MS(R = 103) = 0.087 M_H. Step 80 (1.396 t_C(0)): Θ < 0 inside r = 7.6 coordinate units (5 finest cells), R_AH = 55.6, M_AH = R/2 = 0.151 M_H (M_MS there 0.146 M_H), χ_min 0.0021, α_min 0.14, |β| ≤ 0.09, max particle displacement 0.06 cells per fine step. Steps 84–99 (line extractions): the centre collapses to a puncture-like core two cells wide (χ_c 7·10⁻⁵, α_c at the 10⁻⁴ clamp, K_c 0.8, ρ_p,c ≈ 10⁷ ⟨ρ⟩); the interpolated lapse and χ at the centre go negative (overshoot between cells). The exact trigger of the out-of-bounds read is not known (no checkpoint after step 80): a non-finite rhs from the collapsed core (NaN position) or a > ½-cell midpoint excursion. - Fixes: (1) the CIC stencil is clamped to the field box; a particle with non-finite fields or rhs keeps its state for
the step ("frozen", counted); the displacement per push is capped at
pbh_vlasov.max_disp_cells= 0.8 cells (counted); per-coarse-step maxima and counts are appended topbh_vlasov_out.dat(columns 10–13: max_disp_cells n_clamped n_capped n_frozen) and printed per level step when non-zero. (2) Ray expansion diagnostic every coarse step: chi, h̃_ij, K, Ã_ij interpolated (4th order) at 256 points (dx_f/2 spacing) along ±x, ±y, ±z; Θ = 2R'/(R√γ_nn) − 2K/3 + Ã_nn/h̃_nn, R = r√(h̃_T/χ), M_MS; the outermost zero crossing per ray →pbh_ah_rays.dat(time, rays found, ⟨r_AH⟩, ⟨R_AH⟩, M = ⟨R⟩/2, R_min, R_max, r_AH per ray); full profiles every 4 steps intheta_profiles/. (3) The flow finder is seeded with the ray radius (ah_finder.cfl_factor2). Checkpoint/restart with particles verified bit-identical on the FLRW two-level test (6 steps vs 3 + restart + 3). - Restarted 01:01 UTC from chk00080 (1.396 t_C(0)), plots every 10 steps with h11 h22 A11 A22 shift1 added; 70 coarse steps to 2.2 t_C(0) ≈ 5.5 h (ETA ≈ 06:30 UTC).
- Interpretation caveats. (a) Pure LTB (e = 0, no shell crossing) traps the shells holding 0.1/0.15/0.3 M_H at proper
time τ = 1.13/1.18/1.32 t_C(0) (
LTBGaussian.t_AH); the 3D horizon with 0.15 M_H appears between 1.17 and 1.40 of far-field time, consistent with LTB plus the lapse lag of the profile-referenced 1+log slicing (α ≈ 0.4 around the horizon). (b) The 1D table (cold: 0.1 M_H at 1.69, 0.3 at 2.03) is in the areal-CMC slicing; the far-field time at which a given M_AH is reached depends on the slicing, so the coordinate-time comparison planned on 1 Oct is not invariant. Invariant alternative for the next run: per-particle proper time (dτ/dt = α/Γ) and the proper time of the matter at the horizon when M_AH = 0.1/0.3 M_H versus τ_trap of the 1D labels (≈ t_AH^LTB). (c) Resolution: the horizon forms at 2–5 finest cells; the first-horizon time and the early M_AH(t) need 2–3 more nested levels (32³, ≈ ×2 cost).
2 Oct 08:30 UTC — restarted run finished (2.2 t_C(0)): horizon tracked to 0.35 M_H, puncture blow-up at 1.62
- Restart 01:01–08:03 UTC (72 coarse steps). Ray diagnostic: the six rays agree in R_AH to 0.1 (spherical to the finest cell); M_AH = R_AH/2 grows linearly at ≈ 0.95 M_H per t_C(0) of far-field time: 0.159 at 1.4075, 0.20 at 1.449, 0.30 at 1.555, 0.349 at 1.609. The flow finder, seeded with the ray radius (cfl 2), hovers at the horizon (mean h 10.4 vs 8.6–9.4 from the rays) but never meets the 1e-4 tolerance in 3000 iterations and its area/mass (coordinate area) are not usable; for spherical runs the ray diagnostic is the instrument.
- Blow-up: during coarse step 100 (t_run 2395–2420, 1.609–1.620 t_C(0)) the level-6 fields inside r ≈ 20 became NaN, reproducing the original crash time exactly (that segfault was NaN particle positions). The guarded push caught the onset: max displacement 0.54 → 0.61 → 0.89 cells per fine step over four level-6 steps, then 13.6 M frozen particles; afterwards everything is frozen (1.27·10⁹ frozen events per coarse step) and the rays find nothing. plt00100 has NaN inside r ≈ 20 with the outer fields intact. Cause: the puncture-like core (χ_c ~ 10⁻⁵, α_c at the clamp) is two cells wide — unresolved puncture plus the matter piling up in it.
- Lost checkpoint: the waiter's pruning (keep the last two) deleted chk00080, so the lapse_coeff = 2 experiment from 1.396 t_C(0) cannot be run; pruning now keeps every 40th checkpoint as well.
- Next: rerun from t_0 with per-particle proper time (dτ/dt = α/Γ,
pbh_vlasov.tau0= t_0) and τ statistics of the matter at the ray horizon (pbh_ah_tau.dat: shell |r − r_AH| < max(dx_f, 0.05 r_AH), inside, core), same resolution and gauge (lapse_coeff 0.3): ≈ 8 h on the CCX33 to the blow-up. Observable: (M_AH, τ_AH) versus τ_trap of the 1D labels / LTB t_AH(M) (0.1/0.15/0.3 M_H at 1.13/1.18/1.32 t_C(0)).
2 Oct 17:00 UTC — μ = 0.3 rerun with particle proper time: invariant 3D vs 1D comparison
Rerun /root/pbh_runs/vlasov_mu0.3_tau (08:12–16:33 UTC, 100 coarse steps, same resolution and gauge as before;
results in runs/v1/vlasov3d/mu0.3_tau): identical M_AH(t_far) to the first run, blow-up again inside coarse step 100
(1.609–1.620 t_C(0); "NaN in GRAmrLevel::post_timestep"). The ray horizon is first seen at 1.318 t_C(0) with
M = 0.084 M_H and r_AH = 2.3 finest cells (smaller horizons are not resolvable). Proper time of the matter at the
horizon (scripts/grchombo/vlasov_tau_compare.py; 1D: τ_trap of the labels paired with the 1D M_AH at the moment of
trapping; LTB: t_AH of the shell with m = M):
| M_AH / M_H | 3D far time | 3D τ_AH | 1D cold τ | 3D − 1D | LTB t_AH(m = M) |
|---|---|---|---|---|---|
| 0.09 | 1.326 | 1.163 | 1.121 | +0.042 | 1.122 |
| 0.10 | 1.339 | 1.174 | 1.131 | +0.043 | 1.132 |
| 0.15 | 1.398 | 1.225 | 1.172 | +0.054 | 1.180 |
| 0.20 | 1.449 | 1.272 | 1.217 | +0.055 | 1.226 |
| 0.25 | 1.503 | 1.321 | 1.268 | +0.053 | 1.273 |
| 0.30 | 1.555 | 1.369 | 1.314 | +0.055 | 1.319 |
- 1D cold reproduces LTB to 0.001–0.009 t_C(0) (shell crossing barely changes the trapping of these labels; the label at the AH is within 6 % of M_AH). The 3D horizon's matter is 0.04–0.055 t_C(0) (≈ 4 %) later in its own proper time at every mass, roughly a constant offset. The far-field times differ from the 1D (CMC) coordinate times by 0.35–0.5 t_C(0) — pure slicing, as suspected.
- Candidates for the 4 % offset: the CIC-softened core (8 particles per finest cell, horizon at 2–14 cells) delaying
the collapse of the inner shells; a systematic in the ray horizon location (constant offset argues against a pure
resolution error of the AH location, which should shrink with r_AH/dx). Test running: the same setup with one level
fewer (finest dx doubled,
/root/pbh_runs/vlasov_mu0.3_lowres, 6 levels, 15.2 M particles, ≈ 2.4 min per coarse step, ≈ 4 h). If the offset doubles, it is first-order resolution error and Richardson gives the limit; if it stays, the cause is elsewhere (τ initialisation or the shell definition). - Core proper time at the first detected horizon: τ_core = 1.114 t_C(0) (1D cold: τ_core 1.004 at its first AH of 0.0025 M_H at 1.352 coordinate time — not the same event).
2 Oct 18:00 UTC — low-resolution test: disk full at 0.95 t_C(0), restarted
The 6-level run aborted at coarse step 40 with VisMF::Write failed — the disk was full (checkpoints with particles
are 5–6 GB each; the τ run had kept four, the first run two). Fields at that point agree with the 7-level run to 1e-4
at the centre (lapse 0.775, χ 0.217), so nothing physical. Cleanup: all checkpoints of the first horizon run (NaN
states), the τ run's chk00000/40/60/100 (chk00080 at 1.396 t_C(0) kept as the restart point for gauge experiments),
the partial chk00040 of the test; 32 GB free. Restarted 17:59 UTC from chk00020 (0.72 t_C(0)); the .dat files were
truncated to the checkpoint time to avoid duplicate rows. ≈ 3.3 h to the expected blow-up (≈ 21:30 UTC).
2 Oct 21:45 UTC — the 4 % offset is a bug in the particle equation (lapse term); low-resolution test; fix
- Low-resolution test (6 levels, finest dx doubled; run
/root/pbh_runs/vlasov_mu0.3_lowres, results inruns/v1/vlasov3d/mu0.3_lowres): no blow-up up to the stop at 1.71 t_C(0) (M_AH 0.44 M_H); τ_AH(M) within 0.003 of the 7-level run at every mass (3D − 1D cold: +0.053/+0.057/+0.055/+0.057 at 0.15/0.20/0.25/0.30 M_H). The offset is resolution-independent, so it is not CIC softening or the horizon location. - Central clock check (τ run,
runs/v1/vlasov3d/centre_values.txt): ρ_c(τ_core) against the LTB central density at the same proper time agrees to 1 % up to τ_core ≈ 0.82 t_C(0) and then lags: ratio 0.92 at 0.86, 0.86 at 0.91, 0.66 at 0.95; the central caustic (ρ_c maximum) is reached at τ_core = 1.047 instead of 1.000. The lag starts exactly when the central lapse drops below ≈ 0.85 and equals the horizon offset — the collapse is slowed where α < 1. - Cause:
MetricAtParticle::rhshad du_i/dt = −αΓ ∂_iα + …; Hamilton's equations of H = αΓ − β^j u_j give −Γ ∂_iα (no extra α). Every earlier validation (FLRW, LTB in geodesic slicing) had α = 1 and could not see it; the production gauge has α = 0.3–0.8 in the core, so the lapse-gradient force was 20–70 % too weak there. Fixed inVlasovParticles.cpp(and the design note). The τ-run and low-resolution results above are therefore wrong by this bug and are superseded. - Check running: the 3-level LTB test (
vlasov_mu0.3_gaugecheck/{geo,prod}) with the fixed push in geodesic slicing and in the production gauge to 0.97 t_C(0) — ρ_c(τ_core) must agree between the two gauges and with LTB. Then the 7-level production rerun (≈ 8 h). - Storage: all run directories now live on the 200 GB volume (
/mnt/HC_Volume_107018529/pbh_runs, symlinks in/root/pbh_runs); local disk 47 GB free.
2 Oct 22:05 UTC — gauge check inconclusive at the centre; corrected production run launched
- 3-level check (
runs/v1/vlasov3d/gaugecheck,scripts/grchombo/vlasov_gauge_check.py): in geodesic slicing ρ_c/ρ_LTB(τ) = 0.994 → 0.955 (τ 0.53 → 0.90), the late decline being the 3-level smoothing of the central peak; in the production gauge the central value oscillates ±5 % (the lattice drifts through the grid with the shift, CIC phase noise) around 1.0 up to τ ≈ 0.84 and then falls faster than geodesic (0.92 at 0.895, 0.78 at 0.92). At this resolution and with the single-point measure the gauge dependence cannot be separated from the smoothing of the tilted slice, so the check is inconclusive; the production run carries the decisive diagnostics instead. - Added
tau_profiles/tau_<step>.dat(everytheta_profile_intervalsteps): bins of 2 dx_f with particle count, rest mass, cumulative rest mass, ⟨τ⟩, ⟨Γ⟩ — together withtheta_profiles/(R, Θ, M_MS per ray) this gives the invariant comparison with LTB before the caustic: M_MS and R at (⟨τ⟩, label M_in) against the LTB shell. - Production rerun with the fixed rhs:
/mnt/HC_Volume_107018529/pbh_runs/vlasov_mu0.3_fix(symlink in /root/pbh_runs), 7 levels, launched 22:04 UTC, stop 2.2 t_C(0); ≈ 8 h to 1.62 t_C(0).
3 Oct 01:20 UTC — corrected run follows LTB to the caustic (shell-by-shell invariant check)
scripts/grchombo/vlasov_shell_check.py on vlasov_mu0.3_fix (profiles every 4 coarse steps; bins of 2 dx_f, the
cumulative rest mass inside the bin's outer edge fixes the LTB label, the bin's ⟨τ⟩ the LTB time; 3D R and M_MS from the
+x ray profile at the same radius):
| step | ⟨τ⟩/t_C(0) | R_3D/R_LTB (bins 4–32 = 15–100 units) | M_MS/m_LTB |
|---|---|---|---|
| 8 | 0.589 | 0.9998–1.0009 | 0.9996–1.0037 |
| 24 | 0.757–0.760 | 0.9992–1.0001 | 0.9961–0.9998 |
| 32 | 0.835–0.841 | 0.9982–0.9998 | 0.9935–0.9996 |
| 40 | 0.907–0.918 | 0.9972–0.9987 | 0.9931–0.9984 |
| 44 | 0.941–0.957 | 0.9955–0.9972 | 0.9955–1.0001 |
The 2-cell bin scatters by ±1–3 % (CIC phase noise). With the corrected lapse term the production gauge reproduces the LTB shells to ≤ 0.5 % in R and M up to τ = 0.96 t_C(0), where the buggy run's central density already lagged by 30 %. The run continues into the horizon phase (first ray horizon expected around coarse step 75, ≈ 04:30 UTC).
3 Oct 05:10 UTC — corrected run: 3D horizon growth agrees with 1D and LTB to < 1 % in proper time
vlasov_mu0.3_fix (22:04–05:03 UTC, 86 coarse steps): first ray horizon at far time 1.228 t_C(0) with M = 0.065 M_H
(r_AH = 2.3 finest cells, τ_AH = 1.097); growth to 0.273 M_H at 1.452; NaN in the core during coarse step 86
(1.452–1.463 t_C(0)) — the puncture blow-up now comes at M_AH ≈ 0.27 instead of 0.35 because the collapse is no longer
slowed. Invariant comparison (vlasov_tau_compare.py, results in runs/v1/vlasov3d/mu0.3_fix):
| M_AH / M_H | 3D far time | 3D τ_AH | 1D cold τ | 3D − 1D | LTB t_AH(m = M) | 3D − LTB |
|---|---|---|---|---|---|---|
| 0.09 | 1.260 | 1.1234 | 1.1212 | +0.002 | 1.1221 | +0.001 |
| 0.10 | 1.271 | 1.1321 | 1.1310 | +0.001 | 1.1320 | +0.000 |
| 0.15 | 1.326 | 1.1794 | 1.1716 | +0.008 | 1.1798 | −0.000 |
| 0.20 | 1.378 | 1.2258 | 1.2170 | +0.009 | 1.2263 | −0.001 |
| 0.25 | 1.428 | 1.2708 | 1.2682 | +0.003 | 1.2725 | −0.002 |
| 0.27 | 1.449 | 1.2895 | 1.2844 | +0.005 | 1.2910 | −0.002 |
The 3D horizon's matter proper time sits on the LTB trapping curve to ±0.002 t_C(0); the 1D cold run is 0.001–0.009 earlier than LTB (its own resolution/shell-crossing imprint), so 3D − 1D ≤ 0.009 (< 1 %). Stage 2's e = 0 test is passed for the horizon-growth observable at M_AH = 0.09–0.27 M_H; the first-horizon time itself (1D: 0.0025 M_H at τ_core 1.004) stays below the 3D resolution (smallest detectable horizon ≈ 0.06 M_H at dx_f = r_m/512).
- Running: gauge experiment
vlasov_mu0.3_fix_eps2— restart from chk00080 (1.385 t_C(0), M_AH 0.21) with the standard 1+log coefficient (lapse_coeff 2 instead of 0.3) to see whether the slice freezes before the core blows up; launched 05:06 UTC, 6 steps to the previous blow-up time, stop 2.2 t_C(0).
3 Oct 12:30 UTC — standard 1+log coefficient carries the horizon phase to 2.2 t_C(0); e = 0 map matched to 0.58 M_H
vlasov_mu0.3_fix_eps2 (restart from chk00080 at 1.385 t_C(0) with lapse_coeff 2.0; 05:06–12:25 UTC, 72 coarse
steps to the 2.2 t_C(0) stop): no NaN, no frozen or capped particles, mass conserved; the slice freezes in the core
(interpolated central lapse at the clamp, χ_c → 8·10⁻⁵) and the horizon keeps growing: M_AH 0.23 → 0.58 M_H
(r_AH 9–20 finest cells). Invariant comparison (runs/v1/vlasov3d/mu0.3_fix_eps2):
| M_AH / M_H | 3D far time | 3D τ_AH | 1D cold τ | 3D − 1D | LTB t_AH | 3D − LTB |
|---|---|---|---|---|---|---|
| 0.25 | 1.449 | 1.2713 | 1.2682 | +0.003 | 1.2725 | −0.001 |
| 0.30 | 1.687 | 1.3213 | 1.3137 | +0.008 | 1.3191 | +0.002 |
| 0.35 | 1.847 | 1.3687 | 1.3565 | +0.012 | 1.3665 | +0.002 |
| 0.40 | 1.940 | 1.4155 | 1.4133 | +0.002 | 1.4151 | +0.000 |
| 0.45 | 2.015 | 1.4632 | 1.4571 | +0.006 | 1.4651 | −0.002 |
| 0.50 | 2.091 | 1.5147 | 1.5070 | +0.008 | 1.5166 | −0.002 |
| 0.55 | 2.162 | 1.5678 | 1.5599 | +0.008 | 1.5699 | −0.002 |
Together with the 0.3-coefficient segment (0.09–0.27 M_H) the 3D particle code reproduces the spherical e = 0 horizon growth of the 1D code and LTB over 0.09–0.58 M_H to ≤ 0.012 t_C(0) in the matter's proper time (3D − LTB within ±0.002). The far-field (coordinate) times are gauge: with lapse_coeff 2 the same M_AH is reached 0.2–0.4 t_C(0) later in far time than with 0.3. Conclusion for the horizon phase: use the standard coefficient 2 (the weak 0.3 was chosen for the scalar stage); the 0.3 run blows up at M ≈ 0.27 because the slice keeps advancing into the two-cell puncture.
- Next run (launched 12:35 UTC,
vlasov_mu0.3_eps2full): the same setup from t_0 with lapse_coeff 2 throughout — one gauge, full M_AH(τ) curve 0.065–0.58 M_H; also tests whether the pre-horizon phase is unaffected by the stronger coefficient. ≈ 12 h.
4 Oct 07:00 UTC — one-gauge reference run (lapse_coeff 2 from t_0) finished: e = 0 map confirmed
vlasov_mu0.3_eps2full (3 Oct 12:29 – 4 Oct ≈ 00:30 UTC, 152 coarse steps to 2.2 t_C(0)): no NaN, no flagged
particles, mass conserved. With the standard coefficient the slice lags more in the core, so the ray horizon is first
seen later in far time (1.710 t_C(0)) and already at M = 0.18 M_H (3.4 finest cells); it grows to 0.523 M_H at 2.2.
Results in runs/v1/vlasov3d/mu0.3_eps2full.
| M_AH / M_H | 3D far time | 3D τ_AH | 1D cold τ | 3D − 1D | LTB t_AH | 3D − LTB |
|---|---|---|---|---|---|---|
| 0.20 | 1.739 | 1.2219 | 1.2170 | +0.005 | 1.2263 | −0.004 |
| 0.30 | 1.901 | 1.3198 | 1.3137 | +0.006 | 1.3191 | +0.001 |
| 0.40 | 2.030 | 1.4123 | 1.4133 | −0.001 | 1.4151 | −0.003 |
| 0.50 | 2.171 | 1.5128 | 1.5070 | +0.006 | 1.5166 | −0.004 |
Pre-caustic shell check in this gauge (steps 24/40/48, τ = 0.73–0.92): R_3D/R_LTB 0.996–1.000, M_MS/m_LTB 0.994–1.008. Summary of the e = 0 test (three corrected runs, two gauges): the proper time of the matter at the horizon versus M_AH agrees with LTB to ±0.004 t_C(0) and with the 1D cold run to ≤ 0.012 over 0.09–0.58 M_H; far-field times depend on the lapse coefficient by up to 0.4 t_C(0) and are not an observable. Trade-off between the gauges: 0.3 shows the horizon earliest and smallest (0.065 M_H) but dies at 0.27 M_H; 2.0 is stable to the end but first shows the horizon at 0.18 M_H. For e ≠ 0 runs: start with 0.3 and switch to 2.0 at the first ray horizon (as in fix + fix_eps2), or run 2.0 throughout when only M_AH ≳ 0.2 M_H matters.
5 Oct 09:20 UTC — warm particles in 3D (σ = 0.0272, the 1D "σ_ent" reference); run launched
- 1D convention (
cosmo_ev.inject_dispersion): at t_inj = t_H an isotropic Maxwellian of 1D width σ is added in the shell rest frame (radial part to P, tangential to L²) for shells with R/a < 2 r_m. The 3D run starts at t_0 = 0.5 t_C(0), so the generator (--sigma_inj 0.0272) writes the local dispersions at t_0 as ratios to σ: collisionless evolution conserves R w_t and (R'/√(1+2E)) w_r for small σ, hence σ_t/σ = R(t_inj)/R(t_0) and σ_r/σ = R'(t_inj)/R'(t_0) (table columns 7–8): 0.566 isotropic at the centre (core near turnaround), 0.33/0.43 (r/t) at r_m, zero beyond 2.5 r_m,phys. The six cold columns are bit-identical to the table of the reference runs. - 3D sampling: quiet start. The 2³ particles of every lattice cell get the corners of a randomly rotated cube scaled by a Maxwellian speed (hash-based, independent of the MPI layout): each particle is marginally N(0, 1) per component, each cell has zero net momentum and an isotropic second moment; the velocity is then scaled by (σ_r, σ_t) in the local radial frame and added non-relativistically to the bulk; rest mass = ρ√γ dV/Γ with the particle's own Γ, so the deposited energy density equals the cold constraint-satisfying ρ.
- Checks (3 levels): σ = 0 with the new code reproduces the cold run bit for bit; σ = 0.0272 gives ⟨Γ⟩ − 1 = 2.7·10⁻⁴ within 0.5 r_m (expected 3σ_loc²/2 ≈ 2.5–3.5·10⁻⁴), rest mass −2.5·10⁻⁵, ⟨ρ⟩ unchanged to 10⁻⁶.
- Production:
vlasov_mu0.3_warm(7 levels, lapse_coeff 2 from t_0, stop 2.2 t_C(0)), launched 09:16 UTC, ≈ 12 h. Reference: the 1D σ = 0.027 run (first AH 0.015 M_H at 1.451 coordinate; τ(M_AH) to be binned from the shell data).
5 Oct 10:05 UTC — stage 1b: early-start pipeline implemented; FLRW test exposes two time-lag systematics (fixed)
- Implemented in the development copy (
Examples/PBHVlasovDevon the server; design indocs/stage1b_design.md):init = yoo(long-wavelength CMC data for the triaxial Yoo profile, matter from the vacuum constraints of the code's own operators, cold lattice particles),dt_mode = 1(dt_0 = min(0.25 dx/√χ_max, 0.03 (t + t_i)) with per-level n_cycle ∈ {1, 2} chosen every coarse step; Kreiss–Oliger σ and the Γ-driver coefficient scaled with the far-field coordinate light speed),sphere_diag(expansion of coordinate spheres on 96 directions). - Test 1, FLRW from t_i (2 levels, 225 coarse steps of 3 %, a = 1 → 84), first attempt: closed-universe drift — K
ratio 0.87 at a = 21, recollapse at a ≈ 80, far lapse 0.93. Two lags of one coarse step, harmless at dt/t ≲ 1 % but
not at 3 % over hundreds of steps:
- the deposit stored ρ = D χ^{3/2} with χ frozen at deposit time, so through all RK stages of a step the source was the start-of-step density (too high by ≈ 3 dt/t on average) → Ω_eff > 1;
- K_far of the lapse condition was the value at the end of the previous step → K − K_far > 0 on average → the far
lapse decreased by 0.3 · (dt/2t) · |K| dt ≈ 2.7·10⁻⁴ every step.
Fixes: the grid now carries the coordinate densities D = Σ mΓW/dV (S_i, S_ij likewise) and
ParticleMattermultiplies by χ^{3/2} of the current stage; K_far is extrapolated inside the step as dust FLRW, K_far(t) = K_n / (1 − K_n (t − t_n)/2) (pbh_vlasov.k_far_extrap, default on). Retest: ⟨χ⟩a², ⟨K⟩t/2, ⟨ρ⟩6πt² = 1 to 10⁻⁶ over the whole run, far lapse 0.999999, τ_core = t + t_i to 5·10⁻⁵.
- Consequence for the earlier (late-start) runs: at level 0 they had dt/t = 2.2 % → 0.5 %, i.e. a far-field source lag of
that order and a far lapse drifting to ≈ 0.97; the fine levels (dt/t ≤ 10⁻³) and all proper-time comparisons are
unaffected at the quoted accuracy, but "far time" in those tables is coordinate time with α_far slightly below 1.
The plot variable
rho_pis the coordinate density from now on (physical ρ = rho_p χ^{3/2}). - Test 2 running: Yoo data μ = 0.3, e = 0, three levels, t_i → 0.97 t_C(0). At t_i: E/E_FLRW − 1 ∈ [−4·10⁻⁴, +4.4·10⁻³], |J| ≤ 4·10⁻⁷, total rest mass 11074.363 (LTB table of the late-start runs: 11074.320, 4·10⁻⁶ apart).
5 Oct 12:50 UTC — stage 1b test 2 (Yoo data, e = 0, three levels): super-horizon sensitivity of the binding energy
- First attempt (plain constraint-derived particles): the shells run ahead of LTB — R_3D/R_LTB at the shell's τ and rest-mass label = 1.014–1.021 (labels 0.16–0.5 r_m) at τ = 0.07 t_C(0) and 1.035–1.054 at 0.23, 0.994–0.998 outside 1.6 r_m; at t_i everything agreed to 10⁻³. The core is ≈ 20 % under-bound.
- The Yoo data themselves are right: in spherical symmetry (
cosmo_id.yoo_spherical_cmc) the energy function 2E = U² − 2m/R of the dust (U = Γ(−R K_θ + v/A)) equals the LTB one to 10⁻⁴ at equal m for ε_i = 0.2, 0.1, 0.05, and the 3D tensor form reduces to the spherical one exactly (checked on the x axis). - Cause: at ε_i = 0.2, 2E = −0.05…−0.4 is the difference of U² and 2m/R ≈ 10–600, so a relative error η in the gravitating mass seen by a shell changes E by η (RH)²/|2E| ≈ 10²–10³ η. (i) The deposited density differed from the constraint density by 8·10⁻⁴ max, 2.6·10⁻⁴ rms on the finest level (CIC smoothing of the O(1) variation of √γ E, level interfaces). (ii) With 3–5 % steps the sources lag the particle motion by half a step.
- Fixes: (a)
build_deposit_correction: particle masses (and u_i) iterated until the deposited coordinate sources equal the constraint ones on the cells not covered by a finer level: 8·10⁻⁴ → 1·10⁻⁵ max, 10⁻⁶ rms after six corrections (total rest mass −2.8·10⁻⁵). With it: R ratio 0.9993–1.0003 at τ = 0.008, 1.001 at 0.055, but still 1.005–1.011 at 0.22 and 1.012–1.024 at 0.55–0.6 for labels < 0.66 r_m (0.9997–0.998 outside r_m). (b) Strang splitting (pbh_vlasov.strang = 1): half particle step and deposit before the grid update (sources at mid-step), second half after it; also a time-centred single push (push_centred) for the old scheme. FLRW with 5 % steps: χ, K, ρ ratios 1 ± 2·10⁻⁵. - Running: test 2 with matched deposit + Strang (
dev_tests/yoo_mu0.3_l2s). - Note for the comparison with Yoo et al.: any 3D particle run started at ε_i = 0.2 has this sensitivity; their one-particle-per-cell top-hat deposit on 80³ cannot satisfy it at the 10⁻⁴ level, which may contribute to the offset of their thresholds (to be quantified once our pipeline is validated).
5 Oct 14:50 UTC — stage 1b: geodesic early phase reproduces LTB to 10⁻⁴; gauge switch-on time
- Strang splitting did not help (R ratios at τ = 0.02: +0.1–0.2 % in the core against +0.05 % without it), so the half-step source lag is not the leading error of the gauged early phase.
- Isolation test in geodesic slicing (lapse 1, shift 0;
dev_tests/yoo_mu0.3_l2g, matched deposit, 5 % steps, 186 coarse steps to 0.28 t_C(0)): R_3D/R_LTB = 0.9995–1.0001 at τ = 0.02, 0.057, 0.126, 0.237 for all bins ≥ 4 cells, no drift; M_in per coordinate bin stays constant (the particles sit on their lattice sites). In the gauged runs the Γ-driver shift streams the lattice through the grid (+15 % rest mass inside r' = 435 by t = 46), and during the super-horizon phase the binding energy cannot tolerate the associated 10⁻⁴-level errors. - Consequence: the early phase is run in geodesic slicing and the gauge is switched on later
(
pbh_vlasov.gauge_on_time): at the first coarse step past that time fref = K(x)/K_far is taken from the current slice and the lapse condition and Γ-driver start from lapse 1, shift 0 — the same situation as the validated late-start runs, which began at 0.5 t_C(0) from the synchronous LTB slice. - Running: test 2 with the switch at 0.5 t_C(0) and lapse_coeff 2 afterwards (
dev_tests/yoo_mu0.3_l2sw), to 0.97 t_C(0).
5 Oct 16:20 UTC — stage 1b test 2 passed: early start + geodesic phase + gauge switch follows LTB to ≤ 0.2 %
dev_tests/yoo_mu0.3_l2sw (Yoo data μ = 0.3, e = 0, three levels, matched deposit, 5 % steps; geodesic slicing to
0.5 t_C(0), then lapse_coeff 2 and the Γ-driver with fref = K/K_far of that slice; 251 coarse steps to 0.977 t_C(0)):
| step | ⟨τ⟩/t_C(0) | phase | R_3D/R_LTB (bins 4–48, labels 0.25–2.4 r_m) | M_MS/m_LTB |
|---|---|---|---|---|
| 200 | 0.390 | geodesic | 0.9996–1.0001 | 0.995–1.003 |
| 220 | 0.561 | gauge on | 0.9996–1.0003 | 0.996–1.003 |
| 240 | 0.77–0.80 | gauge on | 0.9978–1.0015 | 0.998–1.003 |
This is as good as the late-start validation (0.2–0.5 % at the caustic), so the complete early-start chain is validated before the caustic: analytic long-wavelength data → constraint-derived, deposit-matched particles → expansion-aware steps → gauge switch. Next: the coordinate-sphere diagnostic on an existing horizon (restart of the cold reference run), then the seven-level e = 0 run through the horizon phase and e = 0.2.
5 Oct 16:50 UTC — coordinate-sphere diagnostic validated; seven-level early-start e = 0 run queued
sphere_diagon the horizon of the cold reference run (restart ofvlasov_mu0.3_eps2fullfrom chk00152 for one step with the development binary): rays r_AH = 19.071, R = 194.66, M = 97.328; spheres r_out = 19.062 (no trapped point outside), M_out = √(A/16π) = 97.326; r_in = 18.874 (largest sphere trapped everywhere), M_in = 96.975; spread of Θ over the 96 directions at r_in 2.9·10⁻⁵ (cubic grid anisotropy). The area mass agrees with R/2 of the rays to 2·10⁻⁵; [r_in, r_out] brackets the spherical horizon within 1 % in radius.- Ladder step 3 queued behind the warm run (
queue_yoo_e0.sh, frozen binarybin/PBHVlasov3d.stage1b_a.ex, templateparams_yoo_mu0.3_e0_prod.txt): Yoo data μ = 0.3, e = 0, seven levels, geodesic to 0.5 t_C(0), then lapse_coeff 2 + Γ-driver, expansion-aware steps throughout (fallbackdt_scale_max = 1freezes the step after the switch), rays + spheres + τ profiles, stop 2.2 t_C(0). Estimated 12–14 h.
6 Oct 03:45 UTC — warm particles (σ = 0.0272 at t_H): no measurable change of the horizon growth at M ≥ 0.18 M_H
vlasov_mu0.3_warm (late start, lapse_coeff 2, 152 coarse steps to 2.2 t_C(0), 5 Oct 09:16 – 6 Oct 03:39 UTC, slowed
by the development tests; no NaN, no flagged particles). Results in runs/v1/vlasov3d/mu0.3_warm, compared with the
cold run in the same gauge (mu0.3_eps2full):
| t_far/t_C(0) | M_AH warm | M_AH cold | τ_AH(M) warm − cold | R_min/R_max warm |
|---|---|---|---|---|
| 1.710 (first ray horizon) | 0.180 | 0.182 | −0.001 | — |
| 1.80 | 0.233 | 0.235 | +0.001 | 0.997 |
| 2.00 | 0.377 | 0.379 | +0.001 | 0.997 |
| 2.20 | 0.518 | 0.521 | +0.001 | 0.998 |
Against LTB and the 1D cold run the warm 3D run sits where the cold one does (3D − LTB −0.003…+0.002, 3D − 1D cold ≤ 0.008 t_C(0) over 0.2–0.5 M_H). The dispersion lowers M_AH(t_far) by 0.4–1 % and delays τ_AH(M) by 0.1 %, and the thermal noise makes the horizon aspherical at the 0.2–0.5 % level (cold: 10⁻⁵). The 1D warm reference differs from the 1D cold run only at the first tiny horizon (0.015 M_H at 1.451 vs 0.0025 at 1.352 coordinate time) and is within its own noise at M ≥ 0.2; the 3D resolution (smallest horizon ≈ 0.06–0.18 M_H depending on the gauge) cannot see that regime. Conclusion for the σ_ent = 0.027 map: the de Broglie dispersion of this size does not change the growth of horizons above ≈ 0.1 M_H; its effect is confined to the first-horizon epoch, where the 1D code remains the instrument. Cost note: the warm run took ≈ 7.5 min per coarse step alone (cold: 4.75), the particle redistribution of the thermally moving lattice.
- Started 03:39 UTC:
vlasov_yoo_mu0.3_e0(ladder step 3; matching converged to 1.7·10⁻⁵).
7 Oct 00:45 UTC — ladder step 3 passed: seven-level early-start e = 0 run reproduces the horizon map; e = 0.2 started
vlasov_yoo_mu0.3_e0 (Yoo data from t_i, seven levels, geodesic to 0.5 t_C(0), then lapse_coeff 2 + Γ-driver,
expansion-aware steps throughout; 307 coarse steps, 6 Oct 03:39 – 23:59 UTC, no NaN, no flagged particles).
Shell check before the caustic: R_3D/R_LTB = 0.9991–1.0001 (labels 0.03–0.19 r_m) through the geodesic phase,
0.9965–1.0001 at τ = 0.56 after the switch, 0.995–0.996 at τ = 0.77 for labels 0.2–0.34 r_m (the late-start runs showed
the same −0.5 % near the caustic). First ray horizon at far time 1.4175 with M = 0.105 M_H (3 finest cells; spheres
bracket [0.104, 0.110]); M_AH = 0.70 M_H at 2.21 t_C(0). Results in runs/v1/vlasov3d/yoo_mu0.3_e0:
| M_AH / M_H | far time | τ_AH early start | τ_AH late start (mu0.3_eps2full) |
LTB t_AH | early − LTB |
|---|---|---|---|---|---|
| 0.11 | 1.427 | 1.1368 | — | 1.1418 | −0.005 |
| 0.20 | 1.559 | 1.2222 | 1.2219 | 1.2263 | −0.004 |
| 0.30 | 1.681 | 1.3134 | 1.3198 | 1.3191 | −0.006 |
| 0.40 | 1.798 | 1.4049 | 1.4123 | 1.4151 | −0.010 |
| 0.50 | 1.929 | 1.5101 | 1.5128 | 1.5166 | −0.007 |
| 0.60 | 2.065 | 1.6197 | — | 1.6250 | −0.005 |
The early-start pipeline agrees with the late-start one to ≤ 0.007 t_C(0) in the matter's proper time at the horizon and with LTB to ≤ 0.010 (3D − 1D cold −0.008…+0.018, the 1D itself being 0.002–0.02 earlier than LTB at these masses); the far-field (coordinate) times of the two pipelines differ by 0.18–0.24 t_C(0) — gauge, as before. Cost: 20.3 h on the CCX33 (the deep levels subcycle from the start, so the early phase was not as cheap as planned).
- Ladder step 4 started 00:45 UTC:
vlasov_yoo_mu0.3_e02— e = 0.2, p = 0, μ = 0.3 (Yoo et al.'s particle runs have a horizon for μ ≥ 0.05 at this e), same pipeline; matching converged to 2.7·10⁻⁵, rest mass 11078.0 (e = 0: 11074.0). Observables: sphere diagnostic (r_in/r_out, M from the area), first-horizon time and M_AH(τ) against the e = 0 run.
7 Oct 20:45 UTC — ladder step 4: e = 0.2, p = 0, μ = 0.3 — no horizon by 2.2 t_C(0)
vlasov_yoo_mu0.3_e02 (same pipeline as the e = 0 run; 310 coarse steps, 7 Oct 00:44 – 20:40 UTC, gauge on at
0.51 t_C(0), no NaN, no flagged particles; results in runs/v1/vlasov3d/yoo_mu0.3_e02). No trapped surface forms in
the core by the 2.2 t_C(0) stop: on the coordinate spheres Θ ≥ +0.08 inside r′ = 7 (M_MS ≈ 0.05 M_H) throughout, with
the direction spread Θ_max/Θ_min falling from 1.8 (0.8 t_C(0)) to 1.2 (2.2) as the core rounds off; the only negative
value (−0.0013 at r′ = 150, M_MS ≈ 1.1 M_H, last profile) is a single-point artefact at the outer edge of the
diagnostic. Core against the e = 0 run at the same far time:
| far time | lapse_min e = 0.2 / e = 0 | χ_min | ρ_c/⟨ρ⟩ |
|---|---|---|---|
| 1.4 | 0.603 / 0.514 | 0.234 / 0.174 | 80 / 276 |
| 1.8 | 0.529 / 0.399 | 0.157 / 0.105 | 146 / 6200 |
| 2.2 | 0.459 / 0.335 | 0.103 / 0.074 | 263 / 25 000 |
At e = 0 the puncture formed at 1.42 (first horizon 0.105 M_H) and reached 0.70 M_H by 2.2; at e = 0.2 the core has only a ×260 overdensity, a lapse of 0.46 and τ_core = 1.58 t_C(0) — the triaxial collapse (pancake → filament → third axis; Newtonian PM estimate of the third-axis collapse at ≈ 1.7–1.8 t_sph for e = 0.19) has not yet produced a trapped region. Yoo et al.'s particle run at this (μ, e) shows the lapse collapse at ≈ 20 t_H = 2.27 t_C(0), just beyond our stop time, and the central density is still rising, so the run is to be continued from chk00310 to ≈ 3 t_C(0) after the CCX43 rescale (first job on the new machine). Server idle at 20:45 UTC for the rescale.
8 Oct 03:45 UTC — e = 0.2, p = 0, μ = 0.3: a ≈ 1 M_H horizon appears at 2.97 t_C(0) (τ = 2.09)
The run was continued on the CCX43 (16 ranks) from chk00310 and then chk00320 to 4.0 t_C(0) (7 Oct 22:00 – 8 Oct
03:35 UTC; no NaN, no flagged particles). Results in runs/v1/vlasov3d/yoo_mu0.3_e02 (sphere diagnostic:
r_in = largest sphere trapped in every direction, r_out = radius beyond which no point is trapped, M from the area):
| far time | r_in | M_in | r_out | M_out | M (rays) | R_min/R_max (rays) | τ (matter at r_in) | lapse_min |
|---|---|---|---|---|---|---|---|---|
| 2.73 | — | — | < 140 | — | — | — | — | 0.33 |
| 2.974 | 57 | 0.87 | 98 | 1.07 | 0.97 | 0.805 | 2.09 | 0.29 |
| 3.256 | 89 | 1.10 | 127 | 1.27 | 1.15 | 0.94 | 2.38 | 0.25 |
| 3.552 | 114 | 1.27 | 150 | 1.44 | 1.32 | 0.99 | 2.64 | 0.22 |
| 3.965 | 127 | 1.42 | 172 | 1.63 | 1.52 | 0.94 | 2.97 | 0.19 |
- The first trapped point appears at 2.73 t_C(0), the first fully trapped sphere at 2.97 — already with 0.87–1.07 M_H and strongly aspherical (ray R_min/R_max 0.80); it rounds to 2–6 % within 0.5 t_C(0) and grows to 1.4–1.6 M_H by 4.0. At 3.2 the inner core (r′ < 8, M_MS < 0.5) is still untrapped (a thick trapped shell around a core with lapse 0.25); by 3.7 the spheres are trapped down to r′ = 3 and the lapse keeps collapsing (0.19 at 4.0).
- Against e = 0 (same μ, same pipeline): there the horizon was born tiny (0.105 M_H at far time 1.42, τ = 1.13) and grew to 0.70 M_H by 2.2 (τ_AH 1.68 at 0.65 M_H); at e = 0.2 nothing is trapped until the matter's proper time at the eventual horizon is 2.09 t_C(0), when the horizon appears with roughly the mass the spherical one would have reached by then (≈ 1 M_H, extrapolating the e = 0 growth of ≈ 1.1 M_H per t_C(0)). This is the triaxial sequence of the Newtonian estimate (pancake → filament → third-axis collapse at ≈ 1.7–1.8 t_sph for e ≈ 0.2) followed by trapping of the whole assembled core.
- Yoo et al. (particles, 80³, e = 0.2, μ = 0.3): lapse collapse at ≈ 20 t_H = 2.27 t_C(0). Our first trapped point at 2.73 and sphere at 2.97 are in a different slicing (and their criterion is the lapse, not a trapped surface); the invariant statement from our run is τ = 2.09 t_C(0) at the matter of the first fully trapped sphere.
- Machine note: on the CCX43 the 16 hardware threads (8 Milan cores) give ≈ 4.0 min per coarse step against 4.75 on the CCX33 — far from 2×; to be checked whether 8 ranks bound to cores do better.
8 Oct 07:05 UTC — CCX43 benchmark and the stage-1b queue
- Benchmark (restart of the e = 0.2 run from chk00360, two fully subcycled coarse steps): 16 ranks on the 16 hardware
threads 4.2–4.7 min per coarse step; 8 ranks bound to the 8 Milan cores 3.4 min (restart + 2 steps 471 s vs 639 s).
The hyperthreads cost more than they give for this memory-bound code; production uses
--map-by core --bind-to core -np 8, ≈ 1.4× the CCX33. scripts/grchombo/stage1b_params.pywrites the early-start parameters for any (μ, e, p) with the exact LTB t_C(0), a_ref = a(0.5 t_C(0)) and the same comoving box as the validated μ = 0.3 runs (resolution identical in units of t_C(0) and M_H). Queue started (queue_stage1b.sh, each run to 3.5 t_C(0), checkpoints every 20 steps):s1b_mu0.1_e0.2(t_C(0) = 6159, a_ref = 811, L′ = 12457) →s1b_mu0.05_e0.2→s1b_mu0.05_e0.13(t_C(0) = 14994, a_ref = 1468, L′ = 22544). Expected ≈ 1 day per run.