- Add validation framework (config, model, results, study validators) - Add Claude Code skills (create-study, run-optimization, generate-report, troubleshoot, analyze-model) - Add Atomizer Dashboard (React frontend + FastAPI backend) - Reorganize docs into structured directories (00-09) - Add neural surrogate modules and training infrastructure - Add multi-objective optimization support 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
9.8 KiB
NX File Structure Protocol for Atomizer Studies
Overview
This document defines the mandatory file structure for all NX Simcenter optimization studies. Following this protocol ensures optimization runs succeed without manual intervention.
File Types and Purposes
Part Files (.prt)
Master Geometry File: <ModelName>.prt
- Contains parametric CAD geometry
- Design variables are NX expressions
- Primary file opened by NX during optimization
Idealized Part File: <ModelName>_fem<N>_i.prt
- Auto-generated by NX during FEM idealization
- Contains simplified geometry for meshing
- Required for mesh regeneration
- MUST be copied with the study
Assembly Part File (for assemblies): <AssemblyName>.prt
- Top-level assembly structure
- References component parts
- Contains assembly constraints
FEM Files (.fem)
Part-Level FEM: <ModelName>_fem<N>.fem
- Mesh definition for single part
- Material properties
- Boundary conditions
- Mesh parameters
Assembly FEM (.afem): <AssemblyName>_fem<N>.afem
- Assembly-level FEM structure
- Component FEM references
- Contact definitions
- Assembly-level boundary conditions
- Requires all component .fem files
Simulation Files (.sim)
Simulation Setup: <ModelName>_sim<N>.sim
- Solution definitions (SOL 101, 103, etc.)
- Load cases
- Analysis types (static, modal, buckling, etc.)
- Results configuration
- References FEM file(s)
Mandatory File Sets
SINGLE PART ANALYSIS
REQUIRED FILES (All 4 must be present):
1_setup/model/
├── <ModelName>.prt # Master geometry (parametric)
├── <ModelName>_fem1.fem # FEM mesh definition
├── <ModelName>_fem1_i.prt # Idealized geometry (CRITICAL!)
└── <ModelName>_sim1.sim # Simulation setup
Example (Beam Study):
1_setup/model/
├── Beam.prt
├── Beam_fem1.fem
├── Beam_fem1_i.prt ← Don't forget this!
└── Beam_sim1.sim
Why _i.prt is Required:
- NX needs it to regenerate mesh when parameters change
- Without it: "Unable to find idealized body" error
- Generated once, reused for all trials
- Must be version-controlled with study
ASSEMBLY ANALYSIS
REQUIRED FILES (More complex):
1_setup/model/
├── <Assembly>.prt # Top assembly
├── <Assembly>_fem1.afem # Assembly FEM (references below)
├── <Assembly>_sim1.sim # Simulation setup
│
├── components/ # Component parts subdirectory
│ ├── <Component1>.prt # Component part
│ ├── <Component1>_fem1.fem # Component FEM
│ ├── <Component1>_fem1_i.prt # Component idealized part
│ │
│ ├── <Component2>.prt
│ ├── <Component2>_fem1.fem
│ ├── <Component2>_fem1_i.prt
│ │
│ └── ... # Additional components
Example (Bracket Assembly with 3 components):
1_setup/model/
├── BracketAssembly.prt
├── BracketAssembly_fem1.afem
├── BracketAssembly_sim1.sim
│
└── components/
├── Bracket.prt
├── Bracket_fem1.fem
├── Bracket_fem1_i.prt
│
├── Plate.prt
├── Plate_fem1.fem
├── Plate_fem1_i.prt
│
├── Bolt.prt
├── Bolt_fem1.fem
└── Bolt_fem1_i.prt
File Naming Conventions
Standard Naming Pattern
<BaseName>_<FileType><Index>.<extension>
BaseName: Model/assembly name (e.g., "Beam", "BracketAssembly")
FileType: fem, sim
Index: Sequential number (1, 2, 3, ...)
Extension: .fem, .afem, .sim, .prt
Examples
Good:
Beam_fem1.fem→ First FEM file for BeamBeam_fem1_i.prt→ Idealized part for Beam FEM #1Beam_sim1.sim→ First simulation for BeamBracketAssembly_fem1.afem→ Assembly FEM
Bad:
BeamFEM.fem→ Missing indexBeam fem 1.fem→ Spaces not allowedbeam_fem1.fem→ Inconsistent capitalizationBeam_idealized.prt→ Non-standard naming
Assembly FEM (.afem) Structure
What Goes in .afem vs .fem
Assembly FEM (.afem):
- References to component .fem files
- Contact pairs between components
- Assembly-level boundary conditions
- Component positioning/orientation
- Assembly-level loads
- Glue/weld connections
Component FEM (.fem):
- Individual component mesh
- Component material properties
- Component-specific boundary conditions
- Local mesh refinement
- Component-specific loads
Assembly FEM Dependencies
Critical: .afem file MUST have:
- All referenced component
.prtfiles - All referenced component
.femfiles - All referenced component
_i.prtfiles - Proper relative paths to components directory
Path Configuration:
# In .afem file, component references should use:
./components/<Component>.prt
./components/<Component>_fem1.fem
Study Directory Structure
Complete Single-Part Study
study_name/
├── 1_setup/
│ ├── model/
│ │ ├── <Model>.prt ← Master geometry
│ │ ├── <Model>_fem1.fem ← FEM definition
│ │ ├── <Model>_fem1_i.prt ← Idealized part (REQUIRED!)
│ │ └── <Model>_sim1.sim ← Simulation setup
│ ├── optimization_config.json
│ └── workflow_config.json
│
├── 2_results/
│ └── (generated during optimization)
│
└── run_optimization.py
Complete Assembly Study
study_name/
├── 1_setup/
│ ├── model/
│ │ ├── <Assembly>.prt
│ │ ├── <Assembly>_fem1.afem
│ │ ├── <Assembly>_sim1.sim
│ │ │
│ │ └── components/
│ │ ├── <Comp1>.prt
│ │ ├── <Comp1>_fem1.fem
│ │ ├── <Comp1>_fem1_i.prt
│ │ ├── <Comp2>.prt
│ │ ├── <Comp2>_fem1.fem
│ │ ├── <Comp2>_fem1_i.prt
│ │ └── ...
│ │
│ ├── optimization_config.json
│ └── workflow_config.json
│
├── 2_results/
└── run_optimization.py
Common Errors and Solutions
Error: "Unable to find idealized body"
Cause: Missing _fem1_i.prt file
Solution: Always copy the _i.prt file with your study
Error: "Cannot open FEM file"
Cause: FEM file references missing component
Solution: Verify all component .fem and .prt files are present
Error: "Mesh regeneration failed"
Cause: Idealized part doesn't match current geometry
Solution: Regenerate idealization in NX, copy new _i.prt
Error: "Component not found in assembly"
Cause: Wrong path to components directory
Solution: Ensure components/ subdirectory structure is correct
Validation Checklist
Before Creating Study
Single Part:
<Model>.prtexists<Model>_fem1.femexists<Model>_fem1_i.prtexists (CRITICAL!)<Model>_sim1.simexists- All 4 files in same directory
Assembly:
<Assembly>.prtexists<Assembly>_fem1.afemexists<Assembly>_sim1.simexistscomponents/directory exists- Each component has
.prt,.fem,_i.prt - All component paths in
.afemare correct
After Copying Study
Run Quick Test:
- Open
<Model>.prtin NX - Open Simulation Navigator
- Solve simulation manually
- If it solves → files are correct
- If it fails → check error for missing files
Best Practices
1. Always Copy Complete File Sets
Don't copy just .prt and .sim:
# Bad
cp Model.prt new_study/
cp Model_sim1.sim new_study/
# Good
cp Model.prt Model_fem1.fem Model_fem1_i.prt Model_sim1.sim new_study/
2. Preserve Directory Structure
For assemblies, maintain the components/ structure:
# Create structure first
mkdir -p new_study/1_setup/model/components
# Then copy files
cp Assembly* new_study/1_setup/model/
cp components/* new_study/1_setup/model/components/
3. Version Control All Files
In git, track:
- All
.prtfiles (including_i.prt) - All
.femand.afemfiles - All
.simfiles - Do NOT use
.gitignoreto exclude_i.prt!
4. Document Component Dependencies
For assemblies, create a COMPONENTS.md:
# Assembly Components
Main Assembly: BracketAssembly.prt
Components:
1. Bracket.prt - Main structural member (parametric)
2. Plate.prt - Mounting plate (parametric)
3. Bolt.prt - M6 bolt (fixed geometry)
Contact Pairs:
- Bracket <-> Plate: Bonded contact
- Bolt <-> Bracket: Frictional (μ=0.3)
Advanced: Multi-Solution Studies
For studies with multiple analysis types (static + modal, etc.):
1_setup/model/
├── Model.prt
├── Model_fem1.fem # Shared mesh
├── Model_fem1_i.prt # Shared idealization
├── Model_sim1.sim # Static analysis
└── Model_sim2.sim # Modal analysis
Both .sim files reference the same .fem and _i.prt.
Quick Reference Card
Minimum Files for Single Part:
✓ <Model>.prt
✓ <Model>_fem1.fem
✓ <Model>_fem1_i.prt ← Don't forget!
✓ <Model>_sim1.sim
Minimum Files for Assembly:
✓ <Assembly>.prt
✓ <Assembly>_fem1.afem
✓ <Assembly>_sim1.sim
✓ components/<Comp1>.prt
✓ components/<Comp1>_fem1.fem
✓ components/<Comp1>_fem1_i.prt
(repeat for each component)
Golden Rule: If NX created it during meshing/simulation setup, you need to copy it for optimization!
Future Enhancements
Planned protocol additions:
- Multi-mesh assembly support
- Submodeling workflows
- Contact table definitions
- Result mesh specification
- Optimization-specific mesh controls
Last Updated: 2025-01-22 Version: 1.0 Status: MANDATORY for all studies