Antoine
96b196de58
feat: Add Zernike GNN surrogate module and M1 mirror V12/V13 studies
This commit introduces the GNN-based surrogate for Zernike mirror optimization
and the M1 mirror study progression from V12 (GNN validation) to V13 (pure NSGA-II).
## GNN Surrogate Module (optimization_engine/gnn/)
New module for Graph Neural Network surrogate prediction of mirror deformations:
- `polar_graph.py`: PolarMirrorGraph - fixed 3000-node polar grid structure
- `zernike_gnn.py`: ZernikeGNN with design-conditioned message passing
- `differentiable_zernike.py`: GPU-accelerated Zernike fitting and objectives
- `train_zernike_gnn.py`: ZernikeGNNTrainer with multi-task loss
- `gnn_optimizer.py`: ZernikeGNNOptimizer for turbo mode (~900k trials/hour)
- `extract_displacement_field.py`: OP2 to HDF5 field extraction
- `backfill_field_data.py`: Extract fields from existing FEA trials
Key innovation: Design-conditioned convolutions that modulate message passing
based on structural design parameters, enabling accurate field prediction.
## M1 Mirror Studies
### V12: GNN Field Prediction + FEA Validation
- Zernike GNN trained on V10/V11 FEA data (238 samples)
- Turbo mode: 5000 GNN predictions → top candidates → FEA validation
- Calibration workflow for GNN-to-FEA error correction
- Scripts: run_gnn_turbo.py, validate_gnn_best.py, compute_full_calibration.py
### V13: Pure NSGA-II FEA (Ground Truth)
- Seeds 217 FEA trials from V11+V12
- Pure multi-objective NSGA-II without any surrogate
- Establishes ground-truth Pareto front for GNN accuracy evaluation
- Narrowed blank_backface_angle range to [4.0, 5.0]
## Documentation Updates
- SYS_14: Added Zernike GNN section with architecture diagrams
- CLAUDE.md: Added GNN module reference and quick start
- V13 README: Study documentation with seeding strategy
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 08:44:04 -05:00
..
2025-11-16 13:35:41 -05:00
2025-12-06 13:40:14 -05:00
2025-11-24 09:12:36 -05:00
2025-12-10 08:44:04 -05:00
2025-12-06 20:01:59 -05:00
2025-11-16 21:29:54 -05:00
2025-11-17 21:24:02 -05:00
2025-11-24 09:21:55 -05:00
2025-12-07 14:52:25 -05:00
2025-12-04 07:41:54 -05:00
2025-12-04 07:41:54 -05:00
2025-11-15 08:05:19 -05:00
2025-11-25 19:23:58 -05:00
2025-11-25 19:23:58 -05:00
2025-11-25 19:23:58 -05:00
2025-12-07 14:52:25 -05:00
2025-11-26 07:53:00 -05:00
2025-12-07 14:52:25 -05:00
2025-11-17 14:36:00 -05:00
2025-11-16 13:35:41 -05:00
2025-11-16 13:35:41 -05:00
2025-11-17 14:36:00 -05:00
2025-11-24 09:21:55 -05:00
2025-11-17 12:34:06 -05:00
2025-11-18 09:00:10 -05:00
2025-11-16 13:35:41 -05:00
2025-11-17 19:07:41 -05:00
2025-11-25 19:23:58 -05:00
2025-11-25 19:23:58 -05:00
2025-12-07 14:52:25 -05:00
2025-11-25 19:23:58 -05:00
2025-11-17 21:24:02 -05:00
2025-11-21 15:58:00 -05:00
2025-11-25 19:23:58 -05:00
2025-11-25 19:23:58 -05:00
2025-11-24 09:27:27 -05:00
2025-11-25 19:23:58 -05:00
2025-12-07 19:10:45 -05:00
2025-11-17 19:07:41 -05:00
2025-12-04 07:41:54 -05:00
2025-11-25 19:23:58 -05:00
2025-12-04 07:41:54 -05:00
2025-11-17 14:31:33 -05:00
2025-11-20 20:25:33 -05:00
2025-11-15 13:56:41 +00:00
2025-11-16 21:29:54 -05:00
2025-11-20 20:25:33 -05:00
2025-11-16 21:29:54 -05:00
2025-11-24 09:12:36 -05:00
2025-11-16 13:35:41 -05:00
2025-11-17 21:29:21 -05:00
2025-11-25 19:23:58 -05:00
2025-11-25 19:23:58 -05:00
2025-11-25 19:23:58 -05:00
2025-11-20 20:25:33 -05:00
2025-11-17 14:36:00 -05:00
2025-12-06 20:01:59 -05:00
2025-11-16 13:35:41 -05:00
2025-11-25 19:23:58 -05:00
2025-11-25 19:23:58 -05:00
2025-11-25 19:23:58 -05:00
2025-11-17 14:36:00 -05:00
2025-11-26 07:53:00 -05:00
2025-12-07 14:52:25 -05:00
2025-12-06 20:01:59 -05:00
2025-12-04 17:36:00 -05:00
2025-11-16 13:35:41 -05:00
2025-11-26 07:53:00 -05:00
2025-11-25 19:23:58 -05:00
2025-11-17 19:07:41 -05:00
2025-11-16 13:35:41 -05:00