{ "hooks": [ { "name": "hook_weighted_objective_norm_stress_norm_disp.py", "type": "weighted_objective", "description": "Combine normalized stress (70%) and displacement (30%)", "inputs": [ "norm_stress", "norm_disp" ], "outputs": [ "weighted_objective" ] }, { "name": "hook_custom_safety_factor.py", "type": "custom_formula", "description": "Calculate safety factor", "inputs": [ "max_stress", "yield_strength" ], "outputs": [ "safety_factor" ] }, { "name": "hook_compare_min_to_avg_ratio.py", "type": "comparison", "description": "Compare min force to average", "inputs": [ "min_force", "avg_force" ], "outputs": [ "min_to_avg_ratio" ] }, { "name": "hook_constraint_yield_constraint.py", "type": "constraint_check", "description": "Check if stress is below yield", "inputs": [ "max_stress", "yield_strength" ], "outputs": [ "yield_constraint", "yield_constraint_satisfied", "yield_constraint_violation" ] } ] }