Goal
Complete the controller comparison ladder as a second meta-analysis (follow-up to the CC-vs-ff+PID comparison landing today). Produce a single overlay across all four controllers:
- passive (linear viscous damper) → baseline
- opt_passive (optimal passive damping) → practical non-reactive ceiling
- exc_ff_pid (tuned causal/active) → engineered controller
- cc (complex-conjugate) → theoretical optimum (Budal-matching)
Tasks
1. Add 6 missing configs
passive and opt_passive currently exist only for VGM-0 and VGM-45. Add, modeled on the VGM-0/45 templates with angle-matched H5:
config/vgoswec_10_passive.yaml, config/vgoswec_20_passive.yaml, config/vgoswec_90_passive.yaml
config/vgoswec_10_opt_passive.yaml, config/vgoswec_20_opt_passive.yaml, config/vgoswec_90_opt_passive.yaml
2. Sweep coverage for passive + opt_passive
Add capture-efficiency sweeps (no such scripts exist today) on the shared T=0.5–7 s grid, H=0.05 m, writing to analysis/passive/ and analysis/opt_passive/ (own folders, mirroring analysis/cc/).
- opt_passive should re-tune
design_omega = 2π/T per sweep point (optimal-passive at each period, like CC does), not fixed at resonance.
- passive runs with its fixed
B_pto per period.
3. ⚠️ Reconcile wave-amplitude inconsistency (correctness blocker)
The existing ff+PID analysis docs disagree on sea state:
analysis/BENCHMARK_NOTES.md: H=0.05 m, A=0.025 m, grid ω=4–12 (T≈0.5–1.57 s)
analysis/README.md + docs/CONTROLLERS.md: A=0.014 m (H=0.028 m), grid T=2.0–7.0 s
CC uses H=0.05 m. Pin ALL four controllers to H=0.05 m (A=0.025 m) and fix the doc conflict so every P_capture and P_opt is computed at the same amplitude. Without this, all cross-controller ratios silently break.
4. Four-controller overlay
Extend the comparison overlay (from today's cc_vs_ffpid_comparison.py) to all four controllers on the shared T=0.5–7 s axis: P_capture and η panels, per-flap + cross-flap summary. Order the legend as the ladder: passive → opt_passive → ff+PID → cc.
Validation
- All four controllers swept on identical T=0.5–7 s grid at H=0.05 m for all 5 flaps.
- Amplitude reconciled to a single H=0.05 m across docs and scripts.
- Overlay shows the full ladder;
--plot-only regenerates all figures from committed CSVs.
Goal
Complete the controller comparison ladder as a second meta-analysis (follow-up to the CC-vs-ff+PID comparison landing today). Produce a single overlay across all four controllers:
Tasks
1. Add 6 missing configs
passive and opt_passive currently exist only for VGM-0 and VGM-45. Add, modeled on the VGM-0/45 templates with angle-matched H5:
config/vgoswec_10_passive.yaml,config/vgoswec_20_passive.yaml,config/vgoswec_90_passive.yamlconfig/vgoswec_10_opt_passive.yaml,config/vgoswec_20_opt_passive.yaml,config/vgoswec_90_opt_passive.yaml2. Sweep coverage for passive + opt_passive
Add capture-efficiency sweeps (no such scripts exist today) on the shared T=0.5–7 s grid, H=0.05 m, writing to
analysis/passive/andanalysis/opt_passive/(own folders, mirroringanalysis/cc/).design_omega = 2π/Tper sweep point (optimal-passive at each period, like CC does), not fixed at resonance.B_ptoper period.3.⚠️ Reconcile wave-amplitude inconsistency (correctness blocker)
The existing ff+PID analysis docs disagree on sea state:
analysis/BENCHMARK_NOTES.md: H=0.05 m, A=0.025 m, grid ω=4–12 (T≈0.5–1.57 s)analysis/README.md+docs/CONTROLLERS.md: A=0.014 m (H=0.028 m), grid T=2.0–7.0 sCC uses H=0.05 m. Pin ALL four controllers to H=0.05 m (A=0.025 m) and fix the doc conflict so every P_capture and P_opt is computed at the same amplitude. Without this, all cross-controller ratios silently break.
4. Four-controller overlay
Extend the comparison overlay (from today's
cc_vs_ffpid_comparison.py) to all four controllers on the shared T=0.5–7 s axis: P_capture and η panels, per-flap + cross-flap summary. Order the legend as the ladder: passive → opt_passive → ff+PID → cc.Validation
--plot-onlyregenerates all figures from committed CSVs.