Files
Atomizer/generated_hooks/hook_custom_safety_factor.py

75 lines
1.7 KiB
Python
Raw Normal View History

2025-11-16 16:33:48 -05:00
"""
Custom Formula Hook
Auto-generated by Atomizer Phase 2.9
Calculate safety factor
Formula: safety_factor = yield_strength / max_stress
Inputs: max_stress, yield_strength
"""
import sys
import json
from pathlib import Path
def calculate_safety_factor(max_stress, yield_strength):
"""
Calculate custom metric using formula.
Args:
max_stress: float
yield_strength: float
Returns:
float: safety_factor
"""
safety_factor = yield_strength / max_stress
return safety_factor
def main():
"""Main entry point for hook execution."""
if len(sys.argv) < 2:
print("Usage: python {} <input_file.json>".format(sys.argv[0]))
sys.exit(1)
input_file = Path(sys.argv[1])
# Read inputs
with open(input_file, 'r') as f:
inputs = json.load(f)
# Extract required inputs
max_stress = inputs.get("max_stress")
if max_stress is None:
print(f"Error: Required input 'max_stress' not found")
sys.exit(1)
yield_strength = inputs.get("yield_strength")
if yield_strength is None:
print(f"Error: Required input 'yield_strength' not found")
sys.exit(1)
# Calculate result
result = calculate_safety_factor(max_stress, yield_strength)
# Write output
output_file = input_file.parent / "safety_factor_result.json"
output = {
"safety_factor": result,
"formula": "yield_strength / max_stress",
"inputs_used": {"max_stress": max_stress, "yield_strength": yield_strength}
}
with open(output_file, 'w') as f:
json.dump(output, f, indent=2)
print(f"safety_factor = {result:.6f}")
print(f"Result saved to: {output_file}")
return result
if __name__ == '__main__':
main()