Supplementary Material
"Acoustically optimal state points for constraining CCS mixture models in the
metering-critical region of CO2 + N2, O2, and Ar" — R.C. Aiken

Contents
--------
data/                 17 CSV files:
  c_surface_grid.csv        c(T,P,x) over the metering window, 3 binaries
  critical_locus.csv        mixture critical points vs impurity fraction
  sensitivity_grid.csv      dc/dx and metering-error amplification
  wegge_data.csv            138 points extracted from Wegge et al. (2016) + deviations
  jacobian_{N2,O2,Ar}.csv   dc/d(betaT,gammaT,betaV,gammaV) candidate grids
  design_{N2,O2,Ar}.csv     RANKED 48-POINT D-OPTIMAL DESIGNS (the measure-here lists)
  design_summary.csv        D-efficiencies and parameter sigmas
  posterior_{N2,O2,Ar}.csv  post-campaign delta-c and metering-error fields
  rehearsal_summary.csv     synthetic-fit recovery and coverage statistics
  hardening.csv             Fedorov-exchange and noise-robustness checks
SoundSpeed_data_extracted.xlsx   extracted experimental dataset + source register
scripts/              13 scripts reproducing every figure and table:
  baseline.py -> plots.py          Figs on surface/locus/sensitivity (Sect. 3.1)
  overlay.py                       Fig 3 (deviations vs experiment)
  jacobians.py -> design.py        identifiability + designs (Sect. 3.2-3.3)
  harden.py                        Fedorov exchange + robustness (Table 2)
  rehearsal.py -> plots_s23.py     synthetic regression + posterior (Sect. 3.4)
  (js files: document generation only)

Reproduction: Python 3.11, CoolProp 8.0.0, numpy/pandas/matplotlib.
Run order: baseline.py, plots.py, overlay.py, jacobians.py <fluid>, design.py,
harden.py, rehearsal.py, plots_s23.py. Total ~25 min on 2 cores.
