14.1.6. Reinforced Concrete Frame Pushover AnalysisΒΆ

1. The source code is shown below, which can be downloaded `here`.

2. The file for gravity analysis is also needed :`here`.

3. Run the source code in your favorite Python program and should see `Passed!` in the results.

```  1print("==========================")
2print("Start RCFramePushover Example")
3
4# Units: kips, in, sec
5#
6# Written: GLF/MHS/fmk
7# Date: January 2001
8from openseespy.opensees import *
9
10wipe()
11# ----------------------------------------------------
12# Start of Model Generation & Initial Gravity Analysis
13# ----------------------------------------------------
14
15# Do operations of Example3.1 by sourcing in the tcl file
16import RCFrameGravity
17print("Gravity Analysis Completed")
18
19# Set the gravity loads to be constant & reset the time in the domain
20loadConst('-time', 0.0)
21
22# ----------------------------------------------------
23# End of Model Generation & Initial Gravity Analysis
24# ----------------------------------------------------
25
26
27# ----------------------------------------------------
28# Start of additional modelling for lateral loads
29# ----------------------------------------------------
30
31# Define lateral loads
32# --------------------
33
34# Set some parameters
35H = 10.0  # Reference lateral load
36
37# Set lateral load pattern with a Linear TimeSeries
38pattern('Plain', 2, 1)
39
40# Create nodal loads at nodes 3 & 4
41#    nd    FX  FY  MZ
42load(3, H, 0.0, 0.0)
43load(4, H, 0.0, 0.0)
44
45# ----------------------------------------------------
46# End of additional modelling for lateral loads
47# ----------------------------------------------------
48
49
50# ----------------------------------------------------
51# Start of modifications to analysis for push over
52# ----------------------------------------------------
53
54# Set some parameters
55dU = 0.1  # Displacement increment
56
57# Change the integration scheme to be displacement control
58#                             node dof init Jd min max
59integrator('DisplacementControl', 3, 1, dU, 1, dU, dU)
60
61# ----------------------------------------------------
62# End of modifications to analysis for push over
63# ----------------------------------------------------
64
65
66# ------------------------------
67# Start of recorder generation
68# ------------------------------
69
70# Stop the old recorders by destroying them
71# remove recorders
72
73# Create a recorder to monitor nodal displacements
74# recorder Node -file node32.out -time -node 3 4 -dof 1 2 3 disp
75
76# Create a recorder to monitor element forces in columns
77# recorder EnvelopeElement -file ele32.out -time -ele 1 2 forces
78
79# --------------------------------
80# End of recorder generation
81# ---------------------------------
82
83
84# ------------------------------
85# Finally perform the analysis
86# ------------------------------
87
88# Set some parameters
89maxU = 15.0  # Max displacement
90currentDisp = 0.0
91ok = 0
92
93test('NormDispIncr', 1.0e-12, 1000)
94algorithm('ModifiedNewton', '-initial')
95
96while ok == 0 and currentDisp < maxU:
97
98    ok = analyze(1)
99
100    # if the analysis fails try initial tangent iteration
101    if ok != 0:
102        print("modified newton failed")
103        break
104    # print "regular newton failed .. lets try an initail stiffness for this step"
105    # test('NormDispIncr', 1.0e-12,  1000)
106    # # algorithm('ModifiedNewton', '-initial')
107    # ok = analyze(1)
108    # if ok == 0:
109    #     print "that worked .. back to regular newton"
110
111    # test('NormDispIncr', 1.0e-12,  10)
112    # algorithm('Newton')
113
114    currentDisp = nodeDisp(3, 1)
115
116results = open('results.out', 'a+')
117
118if ok == 0:
119    results.write('PASSED : RCFramePushover.py\n')
120    print("Passed!")
121else:
122    results.write('FAILED : RCFramePushover.py\n')
123    print("Failed!")
124
125results.close()
126
127# Print the state at node 3
128# print node 3
129
130
131print("==========================")
```