140 lines
5.6 KiB
Markdown
140 lines
5.6 KiB
Markdown
# 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 |
|