Files
Atomizer/projects/isogrid-dev-plate/CONTEXT.md

140 lines
5.6 KiB
Markdown
Raw Normal View History

2026-02-19 08:00:15 +00:00
# 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 | 810 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 |