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,30 @@
|
||||
# Study 02 — Stiffness Sweep (Method B)
|
||||
|
||||
**Type:** Parametric — CBUSH Spring-to-Ground Sweep
|
||||
**Runs:** 22 (2 validation + 10 K_vert sweep + 10 K_lat sweep)
|
||||
**Model:** CBUSH elements at 5 interface points, offset ground nodes (−10mm Z)
|
||||
|
||||
## What This Does
|
||||
|
||||
Replaces fixed BCs with CBUSH springs. Sweeps translational stiffness from 1e4 → 1e10 N/m on log scale. Two independent campaigns:
|
||||
- Campaign 1: Sweep K_vert (laterals rigid)
|
||||
- Campaign 2: Sweep K_lat (verticals rigid)
|
||||
|
||||
Finds the **knee point** where ΔWFE crosses the 1.0 nm budget.
|
||||
|
||||
## .sim Setup Required
|
||||
|
||||
1. Create 5 ground nodes (offset −10mm in −Z from each support node)
|
||||
2. SPC 123456 on all ground nodes
|
||||
3. Remove existing SPCs on 5 support nodes
|
||||
4. Create 5 CBUSH elements (support → ground, global coords)
|
||||
5. Create 2 PBUSH properties: 8001 (vertical, K=$K_vert) and 8002 (lateral, K=$K_lat)
|
||||
6. Create 2 NX expressions: `K_vert`, `K_lat` (default = 1e12)
|
||||
|
||||
## Extractor
|
||||
|
||||
Same as Study 01: Zernike annular OPD, 50 modes, J5+ filtered, annular aperture.
|
||||
|
||||
## Output
|
||||
|
||||
ΔWFE vs K curves → knee points → recommended minimum stiffness for StarSpec.
|
||||
@@ -0,0 +1,126 @@
|
||||
{
|
||||
"meta": {
|
||||
"version": "2.0",
|
||||
"created": "2026-03-04T12:00:00Z",
|
||||
"modified": "2026-03-04T12:00:00Z",
|
||||
"created_by": "mario",
|
||||
"modified_by": "mario",
|
||||
"study_name": "02_stiffness_sweep_method_b",
|
||||
"description": "Method B — CBUSH spring-to-ground stiffness sweep. 5 CBUSH elements at interface points (offset 10mm in -Z). Sweep K_vertical (3 vertical CBUSHes) and K_lateral (2 lateral CBUSHes) independently to find knee points where ΔWFE exceeds 1.0 nm budget.",
|
||||
"tags": ["mirror", "zernike", "stiffness", "frame-stiffness", "parametric", "cbush"]
|
||||
},
|
||||
"model": {
|
||||
"sim": {
|
||||
"path": "ASSY_M1_assyfem1_sim1.sim",
|
||||
"solver": "nastran",
|
||||
"_note": "UPDATE: This uses the CBUSH model variant (.sim with CBUSH elements + offset ground nodes). Different from Study 01."
|
||||
},
|
||||
"nx_settings": {
|
||||
"nx_install_path": "C:\\Program Files\\Siemens\\NX2506",
|
||||
"simulation_timeout_s": 600
|
||||
}
|
||||
},
|
||||
"design_variables": [
|
||||
{
|
||||
"id": "dv_001",
|
||||
"name": "K_vert",
|
||||
"expression_name": "K_vert",
|
||||
"type": "continuous",
|
||||
"bounds": {"min": 1e4, "max": 1e12},
|
||||
"baseline": 1e12,
|
||||
"units": "N/m",
|
||||
"enabled": true,
|
||||
"description": "Translational stiffness for all 3 vertical support CBUSHes (K1=K2=K3=K_vert). Rotational K4=K5=K6 held at 1e12."
|
||||
},
|
||||
{
|
||||
"id": "dv_002",
|
||||
"name": "K_lat",
|
||||
"expression_name": "K_lat",
|
||||
"type": "continuous",
|
||||
"bounds": {"min": 1e4, "max": 1e12},
|
||||
"baseline": 1e12,
|
||||
"units": "N/m",
|
||||
"enabled": true,
|
||||
"description": "Translational stiffness for all 2 lateral support CBUSHes (K1=K2=K3=K_lat). Rotational K4=K5=K6 held at 1e12."
|
||||
}
|
||||
],
|
||||
"extractors": [
|
||||
{
|
||||
"id": "ext_001",
|
||||
"name": "Zernike Annular OPD — Stiffness Sweep",
|
||||
"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° — stiffness sweep 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": 22
|
||||
}
|
||||
},
|
||||
"run_matrix": {
|
||||
"_description": "Campaign 1: Sweep K_vert (K_lat=1e12). Campaign 2: Sweep K_lat (K_vert=1e12). All at 60° elevation.",
|
||||
"trials": [
|
||||
{"trial": 0, "label": "baseline_rigid", "K_vert": 1e12, "K_lat": 1e12, "elevation": "60", "_note": "Validation: should match fixed-BC baseline"},
|
||||
{"trial": 1, "label": "baseline_rigid_40", "K_vert": 1e12, "K_lat": 1e12, "elevation": "40", "_note": "Validation at 40°"},
|
||||
|
||||
{"trial": 2, "label": "Kv_1e4", "K_vert": 1e4, "K_lat": 1e12, "elevation": "60"},
|
||||
{"trial": 3, "label": "Kv_1e5", "K_vert": 1e5, "K_lat": 1e12, "elevation": "60"},
|
||||
{"trial": 4, "label": "Kv_3e5", "K_vert": 3e5, "K_lat": 1e12, "elevation": "60"},
|
||||
{"trial": 5, "label": "Kv_1e6", "K_vert": 1e6, "K_lat": 1e12, "elevation": "60"},
|
||||
{"trial": 6, "label": "Kv_3e6", "K_vert": 3e6, "K_lat": 1e12, "elevation": "60"},
|
||||
{"trial": 7, "label": "Kv_1e7", "K_vert": 1e7, "K_lat": 1e12, "elevation": "60"},
|
||||
{"trial": 8, "label": "Kv_3e7", "K_vert": 3e7, "K_lat": 1e12, "elevation": "60"},
|
||||
{"trial": 9, "label": "Kv_1e8", "K_vert": 1e8, "K_lat": 1e12, "elevation": "60"},
|
||||
{"trial": 10, "label": "Kv_1e9", "K_vert": 1e9, "K_lat": 1e12, "elevation": "60"},
|
||||
{"trial": 11, "label": "Kv_1e10", "K_vert": 1e10, "K_lat": 1e12, "elevation": "60"},
|
||||
|
||||
{"trial": 12, "label": "Kl_1e4", "K_vert": 1e12, "K_lat": 1e4, "elevation": "60"},
|
||||
{"trial": 13, "label": "Kl_1e5", "K_vert": 1e12, "K_lat": 1e5, "elevation": "60"},
|
||||
{"trial": 14, "label": "Kl_3e5", "K_vert": 1e12, "K_lat": 3e5, "elevation": "60"},
|
||||
{"trial": 15, "label": "Kl_1e6", "K_vert": 1e12, "K_lat": 1e6, "elevation": "60"},
|
||||
{"trial": 16, "label": "Kl_3e6", "K_vert": 1e12, "K_lat": 3e6, "elevation": "60"},
|
||||
{"trial": 17, "label": "Kl_1e7", "K_vert": 1e12, "K_lat": 1e7, "elevation": "60"},
|
||||
{"trial": 18, "label": "Kl_3e7", "K_vert": 1e12, "K_lat": 3e7, "elevation": "60"},
|
||||
{"trial": 19, "label": "Kl_1e8", "K_vert": 1e12, "K_lat": 1e8, "elevation": "60"},
|
||||
{"trial": 20, "label": "Kl_1e9", "K_vert": 1e12, "K_lat": 1e9, "elevation": "60"},
|
||||
{"trial": 21, "label": "Kl_1e10", "K_vert": 1e12, "K_lat": 1e10, "elevation": "60"}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user