Anto01 9ddc065d31 feat: Add comprehensive study management system to dashboard
Added full study configuration UI:
- Create studies with isolated folder structure (sim/, results/, config.json)
- File management: users drop .sim/.prt files into study's sim folder
- NX expression extraction: journal script to explore .sim file
- Configuration UI for design variables, objectives, and constraints
- Save/load study configurations through API
- Step-by-step workflow: create → add files → explore → configure → run

Backend API (app.py):
- POST /api/study/create - Create new study with folder structure
- GET /api/study/<name>/sim/files - List files in sim folder
- POST /api/study/<name>/explore - Extract expressions from .sim file
- GET/POST /api/study/<name>/config - Load/save study configuration

Frontend:
- New study configuration view with 5-step wizard
- Modal for creating new studies
- Expression explorer with clickable selection
- Dynamic forms for variables/objectives/constraints
- Professional styling with config cards

NX Integration:
- extract_expressions.py journal script
- Scans .sim and all loaded .prt files
- Identifies potential design variable candidates
- Exports expressions with values, formulas, units

Each study is self-contained with its own geometry files and config.
2025-11-15 14:00:00 -05:00
2025-11-15 08:12:32 -05:00
2025-11-15 08:12:32 -05:00

Atomizer

Advanced optimization platform for Siemens NX Simcenter with LLM-powered configuration

Python 3.10+ License Status

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

  1. Clone the repository:

    git clone https://github.com/Anto01/Atomizer.git
    cd Atomizer
    
  2. Create Python environment:

    conda create -n atomizer python=3.10
    conda activate atomizer
    
  3. Install dependencies:

    pip install -e .
    # For development tools:
    pip install -e ".[dev]"
    # For MCP server:
    pip install -e ".[mcp]"
    
  4. 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 optimize
  • objectives: Metrics to minimize/maximize
  • nx_settings: NX/FEA solver configuration
  • optimization: Optuna sampler settings
  • post_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

Resources

NXOpen References

Optimization


Built with ❤️ by Atomaste | Powered by Optuna, NXOpen, and Claude

Description
Main atomizer project (GitHub mirror)
Readme 3.8 GiB
Languages
Python 82.9%
TypeScript 16%
Shell 0.6%
Batchfile 0.3%
PowerShell 0.1%