Add GigaBIT M1 frame stiffness characterization project
- 3 studies: sensitivity (Method D), stiffness sweep (Method B), robustness - Atomizer specs with run matrices, Zernike annular OPD extractor - War-room validated hybrid B+D method
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
# Study 03 — Robustness Checks
|
||||
|
||||
**Type:** Parametric — Specific Scenarios
|
||||
**Runs:** 8
|
||||
**Model:** Uses both .sim setups (CBUSH for K tests, displacement for correlated tests)
|
||||
**Prerequisite:** Complete Studies 01 and 02 first (needs knee values)
|
||||
|
||||
## What This Does
|
||||
|
||||
Tests scenarios that the simple sweeps can't capture:
|
||||
|
||||
1. **One-soft-point (3 runs):** What if one support is 10× softer than the rest?
|
||||
2. **Combined compliance (3 runs):** Both vertical and lateral at knee values simultaneously
|
||||
3. **Correlated displacement (2 runs):** All verticals move together (frame bending mode simulation)
|
||||
|
||||
## Before Running
|
||||
|
||||
Update `atomizer_spec.json` with actual knee values from Study 02:
|
||||
- Replace `KNEE` placeholders with K_vert_knee and K_lat_knee values
|
||||
- Replace `KNEE/10` with knee/10, `KNEE/2` with knee/2
|
||||
|
||||
## Output
|
||||
|
||||
- Interaction factor: is combined ΔWFE > sum of individual?
|
||||
- Worst-case single soft point identification
|
||||
- Correlated vs independent displacement comparison
|
||||
@@ -0,0 +1,123 @@
|
||||
{
|
||||
"meta": {
|
||||
"version": "2.0",
|
||||
"created": "2026-03-04T12:00:00Z",
|
||||
"modified": "2026-03-04T12:00:00Z",
|
||||
"created_by": "mario",
|
||||
"modified_by": "mario",
|
||||
"study_name": "03_robustness",
|
||||
"description": "Robustness checks: one-soft-point tests, combined compliance, and correlated displacement patterns. Run AFTER Studies 01 and 02 — uses knee values from Study 02.",
|
||||
"tags": ["mirror", "zernike", "robustness", "frame-stiffness"]
|
||||
},
|
||||
"model": {
|
||||
"sim": {
|
||||
"path": "ASSY_M1_assyfem1_sim1.sim",
|
||||
"solver": "nastran",
|
||||
"_note": "Uses same CBUSH model variant as Study 02"
|
||||
},
|
||||
"nx_settings": {
|
||||
"nx_install_path": "C:\\Program Files\\Siemens\\NX2506",
|
||||
"simulation_timeout_s": 600
|
||||
}
|
||||
},
|
||||
"design_variables": [
|
||||
{
|
||||
"id": "dv_001",
|
||||
"name": "K_V_top",
|
||||
"expression_name": "K_V_top",
|
||||
"type": "continuous",
|
||||
"bounds": {"min": 1e4, "max": 1e12},
|
||||
"baseline": 1e12,
|
||||
"units": "N/m",
|
||||
"enabled": true,
|
||||
"description": "Stiffness for V_top CBUSH only (for one-soft-point tests)"
|
||||
},
|
||||
{
|
||||
"id": "dv_002",
|
||||
"name": "K_V_side",
|
||||
"expression_name": "K_V_side",
|
||||
"type": "continuous",
|
||||
"bounds": {"min": 1e4, "max": 1e12},
|
||||
"baseline": 1e12,
|
||||
"units": "N/m",
|
||||
"enabled": true,
|
||||
"description": "Stiffness for V_left + V_right CBUSHes (symmetric pair)"
|
||||
},
|
||||
{
|
||||
"id": "dv_003",
|
||||
"name": "K_L_side",
|
||||
"expression_name": "K_L_side",
|
||||
"type": "continuous",
|
||||
"bounds": {"min": 1e4, "max": 1e12},
|
||||
"baseline": 1e12,
|
||||
"units": "N/m",
|
||||
"enabled": true,
|
||||
"description": "Stiffness for L_left + L_right CBUSHes (symmetric pair)"
|
||||
}
|
||||
],
|
||||
"extractors": [
|
||||
{
|
||||
"id": "ext_001",
|
||||
"name": "Zernike Annular OPD — Robustness",
|
||||
"type": "zernike_opd",
|
||||
"builtin": true,
|
||||
"config": {
|
||||
"inner_radius_mm": 135.75,
|
||||
"outer_radius_mm": 500.0,
|
||||
"n_modes": 50,
|
||||
"filter_low_orders": 4,
|
||||
"displacement_unit": "mm",
|
||||
"reference_subcase": 2
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "rel_filtered_rms_40_vs_20",
|
||||
"metric": "filtered_rms_nm"
|
||||
},
|
||||
{
|
||||
"name": "rel_filtered_rms_60_vs_20",
|
||||
"metric": "filtered_rms_nm"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"objectives": [
|
||||
{
|
||||
"id": "obj_001",
|
||||
"name": "ΔWFE at 60° — robustness tracking",
|
||||
"direction": "minimize",
|
||||
"weight": 1.0,
|
||||
"source": {
|
||||
"extractor_id": "ext_001",
|
||||
"output_name": "rel_filtered_rms_60_vs_20"
|
||||
},
|
||||
"target": 1.0,
|
||||
"units": "nm"
|
||||
}
|
||||
],
|
||||
"constraints": [],
|
||||
"optimization": {
|
||||
"algorithm": {
|
||||
"type": "GridSampler",
|
||||
"config": {}
|
||||
},
|
||||
"budget": {
|
||||
"max_trials": 8
|
||||
}
|
||||
},
|
||||
"run_matrix": {
|
||||
"_description": "UPDATE K_knee values after Study 02 completes. Replace 'KNEE' placeholders with actual values.",
|
||||
"_K_vert_knee": "UPDATE_FROM_STUDY_02",
|
||||
"_K_lat_knee": "UPDATE_FROM_STUDY_02",
|
||||
"trials": [
|
||||
{"trial": 0, "label": "one_soft_V_top", "K_V_top": "KNEE/10", "K_V_side": 1e12, "K_L_side": 1e12, "elevation": "60", "_note": "V_top 10× below knee, rest rigid"},
|
||||
{"trial": 1, "label": "one_soft_V_side", "K_V_top": 1e12, "K_V_side": "KNEE/10", "K_L_side": 1e12, "elevation": "60", "_note": "V_side 10× below knee, rest rigid"},
|
||||
{"trial": 2, "label": "one_soft_L_side", "K_V_top": 1e12, "K_V_side": 1e12, "K_L_side": "KNEE/10", "elevation": "60", "_note": "L_side 10× below knee, rest rigid"},
|
||||
{"trial": 3, "label": "combined_knee_60", "K_V_top": "KNEE", "K_V_side": "KNEE", "K_L_side": "KNEE", "elevation": "60", "_note": "All at knee values"},
|
||||
{"trial": 4, "label": "combined_knee_40", "K_V_top": "KNEE", "K_V_side": "KNEE", "K_L_side": "KNEE", "elevation": "40", "_note": "All at knee @ 40°"},
|
||||
{"trial": 5, "label": "combined_half_60", "K_V_top": "KNEE/2", "K_V_side": "KNEE/2", "K_L_side": "KNEE/2", "elevation": "60", "_note": "All at half knee"},
|
||||
{"trial": 6, "label": "corr_sag_all_V_down", "_type": "method_d", "_note": "USE Study 01 setup: dV1_Z=dV2_Z=0.001 simultaneously (all 3 vertical +1μm Z). Tests correlated frame sag."},
|
||||
{"trial": 7, "label": "corr_twist_V_split", "_type": "method_d", "_note": "USE Study 01 setup: dV1_Z=+0.001, dV2_Z=-0.001 (V_top up, V_sides down). Tests frame twist."}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user