Closes the neural training loop with automated workflow: - atomizer.py: One-command neural workflow CLI - auto_trainer.py: Auto-training trigger system (50pt threshold) - template_loader.py: Study creation from templates - study_reset.py: Study reset/cleanup utility - 3 templates: beam stiffness, bracket stress, frequency tuning - State assessment document (Nov 25) Usage: python atomizer.py neural-optimize --study my_study --trials 500 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
134 lines
3.6 KiB
JSON
134 lines
3.6 KiB
JSON
{
|
|
"study_name": "frequency_tuning_optimization",
|
|
"description": "Natural Frequency Tuning - Adjust structural dynamics to avoid resonance",
|
|
"engineering_context": "Modal optimization for avoiding resonance with excitation sources (motors, rotors, vibration). Tune natural frequencies away from operating frequencies while minimizing mass.",
|
|
"template_info": {
|
|
"category": "dynamics",
|
|
"analysis_type": "modal",
|
|
"typical_applications": ["motor mounts", "drone arms", "rotating equipment supports", "vibration isolation"],
|
|
"required_nx_expressions": ["section_width", "section_height", "arm_length"],
|
|
"notes": "Requires modal analysis (SOL 103) solution in NX"
|
|
},
|
|
|
|
"optimization_settings": {
|
|
"protocol": "protocol_11_multi_objective",
|
|
"n_trials": 60,
|
|
"sampler": "NSGAIISampler",
|
|
"pruner": null,
|
|
"timeout_per_trial": 500
|
|
},
|
|
|
|
"design_variables": [
|
|
{
|
|
"parameter": "section_width",
|
|
"bounds": [10, 40],
|
|
"description": "Cross-section width (mm) - affects stiffness",
|
|
"units": "mm"
|
|
},
|
|
{
|
|
"parameter": "section_height",
|
|
"bounds": [10, 60],
|
|
"description": "Cross-section height (mm) - affects stiffness in bending plane",
|
|
"units": "mm"
|
|
},
|
|
{
|
|
"parameter": "arm_length",
|
|
"bounds": [80, 200],
|
|
"description": "Arm/cantilever length (mm) - strongly affects frequency",
|
|
"units": "mm"
|
|
},
|
|
{
|
|
"parameter": "wall_thickness",
|
|
"bounds": [1, 5],
|
|
"description": "Wall thickness for hollow sections (mm)",
|
|
"units": "mm"
|
|
}
|
|
],
|
|
|
|
"objectives": [
|
|
{
|
|
"name": "mass",
|
|
"goal": "minimize",
|
|
"weight": 1.0,
|
|
"description": "Total mass (grams) - minimize for weight savings",
|
|
"target": 50,
|
|
"extraction": {
|
|
"action": "extract_mass",
|
|
"domain": "result_extraction",
|
|
"params": {
|
|
"result_type": "mass",
|
|
"metric": "total"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "first_frequency",
|
|
"goal": "maximize",
|
|
"weight": 1.0,
|
|
"description": "First natural frequency (Hz) - push away from excitation",
|
|
"target": 200,
|
|
"extraction": {
|
|
"action": "extract_frequency",
|
|
"domain": "result_extraction",
|
|
"params": {
|
|
"result_type": "frequency",
|
|
"mode_number": 1
|
|
}
|
|
}
|
|
}
|
|
],
|
|
|
|
"constraints": [
|
|
{
|
|
"name": "min_frequency_limit",
|
|
"type": "greater_than",
|
|
"threshold": 120,
|
|
"description": "First natural frequency > 120 Hz (above rotor harmonics)",
|
|
"extraction": {
|
|
"action": "extract_frequency",
|
|
"domain": "result_extraction",
|
|
"params": {
|
|
"result_type": "frequency",
|
|
"mode_number": 1
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "max_stress_limit",
|
|
"type": "less_than",
|
|
"threshold": 150,
|
|
"description": "Maximum stress < 150 MPa under static load",
|
|
"extraction": {
|
|
"action": "extract_stress",
|
|
"domain": "result_extraction",
|
|
"params": {
|
|
"result_type": "stress",
|
|
"metric": "max_von_mises"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
|
|
"simulation": {
|
|
"model_file": "Arm.prt",
|
|
"sim_file": "Arm_sim1.sim",
|
|
"fem_file": "Arm_fem1.fem",
|
|
"solver": "nastran",
|
|
"analysis_types": ["modal", "static"]
|
|
},
|
|
|
|
"reporting": {
|
|
"generate_plots": true,
|
|
"save_incremental": true,
|
|
"llm_summary": false
|
|
},
|
|
|
|
"training_data_export": {
|
|
"enabled": true,
|
|
"export_dir": "atomizer_field_training_data/${study_name}",
|
|
"export_every_n_trials": 1,
|
|
"include_mesh": true,
|
|
"compress": false
|
|
}
|
|
}
|