Closes the neural training loop with automated workflow: - atomizer.py: One-command neural workflow CLI - auto_trainer.py: Auto-training trigger system (50pt threshold) - template_loader.py: Study creation from templates - study_reset.py: Study reset/cleanup utility - 3 templates: beam stiffness, bracket stress, frequency tuning - State assessment document (Nov 25) Usage: python atomizer.py neural-optimize --study my_study --trials 500 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
150 lines
4.1 KiB
Markdown
150 lines
4.1 KiB
Markdown
# Atomizer Study Templates
|
|
|
|
Quick-start templates for common structural optimization problems.
|
|
|
|
## Available Templates
|
|
|
|
| Template | Analysis | Objectives | Use Case |
|
|
|----------|----------|------------|----------|
|
|
| `beam_stiffness_optimization` | Static | Maximize stiffness | Cantilever beams, support arms |
|
|
| `bracket_stress_minimization` | Static | Minimize stress | Mounting brackets, L-brackets |
|
|
| `frequency_tuning` | Modal | Minimize mass + Maximize frequency | Motor mounts, drone arms |
|
|
|
|
## Usage
|
|
|
|
### Option 1: Create Study from Template (Recommended)
|
|
|
|
```bash
|
|
python -m atomizer create-study --template beam_stiffness --name my_beam_study
|
|
```
|
|
|
|
This creates a new study folder with:
|
|
- `1_setup/optimization_config.json` - Configuration (editable)
|
|
- `1_setup/model/` - Empty folder for your NX files
|
|
- `2_results/` - Empty folder for results
|
|
- `run_optimization.py` - Runner script
|
|
- `README.md` - Study-specific instructions
|
|
|
|
### Option 2: Copy and Customize
|
|
|
|
1. Copy template JSON to your study folder:
|
|
```bash
|
|
copy templates\beam_stiffness_optimization.json studies\my_study\1_setup\optimization_config.json
|
|
```
|
|
|
|
2. Edit the config:
|
|
- Update `study_name`
|
|
- Adjust `design_variables` bounds for your model
|
|
- Modify `constraints` thresholds
|
|
- Update `simulation` file names
|
|
|
|
3. Add your NX model files to `1_setup/model/`
|
|
|
|
4. Run optimization:
|
|
```bash
|
|
python studies\my_study\run_optimization.py --trials 50
|
|
```
|
|
|
|
## Template Details
|
|
|
|
### Beam Stiffness Optimization
|
|
|
|
**Goal**: Maximize bending stiffness (minimize tip displacement) while staying under mass budget.
|
|
|
|
**Design Variables**:
|
|
- `beam_width` - Cross-section width (mm)
|
|
- `beam_height` - Cross-section height (mm)
|
|
- `beam_length` - Overall length (mm)
|
|
|
|
**Constraints**:
|
|
- Maximum mass limit
|
|
- Maximum stress limit
|
|
|
|
**Required NX Expressions**: `beam_width`, `beam_height`, `beam_length`
|
|
|
|
---
|
|
|
|
### Bracket Stress Minimization
|
|
|
|
**Goal**: Minimize peak von Mises stress to increase fatigue life and safety factor.
|
|
|
|
**Design Variables**:
|
|
- `wall_thickness` - Main wall thickness (mm)
|
|
- `fillet_radius` - Corner radius (mm) - key for stress relief
|
|
- `web_thickness` - Stiffening web thickness (mm)
|
|
- `rib_count` - Number of stiffening ribs (integer)
|
|
|
|
**Constraints**:
|
|
- Maximum displacement limit (stiffness)
|
|
- Maximum mass limit (weight budget)
|
|
|
|
**Required NX Expressions**: `wall_thickness`, `fillet_radius`, `web_thickness`, `rib_count`
|
|
|
|
---
|
|
|
|
### Frequency Tuning
|
|
|
|
**Goal**: Multi-objective - minimize mass while maximizing first natural frequency to avoid resonance.
|
|
|
|
**Design Variables**:
|
|
- `section_width` - Cross-section width (mm)
|
|
- `section_height` - Cross-section height (mm)
|
|
- `arm_length` - Cantilever length (mm)
|
|
- `wall_thickness` - Wall thickness for hollow sections (mm)
|
|
|
|
**Constraints**:
|
|
- Minimum frequency limit (above excitation)
|
|
- Maximum stress limit (static strength)
|
|
|
|
**Required NX Expressions**: `section_width`, `section_height`, `arm_length`, `wall_thickness`
|
|
|
|
**Note**: Requires modal analysis solution (SOL 103) in NX simulation.
|
|
|
|
## Customizing Templates
|
|
|
|
Templates are JSON files with placeholders. Key sections to customize:
|
|
|
|
```json
|
|
{
|
|
"study_name": "your_study_name",
|
|
"design_variables": [
|
|
{
|
|
"parameter": "your_nx_expression_name",
|
|
"bounds": [min_value, max_value],
|
|
"description": "What this parameter controls"
|
|
}
|
|
],
|
|
"constraints": [
|
|
{
|
|
"name": "your_constraint",
|
|
"type": "less_than",
|
|
"threshold": your_limit
|
|
}
|
|
],
|
|
"simulation": {
|
|
"model_file": "YourModel.prt",
|
|
"sim_file": "YourModel_sim1.sim"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Creating Custom Templates
|
|
|
|
1. Copy an existing template closest to your problem
|
|
2. Modify for your specific use case
|
|
3. Save as `templates/your_template_name.json`
|
|
4. The template will be available via `--template your_template_name`
|
|
|
|
## Neural Network Training
|
|
|
|
All templates include `training_data_export` enabled by default:
|
|
|
|
```json
|
|
"training_data_export": {
|
|
"enabled": true,
|
|
"export_dir": "atomizer_field_training_data/${study_name}"
|
|
}
|
|
```
|
|
|
|
This automatically exports training data for AtomizerField neural surrogate training.
|