Spaces:
Build error
Build error
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| # Function to calculate results for simply supported beams or continuous beams | |
| def analyze_beam(length, load, beam_type): | |
| if beam_type == "simply_supported": | |
| return analyze_simply_supported(length, load) | |
| elif beam_type == "continuous": | |
| return analyze_continuous(length, load) | |
| # Simply supported beam analysis | |
| def analyze_simply_supported(length, load): | |
| # Simplified calculation example for a uniformly loaded simply supported beam | |
| shear_force = load * length / 2 # Max shear force (at supports) | |
| bending_moment = load * length**2 / 8 # Max bending moment (at mid-span) | |
| deflection = (5 * load * length**4) / (384 * 200000 * 100) # Example deflection formula for steel (in inches) | |
| return { | |
| "max_shear": shear_force, | |
| "max_bending_moment": bending_moment, | |
| "deflection": deflection | |
| } | |
| # Continuous beam analysis (simplified example) | |
| def analyze_continuous(length, load): | |
| # Continuous beam analysis (simplified) | |
| shear_force = load * length / 3 # Approximation for continuous beams | |
| bending_moment = load * length**2 / 12 # Approximation for continuous beams | |
| deflection = (5 * load * length**4) / (384 * 200000 * 100) # Same deflection calculation as simply supported | |
| return { | |
| "max_shear": shear_force, | |
| "max_bending_moment": bending_moment, | |
| "deflection": deflection | |
| } | |
| # Function to plot beam diagrams (SFD and BMD) | |
| def plot_beam_diagrams(beam_type, length, load): | |
| x = np.linspace(0, length, 100) | |
| shear = np.zeros_like(x) | |
| moment = np.zeros_like(x) | |
| if beam_type == "simply_supported": | |
| # Shear Force and Bending Moment Diagrams for simply supported beam | |
| shear[:] = load / 2 # Simplified constant shear force | |
| moment[:] = (load * x * (length - x)) / (2 * length) # Bending moment equation for simply supported beam | |
| elif beam_type == "continuous": | |
| # Shear Force and Bending Moment Diagrams for continuous beam | |
| shear[:] = load / 3 # Simplified constant shear force for continuous beam | |
| moment[:] = (load * x * (length - x)) / (3 * length) # Approximation for continuous beam | |
| # Plot the diagrams | |
| fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8)) | |
| ax1.plot(x, shear, label="Shear Force") | |
| ax1.set_title("Shear Force Diagram (SFD)") | |
| ax1.set_xlabel("Beam Length (ft)") | |
| ax1.set_ylabel("Shear Force (lb)") | |
| ax1.grid(True) | |
| ax2.plot(x, moment, label="Bending Moment", color="orange") | |
| ax2.set_title("Bending Moment Diagram (BMD)") | |
| ax2.set_xlabel("Beam Length (ft)") | |
| ax2.set_ylabel("Bending Moment (lb-ft)") | |
| ax2.grid(True) | |
| plt.tight_layout() | |
| plt.show() | |