RCBeamdesign / example_design.py
Sompote's picture
Upload 7 files
b2c3381 verified
#!/usr/bin/env python3
"""
Example usage of the Continuous Beam RC Design application
This script demonstrates how to use the ContinuousBeam class programmatically
"""
from continuous_beam import ContinuousBeam
def example_design():
"""
Example: Design a 3-span continuous beam
"""
print("Continuous Beam RC Design Example")
print("="*50)
# Create beam instance
beam = ContinuousBeam()
# Set beam properties
beam.beam_width = 300 # mm
beam.beam_depth = 500 # mm
beam.fc = 28 # MPa
beam.fy = 420 # MPa
beam.cover = 40 # mm
beam.d = beam.beam_depth - beam.cover
print(f"Beam dimensions: {beam.beam_width} × {beam.beam_depth} mm")
print(f"Material properties: f'c = {beam.fc} MPa, fy = {beam.fy} MPa")
print(f"Effective depth: {beam.d} mm")
print()
# Add spans
beam.add_span(length=6.0, distributed_load=25.0) # Span 1: 6m, 25 kN/m
beam.add_span(length=8.0, distributed_load=30.0) # Span 2: 8m, 30 kN/m
beam.add_span(length=5.0, distributed_load=20.0) # Span 3: 5m, 20 kN/m
print("Spans added:")
for i, span in enumerate(beam.spans):
print(f" Span {i+1}: Length = {span['length']}m, Load = {span['distributed_load']} kN/m")
print()
# Perform design
try:
design_results = beam.design_beam()
# Generate report
report = beam.generate_report(design_results)
print(report)
# Additional analysis
print("\n" + "="*60)
print("DESIGN SUMMARY")
print("="*60)
total_steel = 0
max_moment = 0
max_shear = 0
for span_data in design_results:
span_num = span_data['span']
print(f"\nSpan {span_num} ({span_data['length']}m):")
for reinf in span_data['reinforcement']:
if reinf['As_required'] > 0:
total_steel += reinf['As_provided']
if abs(reinf['moment']) > abs(max_moment):
max_moment = reinf['moment']
print(f" {reinf['location']}: {reinf['bars']} (As = {reinf['As_provided']:.0f} mm²)")
for stirrup in span_data['stirrups']:
if stirrup['shear'] != 0 and abs(stirrup['shear']) > abs(max_shear):
max_shear = stirrup['shear']
print(f"\nOverall Summary:")
print(f" Total steel area: {total_steel:.0f} mm²")
print(f" Maximum moment: {max_moment:.2f} kN-m")
print(f" Maximum shear: {max_shear:.2f} kN")
print(f" Steel ratio: {total_steel/(beam.beam_width * beam.d * len(beam.spans))*100:.2f}%")
except Exception as e:
print(f"Design failed: {e}")
def run_gui():
"""
Launch the GUI application
"""
try:
from beam_design_app import main
print("Launching GUI application...")
main()
except ImportError as e:
print(f"GUI application not available: {e}")
print("Please install tkinter and matplotlib to use the GUI")
if __name__ == "__main__":
# Run example design
example_design()
# Ask user if they want to launch GUI
print("\n" + "="*60)
response = input("Would you like to launch the GUI application? (y/n): ").lower().strip()
if response in ['y', 'yes']:
run_gui()