Files
Atomizer/tools/adaptive-isogrid/README.md
Anto01 5c63d877f0 feat: Switch isogrid to Gmsh Frontal-Delaunay meshing (production default)
Replaces Triangle library with Gmsh as the default triangulation engine for
adaptive isogrid generation. Gmsh's Frontal-Delaunay algorithm provides:

- Better adaptive density response (concentric rings around holes)
- Superior triangle quality (min angles 30-35° vs 25-30°)
- Single-pass meshing with background size fields (vs iterative refinement)
- More equilateral triangles → uniform rib widths, better manufacturability
- Natural boundary conformance → cleaner frame edges

Comparison results (mixed hole weights plate):
- Min angle improvement: +5.1° (25.7° → 30.8°)
- Density field accuracy: Excellent vs Poor
- Visual quality: Concentric hole refinement vs random patterns

Changes:
- Updated src/brain/__main__.py to import triangulation_gmsh
- Added gmsh>=4.11 to requirements.txt (Triangle kept as fallback)
- Updated README and technical-spec.md
- Added comparison script and test results

Triangle library remains available as fallback option.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-17 17:05:19 -05:00

76 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Adaptive Isogrid — Plate Lightweighting Tool
**Status:** Foundation / Pre-Implementation
**Architecture:** Python Brain + NX Hands + Atomizer Manager
## What It Does
Takes a plate with holes → generates an optimally lightweighted isogrid pattern → produces manufacturing-ready geometry. Isogrid density varies across the plate based on hole importance, edge proximity, and optimization-driven meta-parameters.
## Architecture
| Component | Role | Runtime |
|-----------|------|---------|
| **Python Brain** | Density field → Gmsh Frontal-Delaunay → rib profile | ~1-2 sec |
| **NX Hands** | Import profile → mesh → AFEM merge → Nastran solve → extract results | ~60-90 sec |
| **Atomizer Manager** | Optuna TPE sampling → objective evaluation → convergence | 500-2000 trials |
### Key Insight: Assembly FEM with Superposed Models
- **Model A** (permanent): Spider elements at holes + edge BC nodes. All loads/BCs applied here.
- **Model B** (variable): 2D shell mesh of ribbed plate. Rebuilt each iteration.
- **Node merge** at fixed interface locations connects them reliably every time.
Loads and BCs never need re-association. Only the rib pattern changes.
## Directory Structure
```
adaptive-isogrid/
├── README.md
├── requirements.txt
├── docs/
│ └── technical-spec.md # Full architecture spec
├── src/
│ ├── brain/ # Python geometry generator
│ │ ├── __init__.py
│ │ ├── density_field.py # η(x) evaluation
│ │ ├── triangulation.py # Constrained Delaunay + refinement
│ │ ├── pocket_profiles.py # Pocket inset + filleting
│ │ ├── profile_assembly.py # Final plate - pockets - holes
│ │ └── validation.py # Manufacturing constraint checks
│ ├── nx/ # NXOpen journal scripts
│ │ ├── extract_geometry.py # One-time: face → geometry.json
│ │ ├── build_interface_model.py # One-time: Model A + spiders
│ │ └── iteration_solve.py # Per-trial: rebuild Model B + solve
│ └── atomizer_study.py # Atomizer/Optuna integration
└── tests/
└── test_geometries/ # Sample geometry.json files
```
## Implementation Phases
1. **Python Brain standalone** (1-2 weeks) — geometry generator with matplotlib viz
2. **NX extraction + AFEM setup** (1-2 weeks) — one-time project setup scripts
3. **NX iteration script** (1-2 weeks) — per-trial mesh/solve/extract loop
4. **Atomizer integration** (1 week) — wire objective function + study management
5. **Validation + first real project** (1-2 weeks) — production run on client plate
## Quick Start (Phase 1)
```bash
cd tools/adaptive-isogrid
pip install -r requirements.txt
python -m src.brain --geometry tests/test_geometries/sample_bracket.json --params default
```
## Parameter Space
15 continuous parameters optimized by Atomizer (Optuna TPE):
- Density field: η₀, α, R₀, κ, p, β, R_edge
- Spacing: s_min, s_max
- Rib thickness: t_min, t₀, γ
- Manufacturing: w_frame, r_f, d_keep
See `docs/technical-spec.md` for full formulation.