4.7 KiB
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 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
# 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
Key Documents
| Document | Purpose |
|---|---|
| CONTEXT.md | Full mandate, material, load case, NX model map, known gaps |
| BREAKDOWN.md | Parameter classification, density field formulation, FEA setup |
| DECISIONS.md | Architectural decisions (Gmsh, update-in-place, extractor chain) |
| studies/01_v1_tpe/README.md | Study-level: algorithm, structure, results |
| playbooks/01_FIRST_RUN.md | Execution guide |