feat: Implement Study Interview Mode as default study creation method
Study Interview Mode is now the DEFAULT for all study creation requests. This intelligent Q&A system guides users through optimization setup with: - 7-phase interview flow: introspection → objectives → constraints → design_variables → validation → review → complete - Material-aware validation with 12 materials and fuzzy name matching - Anti-pattern detection for 12 common mistakes (mass-no-constraint, stress-over-yield, etc.) - Auto extractor mapping E1-E24 based on goal keywords - State persistence with JSON serialization and backup rotation - StudyBlueprint generation with full validation Triggers: "create a study", "new study", "optimize this", any study creation intent Skip with: "skip interview", "quick setup", "manual config" Components: - StudyInterviewEngine: Main orchestrator - QuestionEngine: Conditional logic evaluation - EngineeringValidator: MaterialsDatabase + AntiPatternDetector - InterviewPresenter: Markdown formatting for Claude - StudyBlueprint: Validated configuration output - InterviewState: Persistent state management All 129 tests passing. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# Atomizer: Intelligent FEA Optimization & NX Configuration Framework
|
||||
## Complete Technical Briefing Document for Podcast Generation
|
||||
|
||||
**Document Version:** 2.1
|
||||
**Generated:** December 31, 2025
|
||||
**Document Version:** 2.2
|
||||
**Generated:** January 2, 2026
|
||||
**Purpose:** NotebookLM/AI Podcast Source Material
|
||||
|
||||
---
|
||||
@@ -290,7 +290,143 @@ This ensures:
|
||||
|
||||
---
|
||||
|
||||
# PART 4: MCP-FIRST DEVELOPMENT APPROACH
|
||||
# PART 4: STUDY INTERVIEW MODE - INTELLIGENT STUDY CREATION
|
||||
|
||||
## The Problem: Configuration Complexity
|
||||
|
||||
Creating an optimization study traditionally requires:
|
||||
- Understanding optimization_config.json schema
|
||||
- Knowing which extractor (E1-E24) maps to which physics
|
||||
- Setting appropriate bounds for design variables
|
||||
- Choosing the right sampler and trial count
|
||||
- Avoiding common anti-patterns (mass optimization without constraints)
|
||||
|
||||
**Most engineers aren't optimization experts.** They know their physics, not Optuna samplers.
|
||||
|
||||
## The Solution: Guided Interview
|
||||
|
||||
Instead of asking users to fill out JSON files, Atomizer now **interviews them through natural conversation**.
|
||||
|
||||
### How It Works
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ STUDY INTERVIEW MODE (DEFAULT for all study creation) │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ User: "I want to create a study for my bracket" │
|
||||
│ │
|
||||
│ Atomizer: "I'll help you set up your optimization study. │
|
||||
│ Let me ask a few questions..." │
|
||||
│ │
|
||||
│ ┌──────────────────────────────────────────────────────────┐ │
|
||||
│ │ PHASE 1: INTROSPECTION (automatic) │ │
|
||||
│ │ • Analyze NX model expressions │ │
|
||||
│ │ • Detect materials from simulation │ │
|
||||
│ │ • Identify candidate design variables │ │
|
||||
│ └──────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌──────────────────────────────────────────────────────────┐ │
|
||||
│ │ PHASE 2: PROBLEM DEFINITION │ │
|
||||
│ │ Q: "What are you trying to optimize?" │ │
|
||||
│ │ A: "Minimize mass while keeping stress low" │ │
|
||||
│ └──────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌──────────────────────────────────────────────────────────┐ │
|
||||
│ │ PHASE 3: OBJECTIVES (auto-mapped to extractors) │ │
|
||||
│ │ • Mass → E4 (BDF mass extractor) │ │
|
||||
│ │ • Stress → E3 (Von Mises stress) │ │
|
||||
│ │ • No manual extractor selection needed! │ │
|
||||
│ └──────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌──────────────────────────────────────────────────────────┐ │
|
||||
│ │ PHASE 4: CONSTRAINTS (material-aware validation) │ │
|
||||
│ │ Q: "What's the maximum stress limit?" │ │
|
||||
│ │ A: "200 MPa" │ │
|
||||
│ │ │ │
|
||||
│ │ ⚠️ "Your model uses Aluminum 6061-T6 (yield: 276 MPa). │ │
|
||||
│ │ 200 MPa is close to yield. Consider 184 MPa (SF=1.5)"│ │
|
||||
│ └──────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌──────────────────────────────────────────────────────────┐ │
|
||||
│ │ PHASE 5: DESIGN VARIABLES (from introspection) │ │
|
||||
│ │ "I found these expressions in your model: │ │
|
||||
│ │ • thickness (current: 5mm) │ │
|
||||
│ │ • rib_height (current: 10mm) │ │
|
||||
│ │ Which should we optimize?" │ │
|
||||
│ │ │ │
|
||||
│ │ → Auto-suggests bounds: 2.5-7.5mm (±50% of current) │ │
|
||||
│ └──────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌──────────────────────────────────────────────────────────┐ │
|
||||
│ │ PHASE 6: REVIEW & GENERATE │ │
|
||||
│ │ Shows complete blueprint, asks for confirmation │ │
|
||||
│ │ → Generates optimization_config.json │ │
|
||||
│ │ → Generates run_optimization.py │ │
|
||||
│ └──────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Anti-Pattern Detection
|
||||
|
||||
The interview includes an **Engineering Validator** that catches common mistakes:
|
||||
|
||||
| Anti-Pattern | Detection | Warning |
|
||||
|--------------|-----------|---------|
|
||||
| `mass_no_constraint` | Mass objective without stress/displacement limit | "This typically produces paper-thin designs" |
|
||||
| `stress_over_yield` | Stress limit > material yield | "Consider safety factor 1.5-2.0" |
|
||||
| `bounds_too_wide` | Variable range > 100x | "Wide bounds = slow convergence" |
|
||||
| `too_many_objectives` | >3 objectives | "Focus on key goals for tractable optimization" |
|
||||
|
||||
### Materials Database
|
||||
|
||||
Built-in knowledge of engineering materials:
|
||||
- **12 common materials** (aluminum, steel, titanium, composites)
|
||||
- **Fuzzy name matching**: "Al 6061", "6061-T6", "aluminum" → all work
|
||||
- **Safety factors** by application (static, fatigue, impact)
|
||||
- **Yield/ultimate stress** validation
|
||||
|
||||
### Key Benefits
|
||||
|
||||
1. **Zero configuration knowledge needed** - Just describe what you want
|
||||
2. **Material-aware validation** - Catches stress limits vs. yield
|
||||
3. **Auto extractor mapping** - Goals → E1-E24 automatically
|
||||
4. **Anti-pattern detection** - Warns about common mistakes
|
||||
5. **State persistence** - Resume interrupted interviews
|
||||
6. **Blueprint validation** - Complete config before generation
|
||||
|
||||
### Trigger Phrases
|
||||
|
||||
Any of these start Interview Mode (now the DEFAULT):
|
||||
- "Create a study", "new study", "set up study"
|
||||
- "Optimize this", "optimize my model"
|
||||
- "I want to minimize mass"
|
||||
|
||||
To skip Interview Mode (power users only):
|
||||
- "Quick setup", "skip interview", "manual config"
|
||||
|
||||
### Technical Implementation
|
||||
|
||||
```
|
||||
optimization_engine/interview/
|
||||
├── study_interview.py # Main orchestrator (StudyInterviewEngine)
|
||||
├── question_engine.py # Conditional logic, dynamic options
|
||||
├── interview_state.py # Persistent state, JSON serialization
|
||||
├── interview_presenter.py # ClaudePresenter, DashboardPresenter
|
||||
├── engineering_validator.py # Materials DB, anti-pattern detector
|
||||
├── study_blueprint.py # Validated configuration generation
|
||||
└── schemas/
|
||||
├── interview_questions.json # 17 questions, 7 phases
|
||||
├── materials_database.json # 12 materials with properties
|
||||
└── anti_patterns.json # 12 anti-pattern definitions
|
||||
```
|
||||
|
||||
**All 129 tests passing.**
|
||||
|
||||
---
|
||||
|
||||
# PART 5: MCP-FIRST DEVELOPMENT APPROACH
|
||||
|
||||
## When Functions Don't Exist: How Atomizer Develops New Capabilities
|
||||
|
||||
@@ -754,6 +890,7 @@ Automatic markdown reports with:
|
||||
4. **MCP-first development** - Documentation-driven, not guessing
|
||||
5. **Simulation focus** - Not CAD, not mesh - optimization of simulation performance
|
||||
6. **Self-aware surrogates (SAT)** - Know when predictions are uncertain, validated WS=205.58
|
||||
7. **Interview Mode (NEW)** - Zero-config study creation through natural conversation
|
||||
|
||||
## Sound Bites for Podcast
|
||||
|
||||
@@ -764,6 +901,7 @@ Automatic markdown reports with:
|
||||
- "Every study makes the system smarter. That's not marketing - that's LAC."
|
||||
- "SAT knows when it doesn't know. A surrogate that's confidently wrong is worse than no surrogate at all."
|
||||
- "V5 surrogate said WS=280. FEA said WS=376. That's a 30% error from extrapolating into the unknown. SAT v3 fixed that - WS=205.58."
|
||||
- "Just say 'create a study' and Atomizer interviews you. No JSON, no manuals, just conversation."
|
||||
|
||||
## The Core Message
|
||||
|
||||
@@ -783,10 +921,11 @@ This isn't just automation - it's **accumulated engineering intelligence**.
|
||||
---
|
||||
|
||||
**Document Statistics:**
|
||||
- Sections: 12
|
||||
- Sections: 13
|
||||
- Focus: Simulation optimization (not CAD/mesh)
|
||||
- Key additions: Study characterization, protocol evolution, MCP-first development, SAT v3
|
||||
- Key additions: Study characterization, protocol evolution, MCP-first development, SAT v3, **Study Interview Mode**
|
||||
- Positioning: Optimizer & NX configurator, not "LLM-first"
|
||||
- SAT Performance: Validated WS=205.58 (best ever, beating V7 TPE at 218.26)
|
||||
- Interview Mode: 129 tests passing, 12 materials, 12 anti-patterns, 7 phases
|
||||
|
||||
**Prepared for NotebookLM/AI Podcast Generation**
|
||||
|
||||
Reference in New Issue
Block a user