Major additions: - Training data export system for AtomizerField neural network training - Bracket stiffness optimization study with 50+ training samples - Intelligent NX model discovery (auto-detect solutions, expressions, mesh) - Result extractors module for displacement, stress, frequency, mass - User-generated NX journals for advanced workflows - Archive structure for legacy scripts and test outputs - Protocol documentation and dashboard launcher 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
90 lines
2.4 KiB
Python
90 lines
2.4 KiB
Python
"""
|
|
Create circular_plate_frequency_tuning_V2 study with all fixes.
|
|
"""
|
|
from pathlib import Path
|
|
import shutil
|
|
import json
|
|
|
|
# Study configuration
|
|
study_name = "circular_plate_frequency_tuning_V2"
|
|
study_dir = Path("studies") / study_name
|
|
|
|
# Create study structure
|
|
print(f"Creating study: {study_name}")
|
|
print("=" * 80)
|
|
|
|
# 1. Create directory structure
|
|
(study_dir / "1_setup" / "model").mkdir(parents=True, exist_ok=True)
|
|
(study_dir / "2_results").mkdir(parents=True, exist_ok=True)
|
|
(study_dir / "3_reports").mkdir(parents=True, exist_ok=True)
|
|
|
|
# 2. Copy model files
|
|
source_dir = Path("examples/Models/Circular Plate")
|
|
model_files = [
|
|
"Circular_Plate.prt",
|
|
"Circular_Plate_sim1.sim",
|
|
"Circular_Plate_fem1.fem",
|
|
"Circular_Plate_fem1_i.prt"
|
|
]
|
|
|
|
print("\n[1/5] Copying model files...")
|
|
for file in model_files:
|
|
src = source_dir / file
|
|
dst = study_dir / "1_setup" / "model" / file
|
|
if src.exists():
|
|
shutil.copy2(src, dst)
|
|
print(f" ✓ {file}")
|
|
|
|
# 3. Create workflow config
|
|
print("\n[2/5] Creating workflow configuration...")
|
|
workflow = {
|
|
"study_name": study_name,
|
|
"optimization_request": "Tune the first natural frequency mode to exactly 115 Hz (within 0.1 Hz tolerance)",
|
|
"design_variables": [
|
|
{
|
|
"parameter": "inner_diameter",
|
|
"bounds": [50, 150]
|
|
},
|
|
{
|
|
"parameter": "plate_thickness",
|
|
"bounds": [2, 10]
|
|
}
|
|
],
|
|
"objectives": [
|
|
{
|
|
"name": "frequency_error",
|
|
"goal": "minimize",
|
|
"extraction": {
|
|
"action": "extract_first_natural_frequency",
|
|
"params": {
|
|
"mode_number": 1,
|
|
"target_frequency": 115.0
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"constraints": [
|
|
{
|
|
"name": "frequency_tolerance",
|
|
"type": "less_than",
|
|
"threshold": 0.1
|
|
}
|
|
]
|
|
}
|
|
|
|
config_file = study_dir / "1_setup" / "workflow_config.json"
|
|
with open(config_file, 'w') as f:
|
|
json.dump(workflow, f, indent=2)
|
|
print(f" ✓ Configuration saved")
|
|
|
|
print("\n[3/5] Study structure created")
|
|
print(f" Location: {study_dir}")
|
|
print(f" - 1_setup/model: Model files")
|
|
print(f" - 2_results: Optimization results")
|
|
print(f" - 3_reports: Human-readable reports")
|
|
|
|
print("\n[4/5] Next: Run intelligent setup to generate optimization runner")
|
|
print(f" Command: python create_circular_plate_study.py --study-name {study_name}")
|
|
|
|
print("\nDone!")
|