2729bd327897c0141a72121800a8343a157b39bd
Implements NX solver integration that connects to running Simcenter3D GUI to solve simulations using the journal API. This approach handles licensing properly and ensures fresh output files are generated for each iteration. **New Components:** - optimization_engine/nx_solver.py: Main solver wrapper with auto-detection - optimization_engine/solve_simulation.py: NX journal script for batch solving - examples/test_journal_optimization.py: Complete optimization workflow test - examples/test_nx_solver.py: Solver integration tests - tests/journal_*.py: Reference journal files for NX automation **Key Features:** - Auto-detects NX installation and version - Connects to running NX GUI session (uses existing license) - Closes/reopens .sim files to force reload of updated .prt files - Deletes old output files to force fresh solves - Waits for background solve completion - Saves simulation to ensure all outputs are written - ~4 second solve time per iteration **Workflow:** 1. Update parameters in .prt file (nx_updater.py) 2. Close any open parts in NX session 3. Open .sim file fresh from disk (loads updated .prt) 4. Reload components and switch to FEM component 5. Solve in background mode 6. Save .sim file 7. Wait for .op2/.f06 to appear 8. Extract results from fresh .op2 **Tested:** - Multiple iteration loop (3+ iterations) - Files regenerated fresh each time (verified by timestamps) - Complete parameter update -> solve -> extract workflow 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Atomizer
Advanced optimization platform for Siemens NX Simcenter with LLM-powered configuration
Overview
Atomizer is a next-generation optimization framework for Siemens NX that combines:
- LLM-Driven Configuration: Use natural language to set up complex optimizations
- Advanced Algorithms: Optuna-powered TPE, Gaussian Process surrogates, multi-fidelity optimization
- Real-Time Monitoring: Interactive dashboards with live updates
- Flexible Architecture: Pluggable result extractors for any FEA analysis type
- MCP Integration: Extensible via Model Context Protocol
Architecture
┌─────────────────────────────────────────────────────────┐
│ UI Layer │
│ Web Dashboard (React) + LLM Chat Interface (MCP) │
└─────────────────────────────────────────────────────────┘
↕
┌─────────────────────────────────────────────────────────┐
│ MCP Server │
│ - Model Discovery - Config Builder │
│ - Optimizer Control - Result Analyzer │
└─────────────────────────────────────────────────────────┘
↕
┌─────────────────────────────────────────────────────────┐
│ Execution Layer │
│ NX Core (NXOpen) + Optuna Engine + Custom Scripts │
└─────────────────────────────────────────────────────────┘
Quick Start
Prerequisites
- Siemens NX 2412 with NX Nastran solver
- Python 3.10+ (recommend Anaconda)
- Node.js 18+ (for dashboard frontend)
Installation
-
Clone the repository:
git clone https://github.com/Anto01/Atomizer.git cd Atomizer -
Create Python environment:
conda create -n atomizer python=3.10 conda activate atomizer -
Install dependencies:
pip install -e . # For development tools: pip install -e ".[dev]" # For MCP server: pip install -e ".[mcp]" -
Configure NX path (edit
config/nx_config.json):{ "nx_executable": "C:/Program Files/Siemens/NX2412/NXBIN/ugraf.exe", "python_env": "C:/Users/YourName/anaconda3/envs/atomizer/python.exe" }
Basic Usage
1. Conversational Setup (via MCP)
You: My FEA is in C:\Projects\Bracket\analysis.sim, please import its features.
AI: I've analyzed your model:
- Solution: Static Analysis (NX Nastran)
- Expressions: wall_thickness (5mm), hole_diameter (10mm)
- Mesh: 8234 nodes, 4521 elements
Which parameters would you like to optimize?
You: Optimize wall_thickness and hole_diameter to minimize max stress while keeping mass low.
AI: Configuration created! Ready to start optimization with 100 iterations.
Would you like to review the config or start now?
You: Start it!
AI: Optimization launched! 🚀
Dashboard: http://localhost:8080/dashboard
2. Manual Configuration (JSON)
Create optimization_config.json:
{
"design_variables": {
"wall_thickness": {
"low": 3.0,
"high": 8.0,
"enabled": true
}
},
"objectives": {
"metrics": {
"max_stress": {
"weight": 10,
"target": 200,
"extractor": "nastran_stress"
}
}
},
"nx_settings": {
"sim_path": "C:/Projects/Bracket/analysis.sim",
"solution_name": "Solution 1"
}
}
Run optimization:
python -m optimization_engine.run_optimizer --config optimization_config.json
Features
✨ Core Capabilities
- Multi-Objective Optimization: Weighted sum, Pareto front analysis
- Smart Sampling: TPE, Latin Hypercube, Gaussian Process surrogates
- Result Extraction: Nastran (OP2/F06), NX Mass Properties, custom parsers
- Crash Recovery: Automatic resume from interruptions
- Parallel Evaluation: Multi-core FEA solving (coming soon)
📊 Visualization
- Real-time progress monitoring
- 3D Pareto front plots (Plotly)
- Parameter importance charts
- Convergence history
- FEA result overlays
🔧 Extensibility
- Pluggable result extractors: Add custom metrics easily
- Custom post-processing scripts: Python integration
- MCP tools: Extend via protocol
- NXOpen API access: Full NX automation
Project Structure
Atomizer/
├── mcp_server/ # MCP server implementation
│ ├── tools/ # MCP tool definitions
│ ├── schemas/ # JSON schemas for validation
│ └── prompts/ # LLM system prompts
├── optimization_engine/ # Core optimization logic
│ ├── result_extractors/ # Pluggable metric extractors
│ ├── multi_optimizer.py # Optuna integration
│ ├── config_loader.py # Configuration parser
│ └── history_manager.py # CSV/SQLite persistence
├── nx_journals/ # NXOpen Python scripts
│ ├── update_and_solve.py # CAD update + solver
│ ├── post_process.py # Result extraction
│ └── utils/ # Helper functions
├── dashboard/ # Web UI
│ ├── frontend/ # React app
│ └── backend/ # FastAPI server
├── tests/ # Unit tests
├── examples/ # Example projects
└── docs/ # Documentation
Configuration Schema
See docs/configuration.md for full schema documentation.
Key sections:
design_variables: Parameters to optimizeobjectives: Metrics to minimize/maximizenx_settings: NX/FEA solver configurationoptimization: Optuna sampler settingspost_processing: Result extraction pipelines
Development
Running Tests
pytest
Code Formatting
black .
ruff check .
Building Documentation
cd docs
mkdocs build
Roadmap
- MCP server foundation
- Basic optimization engine
- NXOpen integration
- Web dashboard
- Multi-fidelity optimization
- Parallel evaluations
- Sensitivity analysis tools
- Export to engineering reports
Contributing
This is a private repository. Contact contact@atomaste.com for access.
License
Proprietary - Atomaste © 2025
Support
- Documentation: docs/
- Examples: examples/
- Issues: GitHub Issues (private repository)
- Email: support@atomaste.com
Resources
NXOpen References
- Official API Docs: Siemens NXOpen .NET Documentation
- NXOpenTSE: The Scripting Engineer's Documentation (reference for patterns and best practices)
- Our Guide: NXOpen Resources
Optimization
- Optuna Documentation: optuna.readthedocs.io
- pyNastran: github.com/SteveDoyle2/pyNastran
Built with ❤️ by Atomaste | Powered by Optuna, NXOpen, and Claude
Description
Languages
Python
82.9%
TypeScript
16%
Shell
0.6%
Batchfile
0.3%
PowerShell
0.1%