# 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**: `.prt` - Contains parametric CAD geometry - Design variables are NX expressions - Primary file opened by NX during optimization **Idealized Part File**: `_fem_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): `.prt` - Top-level assembly structure - References component parts - Contains assembly constraints ### FEM Files (.fem) **Part-Level FEM**: `_fem.fem` - Mesh definition for single part - Material properties - Boundary conditions - Mesh parameters **Assembly FEM** (.afem): `_fem.afem` - Assembly-level FEM structure - Component FEM references - Contact definitions - Assembly-level boundary conditions - **Requires all component .fem files** ### Simulation Files (.sim) **Simulation Setup**: `_sim.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/ ├── .prt # Master geometry (parametric) ├── _fem1.fem # FEM mesh definition ├── _fem1_i.prt # Idealized geometry (CRITICAL!) └── _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/ ├── .prt # Top assembly ├── _fem1.afem # Assembly FEM (references below) ├── _sim1.sim # Simulation setup │ ├── components/ # Component parts subdirectory │ ├── .prt # Component part │ ├── _fem1.fem # Component FEM │ ├── _fem1_i.prt # Component idealized part │ │ │ ├── .prt │ ├── _fem1.fem │ ├── _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: 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 Beam - `Beam_fem1_i.prt` → Idealized part for Beam FEM #1 - `Beam_sim1.sim` → First simulation for Beam - `BracketAssembly_fem1.afem` → Assembly FEM **Bad**: - `BeamFEM.fem` → Missing index - `Beam fem 1.fem` → Spaces not allowed - `beam_fem1.fem` → Inconsistent capitalization - `Beam_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: 1. All referenced component `.prt` files 2. All referenced component `.fem` files 3. All referenced component `_i.prt` files 4. Proper relative paths to components directory **Path Configuration**: ``` # In .afem file, component references should use: ./components/.prt ./components/_fem1.fem ``` --- ## Study Directory Structure ### Complete Single-Part Study ``` study_name/ ├── 1_setup/ │ ├── model/ │ │ ├── .prt ← Master geometry │ │ ├── _fem1.fem ← FEM definition │ │ ├── _fem1_i.prt ← Idealized part (REQUIRED!) │ │ └── _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/ │ │ ├── .prt │ │ ├── _fem1.afem │ │ ├── _sim1.sim │ │ │ │ │ └── components/ │ │ ├── .prt │ │ ├── _fem1.fem │ │ ├── _fem1_i.prt │ │ ├── .prt │ │ ├── _fem1.fem │ │ ├── _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**: - [ ] `.prt` exists - [ ] `_fem1.fem` exists - [ ] `_fem1_i.prt` exists (CRITICAL!) - [ ] `_sim1.sim` exists - [ ] All 4 files in same directory **Assembly**: - [ ] `.prt` exists - [ ] `_fem1.afem` exists - [ ] `_sim1.sim` exists - [ ] `components/` directory exists - [ ] Each component has `.prt`, `.fem`, `_i.prt` - [ ] All component paths in `.afem` are correct ### After Copying Study **Run Quick Test**: 1. Open `.prt` in NX 2. Open Simulation Navigator 3. Solve simulation manually 4. If it solves → files are correct 5. If it fails → check error for missing files --- ## Best Practices ### 1. Always Copy Complete File Sets Don't copy just `.prt` and `.sim`: ```bash # 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: ```bash # 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 `.prt` files (including `_i.prt`) - All `.fem` and `.afem` files - All `.sim` files - Do NOT use `.gitignore` to exclude `_i.prt`! ### 4. Document Component Dependencies For assemblies, create a `COMPONENTS.md`: ```markdown # 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**: ``` ✓ .prt ✓ _fem1.fem ✓ _fem1_i.prt ← Don't forget! ✓ _sim1.sim ``` **Minimum Files for Assembly**: ``` ✓ .prt ✓ _fem1.afem ✓ _sim1.sim ✓ components/.prt ✓ components/_fem1.fem ✓ components/_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