Anto01 1dab9d638d feat: Add professional web-based optimization dashboard
Complete dashboard UI for controlling and monitoring optimization runs.

Backend API (Flask):
- RESTful endpoints for study management
- Start/stop/resume optimization runs
- Real-time status monitoring
- Configuration management
- Visualization data endpoints

Frontend (HTML/CSS/JS + Chart.js):
- Modern gradient design with cards and charts
- Study list sidebar with metadata
- Active optimizations monitoring (5s polling)
- Interactive charts (progress, design vars, constraints)
- Trial history table
- New optimization modal
- Resume/delete study actions

Features:
- List all studies with trial counts
- View detailed study results
- Start new optimizations from UI
- Resume existing studies with additional trials
- Real-time progress monitoring
- Delete unwanted studies
- Chart.js visualizations (progress, DVs, constraints)
- Configuration file selection
- Study metadata tracking

Usage:
  python dashboard/start_dashboard.py
  # Opens browser to http://localhost:5000

Dependencies:
  flask, flask-cors (auto-installed)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 13:37:33 -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%