Guide 06 · September 10, 2026

What the current runs can establish

This dated review describes the earlier PhiFlow runs. The current completed AMReX run and refined-backend checks are recorded separately; the numerical cautions here still apply.

The next accuracy step is a controlled full-domain refinement with an explicit forcing clock. Larger peaks in the smaller box are not evidence that it better resolves the intended singular core.

The forcing needs its own timestep limit

The original production settings were projected RK2, CFL 0.20, max_dt = 0.001, and the explicit diffusion cap 0.12 Δx²/ν. These control the flow and viscous timescales. The retained pulses also oscillate in logarithmic time, with frequencies increasing as 1/τ, where τ = 1 − t.

At the midplane, the fastest retained first-family phase has rate approximately 21.347/τ. At t = 0.985, its period is about 0.00442. Evaluating the prescribed 128³ target gives estimated old-rule timesteps of 0.000762 in the full box and 0.000509 in the smaller box: about 5.8 and 8.7 steps per fastest retained phase cycle. These estimates use target peak speed; actual steps can be shorter due to solver velocity or output boundaries. Gate amplitudes determine which modes contribute at a particular time. Quadratic advection in the manufactured force can produce still faster sum-frequency terms.

The new default bounds the phase advance of those quadratic combinations by 0.15 radians, about 42 samples per fastest bounded cycle. If C bounds the phase derivative with respect to −log τ, the solver imposes

Δt ≤ τ [1 − exp(−0.15/C)].

For the default three-level hierarchy, C ≈ 42.693. This gives a cap near 0.0000526 at t = 0.985. The centered time-difference half-window used to manufacture the force is also limited to one tenth of that cap. This is a conservative temporal-resolution safeguard, not a substitute for halving the step and comparing results.

The original full-domain 128³ run completed through t = 0.985 and is retained as a legacy baseline. The smaller-box run was stopped after its checkpoint at t = 0.9057999066; an older 224³ hand-shaped-profile run was stopped after its checkpoint at t = 0.848. Their data and original source remain intact. Schema-6 outputs load with the forcing-phase limit explicitly recorded as absent. The first corrected campaign used schema 7; the cubic-interpolation diagnostics now use schema 8, with isolated source snapshots and new output directories. Older files explicitly retain linear profile interpolation.

Early-time timestep check

A bounded 24³ full-domain test started from exact rest and reached t = 0.65. With the original force-difference window held at 0.0002, the difference between timesteps 0.002 and 0.001 was 3.70 times the difference between 0.001 and 0.0005, consistent with near-second-order behavior. The latter change was 9.37 × 10−6 in relative velocity L². Halving the force-difference window separately changed the final velocity by 2.73 × 10−6. This supports the early ramp, but does not validate late-time oscillations or spatial convergence at 128³.

A separate, target-initialized 24³ diagnostic window from t = 0.98 to 0.985 compared phase limits 0.15, 0.075, and 0.0375. Successive final-velocity differences were 1.08 × 10−5 and 8.99 × 10−6 in relative L². The force-difference window tightened with the phase limit, so this is a coupled sensitivity check, not a pure timestep-order test. It did not show a clean factor-of-four reduction. This small, spatially underresolved diagnostic is not a start-from-rest result and does not establish production convergence.

The smaller box changes the forcing

At matched saved time t = 0.7576568214, the original full-resolution, float64 force volumes give the following comparison. The taper region is defined by r ≥ localization_inner or |z| ≥ localization_inner. Its force fraction is taper|f|² / ∫box|f|²; it is not a kinetic-energy fraction.

QuantityFull domainSmaller box
Half-width1.000.68
Cutoff transition width in cells14.084.71
Cutoff-to-periodic-boundary gap in cells3.841.88
Fraction of ∫|f|² in taper region16.10%95.00%
Peak |f|17.95195.69
Peak |u|1.0302.838
Peak vorticity16.63160.46

The smaller-box force maximum lies at approximately (−0.452, −0.441, 0.622), in its cutoff region. Thus the larger global peaks are strongly associated with the changed exterior taper. The comparison combines a spacing change and a model change; it cannot serve as a clean grid-convergence test. The next production comparison should retain the full box and the same cutoff while changing resolution.

“Resolved” only checks a core length

The legacy resolved diagnostic tests whether the nominal radial and axial similarity lengths span at least four cells. It does not audit every pulse wavelength or the cutoff transition. At t = 0.985, the full and smaller boxes have 4.08 and 5.99 cells per nominal radial scale, but only about 1.99 and 2.93 cells per finest retained radial wavelength at the midplane annulus midpoint. These are local phase-gradient estimates; the amplitude gates may suppress that mode at a given time.

