Files
Atomizer/studies/bracket_stress_minimization
Anto01 2f3afc3813 feat: Add substudy system with live history tracking and workflow fixes
Major Features:
- Hierarchical substudy system (like NX Solutions/Subcases)
  * Shared model files across all substudies
  * Independent configuration per substudy
  * Continuation support from previous substudies
  * Real-time incremental history updates
- Live history tracking with optimization_history_incremental.json
- Complete bracket_displacement_maximizing study with substudy examples

Core Fixes:
- Fixed expression update workflow to pass design_vars through simulation_runner
  * Restored working NX journal expression update mechanism
  * OP2 timestamp verification instead of file deletion
  * Resolved issue where all trials returned identical objective values
- Fixed LLMOptimizationRunner to pass design variables to simulation runner
- Enhanced NXSolver with timestamp-based file regeneration verification

New Components:
- optimization_engine/llm_optimization_runner.py - LLM-driven optimization runner
- optimization_engine/optimization_setup_wizard.py - Phase 3.3 setup wizard
- studies/bracket_displacement_maximizing/ - Complete substudy example
  * run_substudy.py - Substudy runner with continuation
  * run_optimization.py - Standalone optimization runner
  * config/substudy_template.json - Template for new substudies
  * substudies/coarse_exploration/ - 20-trial coarse search
  * substudies/fine_tuning/ - 50-trial refinement (continuation example)
  * SUBSTUDIES_README.md - Complete substudy documentation

Technical Improvements:
- Incremental history saving after each trial (optimization_history_incremental.json)
- Expression update workflow: .prt update → NX journal receives values → geometry update → FEM update → solve
- Trial indexing fix in substudy result saving
- Updated README with substudy system documentation

Testing:
- Successfully ran 20-trial coarse_exploration substudy
- Verified different objective values across trials (workflow fix validated)
- Confirmed live history updates in real-time
- Tested shared model file usage across substudies

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-16 21:29:54 -05:00
..

Bracket Stress Minimization Study

Overview

This study optimizes a structural bracket to minimize maximum von Mises stress while maintaining displacement constraints.

Objective

Minimize maximum von Mises stress in the bracket under applied loading conditions.

Design Variables

  • tip_thickness: 15.0 - 25.0 mm

    • Controls the thickness of the bracket tip
    • Directly affects stress distribution and structural rigidity
  • support_angle: 20.0 - 40.0 degrees

    • Controls the angle of the support structure
    • Affects load path and stress concentration

Constraints

  • Maximum displacement ≤ 1.0 mm
    • Ensures the bracket maintains acceptable deformation under load
    • Prevents excessive deflection that could affect functionality

Model Information

All FEA files are located in model/:

Optimization Settings

  • Sampler: TPE (Tree-structured Parzen Estimator)
  • Total trials: 50
  • Startup trials: 20 (random sampling for initial exploration)
  • TPE candidates: 24
  • Multivariate: Enabled

Running the Optimization

From the project root:

python run_5trial_test.py  # Quick 5-trial test

Or for the full optimization:

from pathlib import Path
from optimization_engine.runner import OptimizationRunner

config_path = Path("studies/bracket_stress_minimization/optimization_config_stress_displacement.json")
runner = OptimizationRunner(
    config_path=config_path,
    model_updater=bracket_model_updater,
    simulation_runner=bracket_simulation_runner,
    result_extractors={...}
)

study = runner.run(study_name="bracket_study", n_trials=50)

Results

Results are stored in optimization_results/:

  • trial_logs/: Detailed logs for each trial iteration
  • history.json: Complete trial-by-trial results
  • history.csv: Results in CSV format for analysis
  • optimization_summary.json: Best parameters and final results
  • study_*.db: Optuna database for resuming optimizations

Notes

  • Uses NX Simcenter 2412 for FEA simulation
  • Journal-based solver execution for automation
  • Results extracted from OP2 files using pyNastran
  • Stress values in MPa, displacement in mm

Analysis

Post-optimization analysis plots and reports will be stored in analysis/.