# Isogrid Dev Plate — ACS Stack Main Plate Lightweighting **Client:** ACS (Attitude Control System) — Spacecraft structural assembly **Objective:** Minimize plate mass via adaptive triangular isogrid rib pattern **Constraint:** Max von Mises stress ≤ 100.6 MPa (AL7075-T6, SF = 5) **Status:** Campaign 01 — Ready to run **Owner:** Antoine **Created:** 2026-02-18 --- ## Mandate The ACS spacecraft structural main plate is machined from AL7075-T6 aluminium. The goal is to remove as much material as possible by replacing solid regions with an adaptive triangular isogrid rib network, while maintaining structural integrity under the primary load case (FZ = 1,372.9 N, SOL 101). Rib density is driven by three physics-based fields: - **Hole proximity** — ribs cluster around bolt-hole stress concentrations - **Perimeter reinforcement** — edge band stays solid to transfer loads - **FEA stress feedback** — previous-trial stress field adaptively guides future rib placement --- ## Key Numbers | Metric | Value | Status | |--------|-------|--------| | Material | AL7075-T6 | Confirmed | | σ_yield | 503 MPa | Confirmed | | σ_allow (SF=5) | 100.6 MPa | Confirmed | | Load case | FZ = 1,372.9 N / SOL 101 | From baseline F06 | | Baseline solid plate mass | TBD (G-02) | Pending | | Best isogrid mass | TBD | After Campaign 01 | | Design variables | 8 continuous | η₀, α, β, γ_stress, R₀, R_edge, s_min, s_max | | Trial budget (Campaign 01) | 200 | TPE, seed 42 | | Estimated runtime | ~8–10 h | ~90–120 s/trial | > See [CONTEXT.md](CONTEXT.md) for full mandate, BCs, material table, NX model map, and known gaps. --- ## Optimization Campaigns | ID | Algorithm | Trials | Status | Best Mass | Notes | |----|-----------|--------|--------|-----------|-------| | 01_v1_tpe | Optuna TPE | 200 | 🔴 Not started | — | First campaign; stress-only constraint | --- ## Project Structure ``` isogrid-dev-plate/ ├── README.md ← You are here ├── CONTEXT.md ← Full intake doc: mandate, BCs, material, gaps ├── BREAKDOWN.md ← Technical analysis: parameters, formulation, FEA ├── DECISIONS.md ← Architectural decision log ├── playbooks/ │ └── 01_FIRST_RUN.md ← Step-by-step first-run guide ├── models/ ← Reference NX model (golden copies — do not modify) │ ├── ACS_Stack_Main_Plate_Iso_Project.prt │ ├── ACS_Stack_Main_Plate_Iso_project_fem2_i.prt │ ├── ACS_Stack_Main_Plate_Iso_project_fem2.fem │ ├── ACS_Stack_Main_Plate_Iso_project_sim2.sim │ └── acs_stack_main_plate_iso_project_sim2-solution_1.op2 └── studies/ └── 01_v1_tpe/ ← Campaign 01 (TPE v1) ├── 1_setup/ ← Model files (working copies for NX) ├── 2_iterations/ ← Per-trial logs (auto-created at runtime) ├── 3_results/ ← Optuna DB + summary outputs ├── run_optimization.py ├── check_preflight.py └── README.md ``` --- ## Architecture ``` Python Brain (optimization_engine/isogrid/) ├── density_field.py — η(x) = η₀ + α·I + β·E + γ·S_stress ├── triangulation.py — Gmsh Frontal-Delaunay with adaptive size fields ├── pocket_profiles.py — Shapely inset + fillet per triangle └── profile_assembly.py — plate − pockets → Shapely polygon NX Hands ├── tools/adaptive-isogrid/src/nx/import_profile.py — update sketch in-place └── optimization_engine/nx/solve_simulation.py — remesh + SOL101 + mass write Atomizer Loop (studies/01_v1_tpe/run_optimization.py) └── Optuna TPE → Brain → NX → extract mass + stress → objective ``` --- ## Quick Start ```bash # 1. Check all files and imports are ready python projects/isogrid-dev-plate/studies/01_v1_tpe/check_preflight.py # 2. Run Campaign 01 python projects/isogrid-dev-plate/studies/01_v1_tpe/run_optimization.py ``` Full step-by-step: see [playbooks/01_FIRST_RUN.md](playbooks/01_FIRST_RUN.md) --- ## Key Documents | Document | Purpose | |----------|---------| | [CONTEXT.md](CONTEXT.md) | Full mandate, material, load case, NX model map, known gaps | | [BREAKDOWN.md](BREAKDOWN.md) | Parameter classification, density field formulation, FEA setup | | [DECISIONS.md](DECISIONS.md) | Architectural decisions (Gmsh, update-in-place, extractor chain) | | [studies/01_v1_tpe/README.md](studies/01_v1_tpe/README.md) | Study-level: algorithm, structure, results | | [playbooks/01_FIRST_RUN.md](playbooks/01_FIRST_RUN.md) | Execution guide |