Those wavelengths are too short for an accuracy claim. Keep the current trajectories as numerical references, check spectra and overlapping-core quantities, and compare full-box resolutions and timesteps before advancing claims about blow-up. A small error against a manufactured target alone cannot establish that the target’s finest features are spatially resolved.

Projection and visualization fixes

The centered FFT derivative has exact null modes at zero frequency and at the even-grid Nyquist frequency. Evaluating sin(−π) numerically left a tiny nonzero value; division by its square could erase an alternating divergence-free mode. The projector now zeros those symbols explicitly. A regression test preserves all centered null modes. This fixes the discrete projection identity; it does not make Nyquist modes trustworthy physical information.

The late coarse-grid check also exposed a diagnostic failure when pulse bins contain no samples: an empty weighted histogram produced integer output, which could not receive floating-point division. Mean and covariance accumulators now explicitly use floating-point arrays, with a regression covering the empty-bin case.

The 3D exporter now animates saved simulation times, offers total magnitude and x/y/z components, and displays arrows using all three components. Color scales, surface thresholds, vector scaling, and physical axes remain fixed through time. GIF and MP4 exports support camera rotation or a fixed camera. Isosurfaces use scikit-image marching cubes; interactive controls use Plotly frames.

Display arrays are explicitly subsampled from the solver grid. They are not additional CFD resolution. Saved volume frames are held without interpolating fluid states; a rotating single snapshot is distinct from physical time evolution.

Bounded-memory capture on two clocks

The original 128³ runs saved full force volumes at 24 selected checkpoints but did not retain a velocity-volume history. Their force movies can show the large-scale evolution, but that sparse output clock cannot resolve every late-time pulse cycle. Tightening integration alone does not improve those movies. Corrected production preserves velocity and force histories independently of rendering on the denser streamed clock described below. Historical velocity volumes cannot be recovered from the two central slices.

A further memory audit found that saved 2D slices were NumPy views into complete 3D arrays. Each slice could keep a 48 MiB parent allocation alive at 128³. The solver now copies those small slices explicitly. Regression tests verify independent ownership, and streamed volume capture avoids accumulating full 3D histories in memory or rewriting them inside every restart checkpoint.

Corrected runs can use --stream-volumes to write sparse, full-resolution float64 velocity and force checkpoints into separate atomic files. An independent --preview-phase-step 0.3 clock writes both vector fields at 487 saved times through t = 0.985, with 32 samples per axis in float32. The active-interval phase spacing bounds the fastest modeled forcing-phase advance between display samples to 0.3 radians, about 21 samples per cycle. Spatial subsampling can still miss fine structures; these are display frames, not an accuracy dataset. Both clocks preserve the exact initial rest state.

The reader preserves source-cell coordinates, ignores unfinished temporary files, and can read an active run. Interrupted runs resume from the last atomic solver checkpoint; a regression verifies agreement with uninterrupted integration. A small progress.json reports saved time, completed diagnostic frames, and timestep statistics without loading the large restart archive.

The replacement sequence is a full-interval, from-rest timestep pilot; a corrected full-domain 128³ baseline; and a full-domain 192³ refinement after a memory preflight. Keep the box, cutoff, viscosity, and pulse hierarchy fixed. Use a force-difference half-window of 10−6 for the timestep pilot so halving the integration clock does not also change the manufactured force. Extend the endpoint only after temporal and spatial checks, not merely because a run remains finite.

The 192³ memory preflight completed a short, target-initialized window from 0.78 to 0.785 with both capture paths enabled. It took 314 seconds, with 7.59 GiB maximum resident memory and a 10.31 GiB peak memory footprint reported by macOS. This is a capacity test, not a from-rest result or a convergence result. The planned 81-frame slice history adds about 273 MiB; 12 uncompressed full-volume velocity/force pairs occupy about 3.80 GiB on disk rather than accumulating in RAM. These measurements support one 192³ production process on a 16 GB machine, with headroom monitored during the full trajectory, not an immediate jump to 224³.

The one-shot launch gate stopped after the three-level 32³ temporal pilot failed. Successive relative final-velocity differences were 1.22316 × 10−4 and 6.47590 × 10−5, giving a ratio of 1.889 rather than the required 2.5–6. Neither production job launched. The failed campaign used source 14ea695. Four controlled diagnostics using 9d2afb8 now test smooth profile interpolation, a smaller force-difference window, a larger spatial grid, and a background-only ablation. See the accuracy budget for the evidence, analytical mesh requirements, and proposed predefined time grid.