# AC14 gas–dust scientific replay package

Save every linked scientific file in one ordinary directory. These scripts run
without a private repository checkout, an interactive Lab engine or a network
service. The matrices and grid code are independently authored scientific
analysis, not a redistribution of the protected interactive entry.

Use Python 3.10+ and the tested versions NumPy 2.0.2 / SciPy 1.13.1. The recorded host
verification also ran successfully on Python 3.9.6. Create a new environment:

```sh
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txt
python3 -W error replay-streaming.py --input streaming-input.json --out streaming-replay-rerun.json
python3 -W error replay-radial.py --input radial-results.json --out radial-replay-rerun.json
python3 -W error replay-brightness.py --data . --out brightness-replay-rerun.json
```

Keep linear-system.py and grid-patch.py beside replay-streaming.py. The full
linear replay may take several seconds to a minute depending on hardware.
Compare scientific values within numerical tolerance across different BLAS
libraries: eigenvalue order and eigenvector phase can vary even with identical
physics. The fixed input and file hashes identify exact saved inputs; they do not
establish physical accuracy. The recorded local detached run reproduces the
frozen outputs exactly with the pinned runtime on the same host.

## Three separate calculations

1. **Synthetic linear streaming benchmark.** The input fixes Stokes numbers,
   volume loadings and both radial/vertical wave numbers. A transverse projection
   of the gas equations produces six evolving amplitudes. A separate direct
   transcription of Youdin–Goodman equations 26–31 produces a generalized
   center-of-mass/relative-velocity pencil with six finite physical roots and
   algebraic constraint roots. Direct ODE and actual 2D periodic linear grid
   evolution independently check the growth. The grid retains all velocity
   components; it is not a one-dimensional radial trap.
2. **Synthetic finite-volume radial states.** radial-results.json stores actual
   evolved gas/dust mass and momentum fields and the measured spatial/time-step
   comparisons. replay-radial.py independently remeasures those saved states;
   it does not rerun the protected nonlinear radial solver. This pressure-trap
   experiment has no vertical modes and is not streaming instability.
3. **Observed DSHARP Elias24 intensity.** Elias24.profile.txt contains the exact
   public 300-row/eight-column source file. README_profiles is the source's full
   column description. Elias24_continuum.header contains only the 8640 original
   primary FITS-header bytes, obtained by a bounded range request. There are no
   image pixels or measurement sets here. replay-brightness.py uses the actual
   frequency and beam to reproduce brightness temperatures. Negative intensities
   remain; Planck temperatures are null when the inversion is undefined.

## Conventions and independent references

Linear time is 1/Omega, length eta*r and velocity eta*vK. Perturbations have
exp(sigma*t+i*k.x); positive real(sigma) means growth. Gas is incompressible in
six-state calculations; eight-state weakly compressible references use cs=20.
Stopping time is fixed. Background pressure acceleration maintains uniform drift.
The complete gas-density contribution to drag is retained in the eight-state
system. Benitez-Llambay/Krapp/Pessah 2019 v3, Table 4 and Appendix E give the matching
LinA/B roots; Section 3.5.3, equation 86 explains the small established difference
from Youdin/Johansen 2007, Table 1. The 2019 paper instead writes exp(-omega*t), so
its complex omega is minus this package's sigma. Absolute versus relative dust
amplitude also changes the eigenvector normalization. No benchmark coefficient
is adjusted to match a printed root.

The actual linear grid has one periodic wavelength in x and z, centered spatial
derivatives, discrete Fourier pressure projection and RK4 time stepping. A mode
has effective stencil wave number sin(k*dx)/dx. Each resolution starts from its
discrete eigenvector; the integrator receives no growth rate. This isolates the
integrator check, then 16/32/64 cells establish spatial convergence toward the
continuum. Seeding a continuum eigenvector on a coarse grid can produce an early
superposition transient. The separate DOP853ODE starts from the continuum seed.
The frozen output gives every root, mode normalization, ODE history, measured
finite-grid growth, half-step run and 32-cell final density array with first array
axis radial x and second vertical z.

No-feedback, no-vertical-mode and no-pressure-drift controls remove the positive
linear growth. The terminal-velocity cubic is saved as an approximation with its
wave-number/stopping-time domain measure, not as the reference growth. Equal
Laplacian diffusion on every perturbation is a declared toy closure and shifts
all eigenvalues by -D*k^2. It is not the full Umurhan/Estrada/Cuzzi alpha-disk
model with separate viscosity, dust diffusion/pressure and dilution.

The nonlinear radial patch instead uses length H=cs/Omega and velocity cs, with
periodic 8H extent. Gas pressure comes from actual evolving density. The initial
peak is prepared, then allowed to change, with no continuing peak force. A
single-valued pressureless dust velocity cannot represent crossing streams or
dense caustics. The finite early trapping calculation is not a nonlinear
streaming-saturation or self-gravity calculation. Its 128-cell default relative
L1 dust-density difference from a 1024-cell reference is 2.92 percent at t=8/Omega,
and its peak is about 6.1 percent lower. Stored mass-conservation residuals must
not be quoted as continuum accuracy. The source scheme uses first-order spatial
Rusanov fluxes, SSPRK2 transport and symmetric exact drag/epicycle source steps.

## Observed-product provenance and use

The official DSHARP release is project 2016.1.00484.L. The exact ASCII profile
was last modified 5 August 2019; its README of 5 February 2020 explains the radius-column
correction and propagation. The measured header frequency is 231943014843 Hz and
the beam is 0.0367535241 by 0.0342671573 arcsec. No full FITS hash is claimed for a
header-only request. The synthesized beam correlates radial samples; pointwise
uncertainties are not a covariance matrix. Intensity, brightness temperature,
dust amount, gas pressure and planet evidence are distinct quantities.

Cite DSHARP I: Andrews et al. 2018, ApJL 869, L41, and DSHARP II: Huang et al. 2018,
ApJL 869, L42, as requested by the official community data release. Original
observational files retain their source terms; this package does not assert a
new license for those files or for linked primary papers. Metadata and all
checksums are retained in observed-provenance.json and provenance.json.

## Authored scientific-material permissions

The independently authored Python scientific scripts are offered under MIT.
Authored synthetic inputs, frozen outputs, prose and provenance are offered under
CC BY 4.0 with attribution to Sandbox Physics, AC14, 2026-10-28. These grants cover
the explicitly linked scientific package only, not the protected Lab engine.
Original observed files and primary papers keep their own source terms.

MIT notice: Copyright 2026 Sandbox Physics. Permission is hereby granted, free
of charge, to any person obtaining a copy of these scientific scripts to use,
copy, modify, merge, publish, distribute, sublicense and/or sell copies, subject
to retaining this copyright and permission notice. THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
