- Shift analysis from raw-field q_ctl to correction-field dq_ctl = q_ctl - q_blk - Force/action/signature CCD for illusion 0.75L, 1.0L, 1.5L - Zone-restricted CCD (near_body/body_wake/sensor_zone) with spatial separation evidence - 1.5L identified as special mechanism (low action coupling, phase drift) - Karman reference data collected (q_in, q_blk) - Snapshot POD speedup (96x96 instead of 1310720x96) - Comprehensive report: docs/ccd_correction_field_report.md (412 lines) - Handover document: docs/ccd_handover.md Co-authored-by: Cursor <cursoragent@cursor.com>
75 lines
4.0 KiB
Markdown
75 lines
4.0 KiB
Markdown
# CCD Direction Handover
|
|
|
|
## Agent Background
|
|
|
|
This agent worked on the CCD (Canonical Correlation Decomposition) analysis pipeline for the DynamisLab fluidic pinball project. The work spanned approximately 7-8 hours over 2026-06-14/15, covering Round 5 (raw-field baseline) and Round 6 (correction-field framework).
|
|
|
|
## Work Summary
|
|
|
|
### What was accomplished
|
|
|
|
1. **Data pipeline overhaul**: Replaced the old `resampled.npz` (interpolated) format with `fields_aligned.npz` (96 non-interpolated raw field snapshots) + `phase_plan.json`. Implemented `load_aligned_fields()` in `utils/resampling.py` as the unified data loader.
|
|
|
|
2. **Raw-field CCD baseline (Round 5)**: `ccd/run_ccd.py` and `ccd/validate.py` rewritten for the new data format. Target-only POD basis, per-force observable (SigmaFy primary), Q_delay=6, per-case z-score. 90 CCD entries, LOCO validation passed for force_fy (R2 0.66-0.71).
|
|
|
|
3. **Correction-field framework (Round 6)**: Shifted analysis object from `q_ctl` to `dq_ctl = q_ctl - q_blk` (the control correction field). Built `correction_analysis/compute_correction_fields.py` for unified q_in/q_blk/q_ctl/q_tar + dq_* field computation.
|
|
|
|
4. **Completed analyses in round 6**:
|
|
- Force/action CCD on dq_ctl (0.75L, 1.0L)
|
|
- Signature line CCD (0.75L, 1.0L) with tau scan (0, geom, corr)
|
|
- 1.5L force/action/signature CCD + phase drift diagnostics
|
|
- Steady cloak quantitative metrics
|
|
- Zone-restricted CCD (near_body, body_wake, sensor_zone) for 0.75L and 1.0L
|
|
- Snapshot POD speedup (SVD on 96x96 instead of 1310720x96)
|
|
|
|
5. **Karman reference data collected**: karman_q_in (vortex street without pinball) and karman_q_blk (pinball in vortex street, no control) — both 96 aligned frames.
|
|
|
|
6. **Documentation**:
|
|
- `docs/ccd_correction_field_report.md` — comprehensive 412-line report explaining everything from scratch, including 10-figure reading guide
|
|
- `docs/sr_ccd_oid_mapping.md` — cross-pipeline mapping (DRAFT - needs verification from SR and OID directions)
|
|
- `src/CCD_analysis/ccd_knowledge.md` — updated with final results
|
|
- `src/CCD_analysis/ccd_notes.md` — updated with completion status
|
|
|
|
### Key findings
|
|
|
|
1. **1.0L**: O(dqctl, dqtar)=0.913, force_fy m80=1 — the controller's correction nearly perfectly matches the target's required correction, and it's highly concentrated.
|
|
|
|
2. **Force vs Signature separation**: O(force,sig)=0.41-0.55 at tau=0 (separated), rising to 0.77-0.81 at tau=tau_c (shared). Zone-CCD shows 0.75L sensor_zone has O=0.01 at tau=0 (near orthogonal) and body_wake has O=0.917 at tau=tau_c.
|
|
|
|
3. **1.5L special mechanism**: O=0.667, action sigma1=0.28 (1/4 of others), strong phase drift, correction concentrated near-body.
|
|
|
|
### What is not done
|
|
|
|
1. **Karman cloak analysis** — data is ready (q_in, q_blk, q_ctl all have fields_aligned.npz), correction-field framework supports it, but analysis was deferred. Different physical question: distortion compensation vs target generation.
|
|
|
|
2. **1.5L force-vs-signature overlap** — 0.75L and 1.0L have O(force,sig) values, 1.5L has signature m80 but no overlap comparison.
|
|
|
|
3. **SR-CCD-OID mapping** — `docs/sr_ccd_oid_mapping.md` was written without reading SR and OID reports. Needs correction.
|
|
|
|
4. **Mixed-basis sensitivity** — deferred sensitivity check (currently target-only basis).
|
|
|
|
## Quick Start for Your First Commands
|
|
|
|
```bash
|
|
# Read the comprehensive report
|
|
less docs/ccd_correction_field_report.md
|
|
|
|
# Read the knowledge base
|
|
less src/CCD_analysis/ccd_knowledge.md
|
|
|
|
# Explore results
|
|
ls src/CCD_analysis/data/ccd/*.json
|
|
python3 -c "import json; r=json.load(open('src/CCD_analysis/data/ccd/correction_ccd_results.json')); print(f'{len(r)} entries'); [print(k) for k in list(r.keys())[:5]]"
|
|
|
|
# Check available figures
|
|
ls src/CCD_analysis/data/figures/*.png | wc -l
|
|
```
|
|
|
|
## Environment
|
|
|
|
- All CPU analysis: `conda run -n pycuda_3_10`
|
|
- GPU collection: same environment, devices 2 or 3
|
|
- LegacyCelerisLab (FlowField) needed for GPU scripts
|
|
- Python 3.10+, numpy, matplotlib, scipy (via conda)
|
|
- `sys.path.insert(0, 'src')` needed for imports
|