CONTEXT.md — ACS Stack Main Plate — Isogrid Lightweighting
Project: Isogrid Dev Plate
Client: ACS (Attitude Control System) — Spacecraft structural assembly
Author: Antoine + Atomizer
Created: 2026-02-18
Status: Campaign 01 running — TPE v1
Mandate
Minimize the mass of the ACS spacecraft structural plate by replacing solid material with an adaptive triangular isogrid rib pattern. The rib density adapts to bolt-hole proximity, perimeter reinforcement, and FEA stress feedback from the previous trial.
Objective (single): Minimize total plate mass (kg)
Constraint (hard): Max von Mises stress ≤ 100.6 MPa (AL7075-T6, SF = 5)
No displacement constraint — confirmed by Antoine 2026-02-18
Material — AL7075-T6
| Property |
Value |
Source |
| Density |
2810 kg/m³ (2.810×10⁻⁶ kg/mm³) |
Material standard |
| Young's modulus |
71.7 GPa |
Material standard |
| Poisson's ratio |
0.33 |
Material standard |
| Yield strength (σ_yield) |
503 MPa |
Material standard |
| Safety factor |
5 |
Antoine (confirmed 2026-02-18) |
| σ_allow = σ_yield / SF |
100.6 MPa |
Derived |
⚠️ Material discrepancy: The NX FEM model (MAT1 card in DAT file) uses E = 68.98 GPa and ρ = 2.711×10⁻⁶ kg/mm³, which corresponds to AL6061-T6 properties. Optimization calculations (stress allowable, mass target) are based on AL7075-T6 as confirmed by Antoine. Model update to AL7075-T6 properties is tracked as a gap below.
Load Case
From baseline FEA (acs_stack_main_plate_iso_project_sim2-solution_1.f06):
| Parameter |
Value |
Notes |
| Solver |
NX Nastran SOL 101 |
Linear static |
| Subcase |
1 |
Single load case |
| Load |
FZ = 1,372.9 N |
1.372931×10⁶ mN in kg-mm-s |
| Units |
kg-mm-s |
Stress output in kPa → ÷1000 → MPa |
⚠️ BCs gap: Exact boundary condition details (which nodes are fixed, where load is applied) not yet extracted. Confirm by opening the model in NX or parsing the BDF for SPC/FORCE cards. Tracked below.
NX Model Map
Files
| File |
Role |
Location |
ACS_Stack_Main_Plate_Iso_Project.prt |
Geometry part (CAD) |
models/ |
ACS_Stack_Main_Plate_Iso_project_fem2_i.prt |
Idealized part — CRITICAL: must be loaded before UpdateFemodel() |
models/ |
ACS_Stack_Main_Plate_Iso_project_fem2.fem |
FEM — 3D solid mesh |
models/ |
ACS_Stack_Main_Plate_Iso_project_sim2.sim |
Simulation — SOL 101 |
models/ |
*_sim2-solution_1.op2 |
Baseline FEA results |
models/ (447 MB) |
NX Version: DesigncenterNX2512
FEM type: 3D solid (CHEXA, CPENTA, CPYRAM, CTETRA)
Simulation name: sim2 / solution_1
Baseline Mesh Stats (from F06)
| Stat |
Value |
| Grid points |
207,450 |
| CHEXA elements |
93,359 |
| CPENTA elements |
3,021 |
| CPYRAM elements |
125,954 |
| CTETRA elements |
232,206 |
Isogrid Sandbox Regions
| Sandbox |
Size |
File |
| sandbox_1 |
Larger region |
adaptive_isogrid_data/geometry_sandbox_1.json |
| sandbox_2 |
Smaller patch |
adaptive_isogrid_data/geometry_sandbox_2.json |
Baseline Performance
| Metric |
Value |
Confidence |
| Solid plate mass |
[TBD — run extract_part_mass_material on baseline _i.prt] |
⚠️ Pending |
| Max von Mises (baseline solid) |
[TBD — parse baseline OP2] |
⚠️ Pending |
| Max displacement (baseline) |
[TBD — parse baseline OP2] |
⚠️ Pending |
To establish baseline: run extract_part_mass_material on the idealized part at baseline configuration, and extract_solid_stress on the baseline OP2. Record results here.
Known Gaps / Pending Items
| ID |
Gap |
Priority |
Resolution |
| G-01 |
NX model uses AL6061 material properties — should be updated to AL7075-T6 |
MED |
Update MAT1 card in NX before next FEA campaign |
| G-02 |
Baseline plate mass not yet extracted |
HIGH |
Run extract_part_mass_material on baseline model |
| G-03 |
Boundary conditions not fully documented (which nodes fixed, load application point) |
MED |
Parse BDF SPC/FORCE cards or read from NX |
| G-04 |
Plate thickness not confirmed (sandbox geometry has thickness: null) |
LOW |
Not needed since mass extracted from NX directly |
| G-05 |
Max allowable displacement — no constraint for now |
— |
Confirmed N/A by Antoine 2026-02-18 |
Optimization Setup Summary
| Field |
Value |
| Objective |
Minimize mass (kg) |
| Constraint |
σ_max ≤ 100.6 MPa |
| Penalty formula |
mass + 1e4 × ((σ/σ_allow) − 1)² when violated |
| Design space |
8 continuous variables (see BREAKDOWN.md §2) |
| Algorithm |
Optuna TPE — seed 42 |
| Trial budget |
200 (Campaign 01) |
| Estimated runtime |
8–10 hours |
| Trial logging |
studies/01_v1_tpe/2_iterations/trial_NNNN/ |
| Results DB |
studies/01_v1_tpe/3_results/study.db |
Status
| Phase |
Status |
| NX geometry extraction (sandboxes) |
✅ Done |
| Python Brain implementation |
✅ Done |
| NX import journal (update-in-place) |
✅ Done |
| Baseline FEA (manual) |
✅ Done |
| Stress field extraction (OP2 → 2D) |
✅ Done |
| Stress feedback field |
✅ Done |
Atomizer study wiring (run_optimization.py) |
✅ Done |
| Campaign 01 execution |
🔴 Not started |
| Baseline mass/stress documented |
⚠️ G-02 |
| Material alignment (AL7075 vs AL6061 in model) |
⚠️ G-01 |