# Study Conventions **Version**: 1.0 **Created**: February 2026 **Target Audience**: Technical Lead, Optimizer, Study Builder **References**: `studies/README.md`, `templates/HOW_TO_CREATE_A_STUDY.md` --- ## Overview Studies are the technical execution units of Atomizer-HQ. They represent specific FEA optimization runs that generate data, insights, and optimized designs. This document defines how studies are structured, executed, and integrated with the broader project workflow. ### Study vs. Project Distinction - **Project** = Business/client organizing unit (`projects/[name]/`) - **Study** = Technical execution unit (`studies/[name]/`) - **Relationship**: Studies contribute results back to project KB and deliverables --- ## Study Directory Structure Every study follows a standardized structure for consistency and tool compatibility. ### Standard Study Layout ``` studies/[study-name]/ │ ├── README.md # Study purpose, configuration, results ├── atomizer_spec.json # Study configuration (AtomizerSpec v2.0) ├── run_optimization.py # Study execution script │ ├── model/ # Study-specific model files │ ├── [component].prt # NX CAD model (copied from project reference) │ ├── [component].sim # NX simulation setup │ ├── [component].fem # FEM file │ └── baseline_results/ # Initial validation results │ ├── introspection/ # Pre-study analysis │ ├── model_analysis.md # Model validation and setup notes │ ├── parameter_sensitivity.md # Initial parameter studies │ └── optimization_plan.md # Study-specific optimization strategy │ ├── results/ # Generated by Atomizer (DO NOT COMMIT) │ ├── optimization.log # High-level progress log │ ├── trial_logs/ # Detailed per-trial logs │ ├── history.json # Complete trial history │ ├── history.csv # CSV format for analysis │ ├── best_trial.json # Best design summary │ ├── plots/ # Auto-generated visualizations │ └── study_*.db # Optuna database files │ └── project_link # Link to parent project (optional) ``` --- ## Study Naming Conventions Studies use a consistent naming pattern for organization and traceability. ### Naming Pattern: `[project]_[number]_[descriptive_name]` **Examples**: - `hydrotech_01_baseline_validation` - `hydrotech_02_stress_optimization` - `bracket_03_mass_reduction` - `mount_04_fatigue_analysis` ### Naming Rules 1. **Project prefix** — Links study to project context 2. **Sequential numbering** — `01`, `02`, `03`, etc. (always two digits) 3. **Descriptive name** — Clear purpose in underscore format 4. **No spaces** — Use underscores throughout 5. **Lowercase** — Consistent case convention --- ## atomizer_spec.json Format Studies use AtomizerSpec v2.0 as the single source of truth for configuration. ### Complete atomizer_spec.json Example ```json { "study_name": "hydrotech_02_stress_optimization", "description": "Minimize maximum stress in hydraulic cylinder mount", "created": "2026-02-05T14:30:00Z", "version": "2.0", "model": { "sim_file": "model/cylinder_mount.sim", "prt_file": "model/cylinder_mount.prt", "fem_file": "model/cylinder_mount.fem", "description": "Hydraulic cylinder mounting bracket with 4-bolt pattern" }, "design_variables": { "bracket_thickness": { "type": "continuous", "min": 8.0, "max": 20.0, "initial": 12.0, "units": "mm", "description": "Main bracket plate thickness" }, "fillet_radius": { "type": "continuous", "min": 3.0, "max": 12.0, "initial": 5.0, "units": "mm", "description": "Fillet radius at gusset-bracket intersection" }, "gusset_thickness": { "type": "continuous", "min": 6.0, "max": 15.0, "initial": 10.0, "units": "mm", "description": "Gusset plate thickness" } }, "extractors": [ { "name": "max_stress", "function": "extract_stress", "parameters": { "result_type": "von_mises", "metric": "max", "units": "MPa" }, "description": "Maximum von Mises stress in structure" }, { "name": "max_displacement", "function": "extract_displacement", "parameters": { "metric": "max", "units": "mm" }, "description": "Maximum displacement magnitude" }, { "name": "total_mass", "function": "extract_mass", "parameters": { "units": "kg" }, "description": "Total structural mass" } ], "objectives": [ { "name": "minimize_stress", "extractor": "max_stress", "direction": "minimize", "weight": 1.0, "target": 150.0, "units": "MPa" } ], "constraints": [ { "name": "displacement_limit", "extractor": "max_displacement", "type": "upper_bound", "limit": 2.0, "units": "mm", "description": "Maximum allowable displacement" }, { "name": "mass_limit", "extractor": "total_mass", "type": "upper_bound", "limit": 5.0, "units": "kg", "description": "Maximum allowable mass" } ], "optimization_settings": { "n_trials": 50, "sampler": "TPE", "n_startup_trials": 10, "timeout": 7200, "pruning": { "enabled": true, "patience": 5 } }, "post_processing": { "generate_plots": true, "plot_formats": ["png", "pdf"], "cleanup_models": false, "keep_top_n_models": 10 }, "project": { "name": "hydrotech-beam", "phase": "stress_optimization", "kb_path": "../projects/hydrotech-beam/kb", "deliverable_path": "../projects/hydrotech-beam/deliverables" } } ``` --- ## Study Setup Process ### 1. Technical Lead: Study Planning Before creating the study, the Technical Lead defines the optimization strategy. **Planning Tasks**: - Define study objectives and success criteria - Select design variables and ranges - Choose optimization strategy and settings - Plan model setup and validation approach **Planning Documentation** (`introspection/optimization_plan.md`): ```markdown # Study Optimization Plan ## Objective Minimize maximum stress while maintaining displacement and mass constraints ## Design Variables - bracket_thickness: Primary structural parameter (8-20mm) - fillet_radius: Local stress concentrator (3-12mm) - gusset_thickness: Secondary support (6-15mm) ## Strategy 1. Initial exploration: 20 trials to map design space 2. Focused optimization: 30 additional trials on promising regions 3. Validation: Verify best designs with mesh convergence ## Expected Outcomes - Target: Reduce max stress from 185 MPa to <150 MPa - Maintain: Displacement <2mm, mass <5kg - Timeline: 2-3 days execution ``` ### 2. Optimizer: Study Creation The Optimizer creates the study structure and configuration. **Creation Steps**: ```bash # Create study directory mkdir -p studies/hydrotech_02_stress_optimization/{model,introspection,results} # Copy reference models from project cp projects/hydrotech-beam/models/reference/* \ studies/hydrotech_02_stress_optimization/model/ # Create atomizer_spec.json from template # (Use existing study as template or create from scratch) # Create study README.md cp templates/study_README_template.md \ studies/hydrotech_02_stress_optimization/README.md ``` ### 3. Optimizer: Model Validation Validate the model setup before optimization begins. **Validation Checklist**: - [ ] Model loads and runs successfully in NX - [ ] Design variables update model geometry correctly - [ ] Extractors return valid results - [ ] Baseline results match expectations - [ ] Convergence criteria are met **Validation Documentation** (`introspection/model_analysis.md`): ```markdown # Model Validation Results ## Baseline Analysis - Max stress: 185.3 MPa at upper bolt interface - Max displacement: 1.42 mm at bracket tip - Total mass: 3.8 kg ## Parameter Sensitivity - Thickness: 10% increase → 8% stress reduction - Fillet radius: 2mm increase → 12% stress reduction - Gusset thickness: Minimal effect on global stress ## Model Quality - Mesh convergence: <5% change with 50% refinement - Solver convergence: 6 iterations typical - Extractor validation: Results consistent with NX postprocessor ``` --- ## Study Execution ### Optimization Execution Workflow **1. Pre-Execution Check**: ```bash # Validate configuration python optimization_engine/validate_spec.py studies/hydrotech_02_stress_optimization/atomizer_spec.json # Test model functionality python optimization_engine/test_model.py studies/hydrotech_02_stress_optimization/ ``` **2. Execute Study**: ```bash # Navigate to Atomizer root cd /path/to/Atomizer # Run optimization python run_study.py --study studies/hydrotech_02_stress_optimization ``` **3. Monitor Progress**: ```bash # Follow optimization log tail -f studies/hydrotech_02_stress_optimization/results/optimization.log # Check current status python optimization_engine/check_status.py studies/hydrotech_02_stress_optimization ``` ### Progress Monitoring **Optimization Log Format**: ``` [14:35:22] Study START | Design variables: 3, Objectives: 1, Constraints: 2 [14:35:22] Trial 0 START | bracket_thickness=12.0, fillet_radius=5.0, gusset_thickness=10.0 [14:35:48] Trial 0 COMPLETE | max_stress=185.3, max_displacement=1.42, total_mass=3.8 [14:35:51] Trial 1 START | bracket_thickness=15.2, fillet_radius=7.8, gusset_thickness=11.5 [14:36:15] Trial 1 COMPLETE | max_stress=158.7, max_displacement=1.18, total_mass=4.2 ``` --- ## Results Processing ### Automatic Results Generation The optimization engine automatically generates: **Core Results**: - `history.json` — Complete trial data - `history.csv` — Analysis-friendly format - `best_trial.json` — Optimal design summary - `optimization.log` — Human-readable progress **Visualizations** (if enabled): - Parameter correlation plots - Objective history plots - Constraint violation plots - Pareto front plots (multi-objective) ### Manual Results Analysis The Optimizer should create additional analysis as needed: **Custom Analysis** (`results/custom_analysis.md`): ```markdown # Study Results Analysis ## Best Design Summary - Optimal parameters: bracket_thickness=16.5mm, fillet_radius=9.2mm, gusset_thickness=12.1mm - Performance: max_stress=142.8 MPa (23% reduction from baseline) - Constraints: displacement=1.58mm (OK), mass=4.3kg (OK) ## Key Insights - Fillet radius most influential parameter (40% of improvement) - Diminishing returns above 17mm bracket thickness - Gusset thickness has minimal effect within tested range ## Validation Required - Mesh convergence check on optimal design - Fatigue analysis at reduced stress levels - Manufacturing feasibility of 9.2mm fillet radius ``` --- ## Results Integration with Projects ### Knowledge Base Updates Study results flow back to the project KB immediately after completion. **KB Update Process**: 1. **Component Knowledge** — Update component behavior insights 2. **FEA Knowledge** — Document modeling insights and lessons 3. **Optimization Knowledge** — Record algorithm performance and sensitivities 4. **Lessons Learned** — Process improvements and unexpected findings **Example KB Update** (`projects/hydrotech-beam/kb/components/cylinder-mount.md`): ```markdown ## Generation 3: Stress Optimization Study (2026-02-05) **Context**: hydrotech_02_stress_optimization results **Agent**: Optimizer **Confidence**: High ### Optimization Results - Achieved 23% stress reduction (185.3 → 142.8 MPa) - Optimal design: 16.5mm thickness, 9.2mm fillet, 12.1mm gusset - All constraints satisfied with margin ### Key Sensitivities - Fillet radius: Most critical parameter (40% of improvement) - Bracket thickness: Diminishing returns >17mm - Gusset thickness: Minimal effect in tested range (6-15mm) ### Design Insights - Local geometry (fillet) more important than global (thickness) - Current constraint limits not binding (could push further) - Manufacturing implications: 9.2mm fillet requires machining ### Implications - Focus future optimization on fillet and local geometry - Consider tighter mass constraints to drive efficiency - Investigate manufacturing cost of optimal fillet radius ``` ### Model Archival Best study models are promoted to project optimized models. **Model Promotion Process**: ```bash # Copy optimal model to project cp studies/hydrotech_02_stress_optimization/results/best_trial/cylinder_mount_optimal.prt \ projects/hydrotech-beam/models/optimized/cylinder_mount_stress_optimized_v1.0.prt # Update model registry # (Document in project metadata and KB) ``` --- ## Study Quality Standards ### Technical Quality Criteria 1. **Model Validation** — Baseline results verified 2. **Convergence** — Optimization converged appropriately 3. **Constraint Satisfaction** — All constraints respected 4. **Result Validation** — Best designs verified for engineering reasonableness 5. **Documentation** — Complete introspection and results documentation ### Process Quality Criteria 1. **Planning** — Clear optimization strategy documented 2. **Execution** — Followed standard execution workflow 3. **Monitoring** — Progress tracked and issues documented 4. **Integration** — Results properly integrated with project KB 5. **Handoff** — Clear communication to Post-Processor ### Documentation Standards Every study must include: **Required Documentation**: - [ ] `README.md` with study purpose and summary - [ ] `introspection/optimization_plan.md` with strategy - [ ] `introspection/model_analysis.md` with validation - [ ] `results/custom_analysis.md` with insights (if applicable) - [ ] KB updates with generation-tracked knowledge --- ## Common Study Patterns ### 1. Baseline Validation Studies **Purpose**: Validate model setup and establish baseline performance **Trials**: 3-5 (minimal optimization, focus on validation) **Documentation**: Extensive model validation, minimal optimization insights ### 2. Exploration Studies **Purpose**: Map design space and identify promising regions **Trials**: 20-50 (broad parameter ranges) **Documentation**: Parameter sensitivities, design space characteristics ### 3. Optimization Studies **Purpose**: Find optimal designs within known promising regions **Trials**: 30-100 (focused parameter ranges) **Documentation**: Convergence analysis, optimal design validation ### 4. Validation Studies **Purpose**: Verify optimal designs and perform additional analysis **Trials**: 5-10 (focused around optimal points) **Documentation**: Mesh convergence, robustness analysis, manufacturing assessment --- ## Integration with Templates ### Reference Documents - **`studies/README.md`** — Complete study directory overview - **`templates/HOW_TO_CREATE_A_STUDY.md`** — Detailed study creation guide - **`templates/study_template/`** — Template directory structure ### Template Usage ```bash # Create study from template cp -r templates/study_template studies/new_study_name # Customize for specific project # - Update atomizer_spec.json # - Copy reference models # - Update README.md # - Create optimization plan ``` --- ## Troubleshooting Common Issues ### Model Execution Problems **Symptoms**: Trials fail with model errors **Solutions**: - Verify NX installation and licensing - Check model file paths in atomizer_spec.json - Validate design variable expressions exist in model - Test model manually in NX with parameter changes ### Optimization Not Converging **Symptoms**: No improvement over many trials **Solutions**: - Check parameter ranges (too narrow/too wide?) - Verify objective scaling (similar magnitudes?) - Try different sampler (Random for exploration) - Increase trial count or adjust convergence criteria ### Constraint Violations **Symptoms**: All or most trials violate constraints **Solutions**: - Relax constraint limits (may be too tight) - Expand design variable bounds - Adjust objective weights (prioritize feasibility) - Consider multi-stage optimization (feasibility first) ### Results Don't Make Sense **Symptoms**: Optimal designs seem wrong or unrealistic **Solutions**: - Verify extractor functions return correct values - Check units consistency across specification - Validate optimal design manually in NX - Review optimization log for anomalies --- Last updated: February 2026