Includes all study folders with NX models for development: - bracket_stiffness_optimization (V1, V2, V3) - drone_gimbal_arm_optimization - simple_beam_optimization - uav_arm_optimization (V1, V2) - training_data_export_test - uav_arm_atomizerfield_test Contains .prt, .fem, .sim files and optimization databases. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
132 lines
3.4 KiB
JSON
132 lines
3.4 KiB
JSON
{
|
|
"workflow_name": "bracket_stiffness_workflow",
|
|
"description": "End-to-end workflow for bracket stiffness optimization",
|
|
"version": "1.0",
|
|
|
|
"workflow_steps": [
|
|
{
|
|
"step": 1,
|
|
"name": "update_design_variables",
|
|
"description": "Update NX model expressions with trial parameters",
|
|
"action": "nx_update_expressions",
|
|
"inputs": {
|
|
"model_file": "1_setup/model/Bracket.prt",
|
|
"expressions": {
|
|
"support_angle": "{{support_angle}}",
|
|
"tip_thickness": "{{tip_thickness}}"
|
|
}
|
|
},
|
|
"outputs": ["updated_model"],
|
|
"on_failure": "abort_trial"
|
|
},
|
|
|
|
{
|
|
"step": 2,
|
|
"name": "solve_simulation",
|
|
"description": "Run NX Nastran SOL 101 linear static analysis",
|
|
"action": "nx_solve",
|
|
"inputs": {
|
|
"sim_file": "1_setup/model/Bracket_sim1.sim",
|
|
"solver": "NX_Nastran",
|
|
"solution": "SOL101"
|
|
},
|
|
"outputs": ["op2_file", "f06_file"],
|
|
"on_failure": "abort_trial",
|
|
"timeout": 600
|
|
},
|
|
|
|
{
|
|
"step": 3,
|
|
"name": "export_displacement_field",
|
|
"description": "Export z-displacement field from results",
|
|
"action": "nx_journal",
|
|
"inputs": {
|
|
"journal_file": "1_setup/model/export_displacement_field.py",
|
|
"sim_file": "1_setup/model/Bracket_sim1.sim"
|
|
},
|
|
"outputs": ["field_file"],
|
|
"on_failure": "abort_trial"
|
|
},
|
|
|
|
{
|
|
"step": 4,
|
|
"name": "extract_results",
|
|
"description": "Extract stiffness and mass from FEA results",
|
|
"action": "python_extractor",
|
|
"inputs": {
|
|
"extractor_script": "bracket_stiffness_extractor.py",
|
|
"field_file": "1_setup/model/export_field_dz.fld",
|
|
"op2_file": "1_setup/model/Bracket_sim1.op2"
|
|
},
|
|
"outputs": {
|
|
"stiffness": "objectives.stiffness",
|
|
"mass": "objectives.mass",
|
|
"displacement": "displacement",
|
|
"force": "force"
|
|
},
|
|
"on_failure": "abort_trial"
|
|
},
|
|
|
|
{
|
|
"step": 5,
|
|
"name": "evaluate_constraints",
|
|
"description": "Check mass constraint (≤ 0.2 kg) - mark as infeasible but keep for surrogate",
|
|
"action": "constraint_check",
|
|
"inputs": {
|
|
"mass": "{{mass}}",
|
|
"max_mass": 0.2
|
|
},
|
|
"outputs": ["constraint_satisfied"],
|
|
"on_failure": "continue"
|
|
},
|
|
|
|
{
|
|
"step": 6,
|
|
"name": "report_results",
|
|
"description": "Send results to optimization engine and dashboard",
|
|
"action": "report",
|
|
"inputs": {
|
|
"trial_number": "{{trial_number}}",
|
|
"objectives": {
|
|
"stiffness": "{{stiffness}}",
|
|
"mass": "{{mass}}"
|
|
},
|
|
"design_variables": {
|
|
"support_angle": "{{support_angle}}",
|
|
"tip_thickness": "{{tip_thickness}}"
|
|
},
|
|
"metadata": {
|
|
"displacement": "{{displacement}}",
|
|
"force": "{{force}}"
|
|
}
|
|
},
|
|
"outputs": ["trial_complete"],
|
|
"on_failure": "log_error"
|
|
}
|
|
],
|
|
|
|
"error_handling": {
|
|
"max_retries": 2,
|
|
"retry_delay": 5,
|
|
"fallback_action": "skip_trial",
|
|
"log_errors": true,
|
|
"error_log_file": "2_results/errors.log"
|
|
},
|
|
|
|
"cleanup": {
|
|
"delete_intermediate_files": false,
|
|
"archive_results": true,
|
|
"compress_op2": false
|
|
},
|
|
|
|
"logging": {
|
|
"level": "INFO",
|
|
"log_file": "2_results/workflow.log",
|
|
"console_output": true,
|
|
"log_rotation": {
|
|
"max_size_mb": 50,
|
|
"backup_count": 3
|
|
}
|
|
}
|
|
}
|