OQG MEGA 35 kHz Characterization V0.2

Open the companion PDF for the six plot sheets and interpretation. The
plots are also supplied individually as PNG, SVG, and vector PDF files.
CSV data, parameters.json, model.py, build_plots.py and build_report.py
make the calculation reproducible. Read MODEL_NOTES.txt before reusing
the numerical results.

This extends V0.1 to 35 kHz and 1-200 kHz sweeps at 100 Vpp, with an
analytic distributed axial piezo model. The b=1 endpoint is fixed; hill
depth and gradient are linked by work. Conditional thrust is prescribed
through a required environmental field load; its source and whole-device
momentum exchange have not been solved. High-frequency numerical curves
are not validated component capabilities or demonstrated lift.

Run, in this directory:
  OPENBLAS_NUM_THREADS=1 python build_plots.py
  python build_report.py

Dependencies: numpy, scipy, matplotlib, reportlab, pypdf.
The six plot sheets cover repeated cycles; field/energy/preload;
mass-frequency response; lift and actuator demands; extreme motion;
and full-system momentum/power sensitivity.
