The Opensees Examples Primer
The Opensees Examples Primer
Version 1.0
January 15, 2001
Frank McKenna and Michael Scott
Pacic Earthquake Engineering Research Center
University of California, Berkeley
Introduction
The objective of this primer is to provide new users of OpenSees (Open System for Earth-
quake Engineering Simulation) familiar structural engineering examples as a convenient
method for learning how to use the software. OpenSees is an object-oriented framework
for building models of structural and geotechnical systems, performing nonlinear analysis
with the model, and processing the response results. The goal for OpenSees is to support a
wide range of simulation applications in earthquake engineering. The details, however, on
how OpenSees accomplishes this goal are not particularly important for new users, who are
primarily interested in how to solve problems.
This primer examines a few typical examples. Most users will conduct a simulation with
a scripting language that has been extended to incorporate the features of OpenSees. As new
features are developed, such as material models, elements, solution methods, etc., the script-
ing language can be extended to include them. The scripting language is named Tcl/Tk,
and it has many features for dealing with variables, expressions, loops, data structures, in-
put/output, that are useful for doing a simulation. Some of the basic features of Tcl will be
illustrated in the examples.
Although users do not need to understand the object-oriented principles in the OpenSees
framework, some terminology helps in the description of the examples. We talk about
commands creating objects, which may be a specic material, element, analysis procedure,
etc. To conduct a simulation, the user creates objects for three main purposes:
1. Modeling: The user rst creates a ModelBuilder object which denes the type of
model, and commands available for building the model. With a ModelBuilder dened,
the user then creates the Element, Node, LoadPattern and Constraint objects that
dene the model. In this primer, the use of a basic ModelBuilder will be demonstrated.
2. Analysis: After dened the model, the next step is to create the Analysis object for
analyzing the model. This may be a simple static linear analysis or a transient non-
linear analysis. In OpenSees, an Analysis object is composed of several component
objects, which dene how the analysis is performed. The component objects consist of
the following: SolutionAlgorithm, Integrator, ConstraintHandler, DOF Numberer,
SystemOfEqn, Solver, and AnalysisModel. This approach provides a great deal of
exibility in how an analysis is conducted.
1
3. Output Specication: Once the model and analysis have been dened, the user has
the option of specifying what is to be monitored during the analysis. This, for example,
could be the displacement history at a node or internal state of an element in a transient
analysis or the entire state of the model at each step in the solution procedure. Several
Recorder objects are created to store what the user wants to examine.
In the examples, Tcl scripts are used to create a model, analysis, and output specication.
The examples are (1) simple truss structure, (2) reinforced concrete portal frame, (3) two-
story multi-bay reinforced concrete frame, and (4) a three-dimensional frame. The examples
are not meant to be completely realistic, but they are representative of typical structures.
The analyses performed on these models consist of simple static analysis, pushover analysis
and transient analysis. An example of moment-curvature analysis is also performed on a
reinforced concrete section.
2
1 EXAMPLE 1 - Truss Example
The rst example is a simple truss structure. The purpose of this example is to show
that model generation in OpenSees can resemble typical nite element analysis programs
with the denition of nodes, materials, elements, loads and constraints. The example also
demonstrates how an analysis object is 'built' from component objects.
Model
The model consists of four nodes, three truss elements, a single load pattern with a nodal
load acting at node 4, and constraints at the three support nodes. Since the truss elements
have the same elastic material, a single Elastic material object is created.
50kip
4 100kip
E=3000ksi
A 1=10in^2
(3) A 2,3=5in^2
8’ (1)
(2)
1
2 3
6’ 6’ 2’
Analysis
The model is linear, so we use a solution Algorithm of type Linear. Even though the
solution is linear, we have to select a procedure for applying the load, which is called an
Integrator. For this problem, a LoadControl integrator advances the solution. The equations
are formed using a banded system, so the System is BandSPD (banded, symmetric positive
denite). This is a good choice for most moderate size models. The equations have to be
3
numbered, so typically an RCM numberer object is used (for Reverse Cuthill-McKee). The
constraints are most easily represented with a Plain constraint handler.
Once all the components of an analysis are dened, the Analysis object itself is created.
For this problem a Static Analysis object is used.
Output Specication
When the analysis is complete the state of node 4 and all three elements will be printed
to the screen. Nothing is recorded for later use.
OpenSees Script
The Tcl script for the example is shown below. A comment is indicated by a # symbol.
In the comments below, the syntax for important commands are given.
# ------------------------------
# Start of model generation
# ------------------------------
# Create nodes
# ------------
4
# Define elements
# ---------------
# Create truss elements - command: element truss trussID node1 node2 A matID
element truss 1 1 4 10.0 1
element truss 2 2 4 5.0 1
element truss 3 3 4 5.0 1
# Define loads
# ------------
# ------------------------------
# End of model generation
# ------------------------------
# ------------------------------
# Start of analysis generation
# ------------------------------
# ------------------------------
# End of analysis generation
# ------------------------------
5
# ------------------------------
# Finally perform the analysis
# ------------------------------
Results
Node: 4
Coordinates : 72 96
commitDisps: 0.530093 -0.177894
unbalanced Load: 100 -50
For the node, displacements and loads are given. For the truss elements, the axial strain
and force are provided along with the resisting forces in the global coordinate system.
6
2 EXAMPLE 2 - Moment-Curvature Analysis of a
Reinforced Concrete Section
This next example covers the moment-curvature analysis of a reinforced concrete section.
The zero-length element with a ber discretization of the cross section is used in the model.
In addition, Tcl language features such as variable and command substitution, expression
evaluation, and procedures are demonstrated.
Model
The model consists of two nodes and a ZeroLengthSection element. A depiction of the
element geometry is shown in gure 2. The drawing on the left of gure 2 shows an edge
view of the element where the local z-axis, as seen on the right side of the gure and in
gure 3, is coming out of the page. Node 1 is completely restrained, while the applied loads
act on node 2. A compressive axial load, P, of 180 kips is applied to the section during the
moment-curvature analysis.
y
y
Steel
Concrete
0110
M
P x
10
x
1 2
z
Fixed
Steel
Y
7
For the zero length element, a section discretized by concrete and steel is created to
represent the resultant behavior. UniaxialMaterial objects are created to dene the ber
stress-strain relationships: conned concrete in the column core, unconned concrete in the
column cover, and reinforcing steel.
The dimensions of the ber section are shown in gure 3. The section depth is 24 inches,
the width is 15 inches, and there are 1.5 inches of cover around the entire section. Strong
axis bending is about the section z-axis. In fact, the section z-axis is the strong axis of
bending for all ber sections in planar problems. The section is separated into conned
and unconned concrete regions, for which separate ber discretizations will be generated.
Reinforcing steel bars will be placed around the boundary of the conned and unconned
regions. The ber discretization for the section is shown in gure 4.
depth = 24"
cover = 1.5" cover = 1.5"
Unconfined Region
Confined Region
width = 15"
y
cover = 1.5"
111
000
000
111 111
000
000
111 111
000
000
111
000
111 000
111 000
111
111
000
000
111 111
000
000
111
000
111 000
111
y 000
111 000
111
111
000 111
000 111
000
000
111
000
111 000
111
000
111 000
111
000
111
8
Analysis
The section analysis is performed by the Tcl procedure MomentCurvature dened in the
le MomentCurvature.tcl. The arguments to the procedure are the tag of the section to be
analyzed, the axial load applied to the section, the maximum curvature, and the number of
displacement increments to reach the maximum curvature.
Output Specication
The output for the moment-curvature analysis will be the section forces and deformations,
stored in the le section1.out. In addition, an estimate of the section yield curvature is
printed to the screen.
OpenSees Script
In the script below variables, are set and can then be used with the syntax of $variable.
Expressions can be evaluated, although the Tcl syntax at rst appears cumbersome. An
expression is given by an expr command enclosed in square brackets []'s. Typically, the
result of an expression is then set to another variable. A simple example to add 2.0 to a
parameter is shown below:
set v 3.0
set sum [expr $v + 2.0]
puts $sum; # print the sum
Comments with # can appear on the same line as a command, but then the command
must be terminated with a semi-colon.
# OpenSees Example 2.1
# OpenSees Primer
#
# Units: kips, in, sec
# STEEL
# Reinforcing steel
set fy 60.0; # Yield stress
9
set E 30000.0; # Young's modulus
# tag fy E0 b
uniaxialMaterial Steel01 3 $fy $E 0.01
section Fiber 1 {
10
set epsy [expr $fy/$E] ;# steel yield strain
set Ky [expr $epsy/(0.7*$d)]
The Tcl procedure to perform the moment-curvature analysis follows. In this procedure,
the nodes are dened to be at the same geometric location and the ZeroLengthSection
element is used. A single load step is performed for the axial load, then the integrator
is changed to DisplacementControl to impose nodal displacements, which map directly to
section deformations. A reference moment of 1.0 is dened in a Linear time series. For
this reference moment, the DisplacementControl integrator will determine the load factor
needed to apply the imposed displacement. A node recorder is dened to track the moment-
curvature results. The load factor is the moment, and the nodal rotation is in fact the
curvature of the element with zero thickness.
# Arguments
# secTag -- tag identifying section to be analyzed
# axialLoad -- axial load applied to section (negative is compression)
# maxK -- maximum curvature reached during analysis
# numIncr -- number of increments used to reach maxK (default 100)
#
# Sets up a recorder which writes moment-curvature results to file
# section$secTag.out ... the moment is in column 1, and curvature in column 2
# Define element
# tag ndI ndJ secTag
element zeroLengthSection 1 1 2 $secTag
11
# Create recorder
recorder Node section$secTag.out disp -time -node 2 -dof 3
12
Results
Estimated yield curvature: 0.000126984126984
The le section1.out contains for each committed state a line with the load factor and
the rotation at node 3. This can be used to plot the moment-curvature relationship as shown
in gure 5.
5000
4500
4000
3500
3000
Moment (in*kip)
2500
2000
1500
1000
500
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Curvature (1/in) −3
x 10
13
3 EXAMPLE 3 - Portal Frame Examples
This next set of examples covers the nonlinear analysis of a reinforced concrete frame. The
nonlinear beam column element with a ber discretization of the cross section is used in
the model. In addition, Tcl language features such as variable and command substitution,
expression evaluation, the if-then-else control structure, and procedures are demonstrated in
several elaborations of the example.
Model
A nonlinear model of the portal frame shown in gure 6 is created. The model consists
of four nodes, two nonlinear beam-column elements, 1 and 2, to model the columns and an
elastic beam element, 3, to model the beam. For the column elements a section, identical to
the section used in Example 2, is created using steel and concrete bers.
180kip 180kip
(3)
3 4 24"
1.5"
A y
12’ (1) (2) 15"
Y
z
1 2 A Section
X
30’
# ------------------------------
# Start of model generation
# ------------------------------
# Create nodes
# ------------
# Create nodes
# tag X Y
node 1 0.0 0.0
node 2 $width 0.0
node 3 0.0 $height
node 4 $width $height
15
# CONCRETE tag f'c ec0 f'cu ecu
# Core concrete (confined)
uniaxialMaterial Concrete01 1 -6.0 -0.004 -5.0 -0.014
# STEEL
# Reinforcing steel
set fy 60.0; # Yield stress
set E 30000.0; # Young's modulus
# tag fy E0 b
uniaxialMaterial Steel01 3 $fy $E 0.01
section Fiber 1 {
16
layer straight 3 2 $As 0.0 [expr $z1-$cover]
0.0 [expr $cover-$z1]
layer straight 3 3 $As [expr $cover-$y1] [expr $z1-$cover]
[expr $cover-$y1] [expr $cover-$z1]
17
# ------------------------------
# End of model generation
# ------------------------------
# ------------------------------
# Start of analysis generation
# ------------------------------
# Create the convergence test, the norm of the residual with a tolerance of
# 1e-12 and a max number of iterations of 10
test NormDispIncr 1.0e-12 10 3
# Create the integration scheme, the LoadControl scheme using steps of 0.1
integrator LoadControl 0.1 1 0.1 0.1
# ------------------------------
# End of analysis generation
# ------------------------------
# ------------------------------
# Finally perform the analysis
# ------------------------------
# Perform the gravity load analysis, requires 10 steps to reach the load level
analyze 10
18
# Print out the state of element 1
print element 1
Results
Node: 3
Coordinates : 0 144
commitDisps: -4.10875e-18 -0.0183736 4.97076e-20
unbalanced Load: 0 -180 0
Node: 4
Coordinates : 360 144
commitDisps: -4.10842e-18 -0.0183736 4.92006e-20
unbalanced Load: 0 -180 0
For the two nodes, displacements and loads are given. For the nonlinear beam-column
element, the element end forces in the local system are provided along with the resisting
forces in the global coordinate system.
19
3.2 Example 3.2
In this example the nonlinear reinforced concrete portal frame which has undergone the
gravity load analysis of Example 3.1 is now subjected to a pushover analysis.
Files Required
1. Example3.2.tcl
2. Example3.1.tcl
Model
After performing the gravity load analysis on the model, the time in the domain is reset
to 0.0 and the current value of all loads acting are held constant. A new load pattern with a
linear time series and horizontal loads acting at nodes 3 and 4 is then added to the model.
Analysis
The static analysis used to perform the gravity load analysis is modied to take a new
DisplacementControl integrator. At each new step in the analysis the integrator will deter-
mine the load increment necessary to increment the horizontal displacement at node 3 by
0.1 in. 60 analysis steps are performed in this new analysis.
Output Specication
For this analysis the nodal displacements at nodes 3 and 4 will be stored in the le
nodePushover.out for post-processing. In addition, the end forces in the local coordinate
system for elements 1 and 2 will be stored in the le elePushover.out. At the end of the
analysis, the state of node 3 is printed to the screen.
OpenSees Script
# OpenSees Example 3.2
# OpenSees Primer
#
# Units: kips, in, sec
# ----------------------------------------------------
# Start of Model Generation & Initial Gravity Analysis
# ----------------------------------------------------
# Set the gravity loads to be constant & reset the time in the domain
loadConst -time 0.0
20
# ----------------------------------------------------
# End of Model Generation & Initial Gravity Analysis
# ----------------------------------------------------
# ----------------------------------------------------
# Start of additional modeling for lateral loads
# ----------------------------------------------------
# ----------------------------------------------------
# End of additional modeling for lateral loads
# ----------------------------------------------------
# ----------------------------------------------------
# Start of modifications to analysis for push over
# ----------------------------------------------------
# ----------------------------------------------------
# End of modifications to analysis for push over
# ----------------------------------------------------
# ------------------------------
# Start of recorder generation
21
# ------------------------------
# --------------------------------
# End of recorder generation
# ---------------------------------
# ------------------------------
# Finally perform the analysis
# ------------------------------
22
Results
Gravity load analysis completed
Setting time in domain to be : 0.0
In addition to what is displayed on the screen, the le node32.out and ele32.out have
been created by the script. Each line of node32.out contains the time, DX, DY and RZ for
node 3 and DX, DY and RZ for node 4 at the end of an iteration. Each line of eleForce.out
contains the time, and the element end forces in the local coordinate system. A plot of the
load-displacement relationship at node 3 is shown in gure 7.
160
140
120
Total Lateral Load (kip)
100
80
60
40
20
0 1 2 3 4 5 6
Lateral Displacement (in)
23
3.3 Example 3.3
In this example the reinforced concrete portal frame which has undergone the gravity load
analysis of Example 3.1 is now subjected to a uniform earthquake excitation.
Files Required
1. Example3.3.tcl
2. Example3.1.tcl
3. ReadSMDFile.tcl
Model
After performing the gravity load analysis, the time in the domain is reset to 0.0 and the
current value of all active loads is set to constant. Mass terms are added to nodes 3 and 4.
A new uniform excitation load pattern is created. The excitation acts in the horizontal di-
rection and reads the acceleration record and time interval from the le ARL360.g3. The le
ARL360.g3 is created from the PEER Strong Motion Database (http://peer.berkeley.edu/smcat/)
record ARL360.at2 using the Tcl procedure ReadSMDFile contained in the le ReadSMD-
File.tcl.
Analysis
The static analysis object and its components are rst deleted so that a new transient
analysis object can be created.
A new solution Algorithm of type Newton is then created. The solution algorithm uses a
ConvergenceTest which tests convergence on the norm of the displacement increment vector.
The integrator for this analysis will be of type Newmark with a
of 0.25 and a of 0.5.
The integrator will add some stiness proportional damping to the system, the damping
term will be based on the last committed stifness of the elements, i.e. C = acKcommit
with ac = 0:000625. The equations are formed using a banded storage scheme, so the
System is BandGeneral. The equations are numbered using an RCM (reverse Cuthill-McKee)
numberer. The constraints are enforced with a Plain constraint handler.
Once all the components of an analysis are dened, the Analysis object itself is created.
For this problem a Transient Analysis object is used. 2000 time steps are performed with a
time step of 0.01.
In addition to the transient analysis, two eigenvalue analysis are performed on the model.
The rst is performed after the gravity analysis and the second after the transient analysis.
Output Specication
For this analysis the nodal displacenments at Nodes 3 and 4 will be stored in the le
nodeTransient.out for post-processing. In addition the section forces and deformations for
the section at the base of column 1 will also be stored in two seperate les. The results of
the eigenvalue analysis will be displayed on the screen.
OpenSees Script
24
# OpenSees Example 3.3
# OpenSees Primer
#
# Units: kips, in, sec
# ----------------------------------------------------
# Start of Model Generation & Initial Gravity Analysis
# ----------------------------------------------------
# Set the gravity loads to be constant & reset the time in the domain
loadConst -time 0.0
# ----------------------------------------------------
# End of Model Generation & Initial Gravity Analysis
# ----------------------------------------------------
# ----------------------------------------------------
# Start of additional modeling for dynamic loads
# ----------------------------------------------------
# tag MX MY RZ
mass 3 $m $m 0
mass 4 $m $m 0
# Perform the conversion from SMD record to OpenSees record and obtain dt
# inFile outFile dt
ReadSMDFile ARL360.at2 $outFile dt
25
# tag dir
pattern UniformExcitation 2 1 -accel $accelSeries
# ----------------------------------------------------
# End of additional modeling for dynamic loads
# ----------------------------------------------------
# ---------------------------------------------------------
# Start of modifications to analysis for transient analysis
# ---------------------------------------------------------
# Create the convergence test, the norm of the residual with a tolerance of
# 1e-12 and a max number of iterations of 10
test NormDispIncr 1.0e-12 10
# Create the integration scheme, Newmark with gamma = 0.5 and beta = 0.25
integrator Newmark 0.5 0.25 0.0 0.0 0.0 0.000625
# ---------------------------------------------------------
# End of modifications to analysis for transient analysis
# ---------------------------------------------------------
# ------------------------------
# Start of recorder generation
# ------------------------------
26
# Create recorders to monitor section forces and deformations
# at the base of the left column
recorder Element 1 -time -file ele1secForce.out section 1 force
recorder Element 1 -time -file ele1secDef.out section 1 deformation
# --------------------------------
# End of recorder generation
# ---------------------------------
# ------------------------------
# Finally perform the analysis
# ------------------------------
27
Results
Gravity load analysis completed
Setting time in domain to be : 0.0
Eigenvalues: 269.542 17507.1
Node: 3
Coordinates : 0 144
commitDisps: -0.105551 -0.0217913 0.000601786
Velocities : -1.54243 0.0252537 0.00986257
commitAccels: 5.0767 0.249952 1.47823
unbalanced Load: -3.9475 -180 0
Mass :
0.465839 0 0
0 0.465839 0
0 0 0
Eigenvectors:
-1.03574 -0.954357
0.0131099 0.283352
0.00666553 0.00463143
The two eigenvalues for the eigenvalue analysis are printed to the screen. The state of
node 3 at the end of the analysis is also printed. The information contains the last committed
displacements, velocities and accelerations at the node, the unbalanced nodal forces and the
nodal masses. In addition, the eigenvector components of the eigenvector pertaining to the
node 3 is also displayed.
In addition to the contents displayed on the screen, three les have been created. Each
line of nodeTransient.out contains the domain time, and DX, DY and RZ for node 3. Plotting
the rst and second columns of this le the lateral displacement versus time for node 3 can
be obtained as shown in gure 8. Each line of the les ele1secForce.out and ele1secDef.out
contain the domain time and the forces and deformations for section 1 (the base section) of
element 1. These can be used to generate the moment-curvature time history of the base
section of column 1 as shown in gure 9.
28
2
1.5
0.5
−0.5
−1
−1.5
−2
0 2 4 6 8 10 12 14 16 18 20
Time (sec)
4000
2000
Moment (in*kip)
−2000
−4000
−6000
−1.5 −1 −0.5 0 0.5 1 1.5 2
Curvature (1/in) −3
x 10
29
4 EXAMPLE 4 - Multibay Two Story Frame Example
In this next example the use of variable substitution and the Tcl loop control structure for
building models is demonstrated.
Model
A model of the frame shown in gure 10 is created. The number of objects in the model
is dependent on the parameter numBay. The ( numBay +1) 3) nodes are created, one
column line at a time, with the node at the base of the columns xed in all directions. Three
materials are constructed, one for the concrete core, one for the concrete cover and one for
the reinforcement steel. Three ber discretized sections are then built, one for the exterior
columns, one for the interior columns and one for the girders. Each of the members in the
frame is modelled using nonlinear beam-column elements with 4 (nP) integration points and
a linear geometric transformation object.
P/2 P P P/2
H 3 3
A
P 12’
2P 2P
P
H/2 2
15’
A B
# ------------------------------
# Start of model generation
# ------------------------------
# Create nodes
# ------------
31
set bayWidth 288
set nodeID 1
# Define nodes
for {set i 0} {$i <= $numBay} {incr i 1} {
set xDim [expr $i * $bayWidth]
# tag X Y
node $nodeID $xDim 0
node [expr $nodeID+1] $xDim 180
node [expr $nodeID+2] $xDim 324
incr nodeID 3
}
# CONCRETE
# Cover concrete
# tag -f'c -epsco -f'cu -epscu
uniaxialMaterial Concrete01 1 -4.00 -0.002 0.0 -0.006
# Core concrete
uniaxialMaterial Concrete01 2 -5.20 -0.005 -4.70 -0.02
# STEEL
# Reinforcing steel
# tag fy E0 b
uniaxialMaterial Steel01 3 60 30000 0.02
32
patch quadr 1 1 2 -13.5 10 -13.5 -10 -11.5 -10 -11.5 10
patch quadr 1 1 2 11.5 10 11.5 -10 13.5 -10 13.5 10
# Geometric transformation
geomTransf Linear 1
set beamID 1
# Define elements
for {set i 0} {$i <= $numBay} {incr i 1} {
# set some parameters
set iNode [expr $i*3 + 1]
set jNode [expr $i*3 + 2]
33
element nonlinearBeamColumn $beamID $iNode $jNode $nP 2 1
} elseif {$i == $numBay} {
element nonlinearBeamColumn $beamID $iNode $jNode $nP 2 1
} else {
element nonlinearBeamColumn $beamID $iNode $jNode $nP 1 1
}
# Geometric transformation
geomTransf Linear 2
# Define elements
for {set j 1} {$j < 3} {incr j 1} {
# set some parameters
set iNode [expr $j + 1]
set jNode [expr $iNode + 3]
34
pattern Plain 1 Linear {
# Create nodal loads at nodes
for {set i 0} {$i <= $numBay} {incr i 1} {
if {$i == 0} {
load $node1 0.0 $P 0.0
load $node2 0.0 [expr $P/2.0] 0.0
} elseif {$i == $numBay} {
load $node1 0.0 $P 0.0
load $node2 0.0 [expr $P/2.0] 0.0
} else {
load $node1 0.0 [expr 2.0*$P] 0.0
load $node2 0.0 $P 0.0
}
}
}
# ------------------------------
# End of model generation
# ------------------------------
# ------------------------------------------------
# Start of analysis generation for gravity analysis
# -------------------------------------------------
# Create the convergence test, the norm of the residual with a tolerance of
# 1e-12 and a max number of iterations of 10
test NormDispIncr 1.0e-8 10 0
# Create the integration scheme, the LoadControl scheme using steps of 0.1
integrator LoadControl 0.1 1 0.1 0.1
35
constraints Plain
# ------------------------------------------------
# End of analysis generation for gravity analysis
# -------------------------------------------------
# ------------------------------
# Perform gravity load analysis
# ------------------------------
# perform the gravity load analysis, requires 10 steps to reach the load level
analyze 10
# ------------------------------
# Add lateral loads
# ------------------------------
# ------------------------------
# Start of recorder generation
# ------------------------------
36
# comment out one of lines
set displayMode "displayON"
#set displayMode "displayOFF"
if {$displayMode == "displayON"} {
# a window to plot the nodal displacements versus load for node 3
recorder plot Node41.out Node3Xdisp 10 340 300 300 -columns 3 1
}
# ------------------------------
# End of recorder generation
# ------------------------------
# ------------------------------
# Start of lateral load analysis
# ------------------------------
Results
The output consists of the le Node41.out containing a line for each step of the lateral
load analysis. Each line contains the load factor, the lateral displacements at nodes 2 and
3. A plot of the load-displacement curve for the frame is given in gure 11.
37
Load−Displacement of Two Story Frame
500
450
400
350
Total Lateral Load (kip)
300
250
200
150
100
50
0
0 0.5 1 1.5 2 2.5 3 3.5 4
Displacement (in)
38
5 EXAMPLE 5 - Three-Dimensional Rigid Frame
5.1 Example 5.1
This example is of a three-dimensional reinforced concrete rigid frame, as shown in gure 12,
subjected to bi-directional earthquake ground motion.
Files Required
1. Example5.1.tcl
2. RCsection.tcl
3. tabasFN.txt
4. tabasFP.txt
Model
A model of the rigid frame shown in gure 12 is created. The model consists of three
stories and one bay in each direction. Rigid diaphragm multi-point constraints are used to
enforce the rigid in-plane stiness assumption for the
oors. Gravity loads are applied to the
structure and the 1978 Tabas acceleration records are the uniform earthquake excitations.
Nonlinear beam column elements are used for all members in the structure. The beam
sections are elastic while the column sections are discretized by bers of concrete and steel.
Elastic beam column elements may have been used for the beam members; but, it is useful to
see that section models other than ber sections may be used in the nonlinear beam column
element.
Analysis
A solution Algorithm of type Newton is used for the nonlinear problem. The solution
algorithm uses a ConvergenceTest which tests convergence on the norm of the energy incre-
ment vector. The integrator for this analysis will be of type Newmark with a
of 0.25 and
a of 0.5. Due to the presence of the multi-point constraints, a Transformation constraint
handler is used. The equations are formed using a sparse storage scheme which will perform
pivoting during the equation solving, so the System is SparseGeneral. As SparseGeneral will
perform it's own internal numbering of the equations, a Plain numberer is used which simply
assigns equation numbers to the degrees-of-freedom.
Once all the components of an analysis are dened, the Analysis object itself is created.
For this problem a Transient Analysis object is used. 2000 steps are performed with a time
step of 0.01.
Output Specication
The nodal displacements at nodes 9, 14, and 19 (the master nodes for the rigid di-
aphragms) will be stored in the le node51.out for post-processing.
OpenSees Script
39
Z
(15) (16)
(18) (19)
(17)
12’
(10) (11)
(13) (14)
(12)
12’
(5) (6)
(8) (9)
(7)
Y
12’
(1) (2)
(4) X
(3)
20’
20’
# ----------------------------
# Start of model generation
# ----------------------------
# Define geometry
# ---------------
# Create nodes
# tag X Y Z
node 1 [expr -$bx/2] [expr $by/2] 0
40
node 2 [expr $bx/2] [expr $by/2] 0
node 3 [expr $bx/2] [expr -$by/2] 0
node 4 [expr -$bx/2] [expr -$by/2] 0
41
# Core concrete (confined)
# tag f'c epsc0 f'cu epscu
uniaxialMaterial Concrete01 1 -5.0 -0.005 -3.5 -0.02
# STEEL
# Reinforcing steel
# tag fy E b
uniaxialMaterial Steel01 3 60 30000 0.02
# Column width
set d 18.0
42
geomTransf Linear 1 1 0 0
}
43
# tag ndI ndJ nPts secID transf
element nonlinearBeamColumn 13 5 6 $np $beamSec 2
element nonlinearBeamColumn 14 6 7 $np $beamSec 2
element nonlinearBeamColumn 15 7 8 $np $beamSec 2
element nonlinearBeamColumn 16 8 5 $np $beamSec 2
44
# Define the excitation using the Tabas ground motion records
# tag dir accel series args
pattern UniformExcitation 2 1 -accel $tabasFN
pattern UniformExcitation 3 2 -accel $tabasFP
# -----------------------
# End of model generation
# -----------------------
# ----------------------------
# Start of analysis generation
# ----------------------------
# --------------------------
# End of analysis generation
# --------------------------
# ----------------------------
# Start of recorder generation
# ----------------------------
45
# Record DOF 1 and 2 displacements at nodes 9, 14, and 19
recorder Node node51.out disp -time -node 9 14 19 -dof 1 2
# --------------------------
# End of recorder generation
# --------------------------
# --------------------
# Perform the analysis
# --------------------
Results
The results consist of the le node51.out, which contains a line for every time step. Each
line contains the time and the horizontal and vertical displacements at the diaphragm master
nodes (9, 14 and 19) i.e. time Dx9 Dy9 Dx14 Dy14 Dx19 Dy19. The horizontal displacement
time history of the rst
oor diaphragm node 9 is shown in gure 13. Notice the increase in
period after about 10 seconds of earthquake excitation, when the large pulse in the ground
motion propogates through the structure. The displacement prole over the three stories
shows a soft-story mechanism has formed in the rst
oor columns. The numerical solution
converges even though the drift is 20%. The inclusion of P-Delta eects shows structural
collapse under such large drifts.
30
20
10
0
Displacement (in)
−10
−20
−30
−40
−50 Linear
P−∆
−60
−70
0 2 4 6 8 10 12 14 16 18 20
Time (sec)
46