Previous Topic

Next Topic

Book Contents

Example 3.1

This example is of a reinforced concrete portal frame, as shown in figure~\ref{example3}, subject to gravity loads.

Files Required

Model

A nonlinear model of the portal frame shown in the figure 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 fibers.

Example 3.1 Portal Frame

A single load pattern with a linear time series, two vertical nodal loads acting at nodes 3 and 4, and single point constraints to constrain nodes 1 and 2 are created.

Analysis

The model contains material non-linearities, so a solution Algorithm of type Newton is used. The solution algorithm uses a ConvergenceTest which tests convergence of the equilibrium solution with the norm of the displacement increment vector. For this nonlinear problem, the gravity loads are applied incrementally until the full load is applied. To achieve this, a LoadControl integrator which advances the solution with an increment of 0.1 at each load step is used. 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 defined, the Analysis object itself is created. For this problem a Static Analysis object is used. To achieve the full gravity load, 10 load steps are performed.

Output Specification

At end of analysis, the state at nodes 3 and 4 is output. The state of element 1 is also output.

OpenSees Script

# OpenSees Example 3.1

# OpenSees Primer

#

# Units: kips, in, sec

# ------------------------------

# Start of model generation

# ------------------------------

# Create ModelBuilder (with two-dimensions and 3 DOF/node)

model basic -ndm 2 -ndf 3

# Create nodes

# ------------

# Set parameters for overall model geometry

set width 360

set height 144

# 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

# Fix supports at base of columns

# tag DX DY RZ

fix 1 1 1 1

fix 2 1 1 1

# Define materials for nonlinear columns

# ------------------------------------------

# CONCRETE tag f'c ec0 f'cu ecu

# Core concrete (confined)

uniaxialMaterial Concrete01 1 -6.0 -0.004 -5.0 -0.014

# Cover concrete (unconfined)

uniaxialMaterial Concrete01 2 -5.0 -0.002 0.0 -0.006

# 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

# Define cross-section for nonlinear columns

# ------------------------------------------

# set some paramaters

set colWidth 15

set colDepth 24

set cover 1.5

set As 0.60; # area of no. 7 bars

# some variables derived from the parameters

set y1 [expr $colDepth/2.0]

set z1 [expr $colWidth/2.0]

section Fiber 1 {

# Create the concrete core fibers

patch rect 1 10 1 [expr $cover-$y1] [expr $cover-$z1] [expr $y1-$cover] [expr $z1-$cover]

# Create the concrete cover fibers (top, bottom, left, right)

patch rect 2 10 1 [expr -$y1] [expr $z1-$cover] $y1 $z1

patch rect 2 10 1 [expr -$y1] [expr -$z1] $y1 [expr $cover-$z1]

patch rect 2 2 1 [expr -$y1] [expr $cover-$z1] [expr $cover-$y1] [expr $z1-$cover]

patch rect 2 2 1 [expr $y1-$cover] [expr $cover-$z1] $y1 [expr $z1-$cover]

# Create the reinforcing fibers (left, middle, right)

layer straight 3 3 $As [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr $cover-$z1]

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]

}

# Define column elements

# ----------------------

# Geometry of column elements

# tag

geomTransf Linear 1

# Number of integration points along length of element

set np 5

# Create the coulumns using Beam-column elements

# tag ndI ndJ nsecs secID transfTag

element nonlinearBeamColumn 1 1 3 $np 1 1

element nonlinearBeamColumn 2 2 4 $np 1 1

# Define beam elment

# -----------------------------

# Geometry of column elements

# tag

geomTransf Linear 2

# Create the beam element

# tag ndI ndJ A E Iz transfTag

element elasticBeamColumn 3 3 4 360 4030 8640 2

# Define gravity loads

# --------------------

# Set a parameter for the axial load

set P 180; # 10% of axial capacity of columns

# Create a Plain load pattern with a Linear TimeSeries

pattern Plain 1 "Linear" {

# Create nodal loads at nodes 3 & 4

# nd FX FY MZ

load 3 0.0 [expr -$P] 0.0

load 4 0.0 [expr -$P] 0.0

}

# ------------------------------

# End of model generation

# ------------------------------

# ------------------------------

# Start of analysis generation

# ------------------------------

# Create the system of equation, a sparse solver with partial pivoting

system BandGeneral

# Create the constraint handler, the transformation method

constraints Transformation

# Create the DOF numberer, the reverse Cuthill-McKee algorithm

numberer RCM

# 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 solution algorithm, a Newton-Raphson algorithm

algorithm Newton

# Create the integration scheme, the LoadControl scheme using steps of 0.1

integrator LoadControl 0.1

# Create the analysis object

analysis Static

# initialize in case we need to do an initial stiffness iteration

initialize

# ------------------------------

# End of analysis generation

# ------------------------------

# ------------------------------

# Start of recorder generation

# ------------------------------

# Create a recorder to monitor nodal displacements

recorder Node -file nodeGravity.out -time -node 3 4 -dof 1 2 3 disp

# --------------------------------

# End of recorder generation

# ---------------------------------

# ------------------------------

# Finally perform the analysis

# ------------------------------

# perform the gravity load analysis, requires 10 steps to reach the load level

analyze 10

# Print out the state of nodes 3 and 4

print node 3 4

# Print out the state of element 1

print ele 1 2

Results

Node: 3

Coordinates : 0 144

commitDisps: 1.7109e-18 -0.0183736 -2.81893e-20

unbalanced Load: 0 -180 0

ID : 3 4 5

Node: 4

Coordinates : 360 144

commitDisps: 1.71095e-18 -0.0183736 -2.79765e-20

unbalanced Load: 0 -180 0

ID : 0 1 2

Element: 1 Type: NLBeamColumn2d Connected Nodes: 1 3

Number of Sections: 5 Mass density: 0

End 1 Forces (P V M): 180 7.0121e-31 -8.88178e-16

End 2 Forces (P V M): -180 -7.0121e-31 8.88178e-16

Element: 2 Type: NLBeamColumn2d Connected Nodes: 2 4

Number of Sections: 5 Mass density: 0

End 1 Forces (P V M): 180 0 -8.88178e-16

End 2 Forces (P V M): -180 0 8.88178e-16

For the two nodes, displacements and loads are given. For the beam-column elements, the element end forces in the local system are provided.

The nodeGravity.out file contains ten lines, each line containing 7 entries. The first entry is time in the domain at end of the load step. The next 3 entries are the displacements at node 3, and the final 3 entries the displacements at node 4.

See Also

Portal Frame

Example 3.2

Example 3.3

PortalFrame.tcl