Major improvements to telescope mirror optimization workflow: Assembly FEM Workflow (solve_simulation.py): - Fixed multi-part assembly FEM update sequence - Use ImportFromFile() for reliable expression updates - Add DuplicateNodesCheckBuilder with MergeOccurrenceNodes=True - Switch to Foreground solve mode for multi-subcase solutions - Add detailed logging and diagnostics for node merge operations Zernike RMS Calculation: - CRITICAL FIX: Use correct surface-based RMS formula - Global RMS = sqrt(mean(W^2)) from actual WFE values - Filtered RMS = sqrt(mean(W_residual^2)) after removing low-order fit - This matches zernike_Post_Script_NX.py (optical standard) - Previous WRONG formula was: sqrt(sum(coeffs^2)) - Add compute_rms_filter_j1to3() for optician workload metric Subcase Mapping: - Fix subcase mapping to match NX model: - Subcase 1 = 90 deg (polishing orientation) - Subcase 2 = 20 deg (reference) - Subcase 3 = 40 deg - Subcase 4 = 60 deg New Study: M1 Mirror Zernike Optimization - Full optimization config with 11 design variables - 3 objectives: rel_filtered_rms_40_vs_20, rel_filtered_rms_60_vs_20, mfg_90_optician_workload - Neural surrogate support for accelerated optimization Documentation: - Update ZERNIKE_INTEGRATION.md with correct RMS formula - Update ASSEMBLY_FEM_WORKFLOW.md with expression import and node merge details - Add reference scripts from original zernike_Post_Script_NX.py 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
26 lines
727 B
Python
26 lines
727 B
Python
"""Core extractor library for Atomizer.
|
|
|
|
Available extractors:
|
|
- Displacement: extract_displacement
|
|
- Stress: extract_solid_stress (von Mises)
|
|
- Frequency: extract_frequency
|
|
- Mass: extract_mass_from_expression, extract_mass_from_op2
|
|
- Zernike: extract_zernike_from_op2, ZernikeExtractor (telescope mirrors)
|
|
"""
|
|
|
|
# Zernike extractor for telescope mirror optimization
|
|
from optimization_engine.extractors.extract_zernike import (
|
|
ZernikeExtractor,
|
|
extract_zernike_from_op2,
|
|
extract_zernike_filtered_rms,
|
|
extract_zernike_relative_rms,
|
|
)
|
|
|
|
__all__ = [
|
|
# Zernike (telescope mirrors)
|
|
'ZernikeExtractor',
|
|
'extract_zernike_from_op2',
|
|
'extract_zernike_filtered_rms',
|
|
'extract_zernike_relative_rms',
|
|
]
|