File size: 3,418 Bytes
b2c3381
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/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()