STAIRLab logo
  • Docs 
  • Examples 
  •  

Force vs. Displacement formulations

3 min read • 585 words
Frame  
Frame  

An investigation of various frame formulations

On this page
Model Generation   Boundary Conditions   Materials   Section   Elements   Analysis   Gravity   Cycling   Resources  
Python Tcl
  • column_cycles.py
  • column_cycles.tcl
  • SingleCycle.tcl
  • LibUnits.tcl

Investigate the two most commonly used OpenSees elements for modeling beam-column elements: the force  and cubic displacement  formulations.

Schematic of the Lehman column experiment

Although the parameters for defining these two elements are the same, a beam-column member needs to be modeled differently using these two elements to achieve a comparable level of accuracy. The intent of this example is to show how to properly model inelastic beam-columns with both force and displacement formulations.

Diameter 24 in.
Height 96 in.
Longitudinal 22 #5 Gr6022 ~\# 5 \mathrm{~Gr} 60
Reinforcement ρℓ=1.5%\rho_{\ell}=1.5 \%
fy=70 ksif_y=70 \mathrm{~ksi}
Transverse #2 @ 1.25 in\# 2 ~@~ 1.25 \mathrm{~in} .
Reinforcement (ρt=0.7%)\left(\rho_{\mathrm{t}}=0.7 \%\right)
fy=96.6 ksif_y=96.6 \mathrm{~ksi}
Concrete fc′=4.4 ksif'_c=4.4 \mathrm{~ksi}

Model Generation  

  • The column is modeled using either force-based or displacement-based elements.
  • The column height H is 96 inches
import xara

# Create a 2D model with 3 DOFs per node
model = xara.Model(ndm=2, ndf=3)

H = 96.0 * inch  # Column height

# Define nodes
model.node(1, (0.0, 0.0))
for i in range(ne):
    model.node(i + 2, (0.0, (i + 1) * H/ne))

Boundary Conditions  

Node 1 is fixed in both horizontal and vertical directions.

model.fix(1, (1, 1, 1))

Materials  

Longitudinal reinforcement  

  • Bar area barArea is 0.31 square inches (for bar #5).
  • Bar diameter db is 0.625 inches.
  • Yield strength fy of longitudinal bars is 70 ksi.
  • Modulus of elasticity Es of steel is 29,000 ksi.
  • Tangent at initial strain hardening (Esf) is calibrated from coupon tests.

Transverse reinforcement  

  • Spiral diameter dh is 0.25 inches.
  • Number of hoops NoHoops is 1.
  • Area of transverse reinforcement bar (Asp1) is 0.0491 square inches.
  • Centerline distance between spirals stran is 1.25 inches.
  • Yield strength of the hoop (fyh) is 96.6 ksi.

Unconfined concrete  

  • Compressive strength fc′f'_c (fc) is 4.4 ksi.
  • Strain corresponding to fc is eps0.
  • Ultimate strain for unconfined concrete is epss.
  • Elastic modulus Ec is calculated based on ACI 318.
fc = 4.4 * ksi  # Compressive strength of plain concrete
eps0 = 0.002    # Strain corresponding to fc'
epss = 0.005    # Ultimate strain for unconfined concrete
Ec = 57000.0 * sqrt(fc * 1000.0) / 1000.0

Confined concrete  

Compressive strength and strain are determined using Mander’s equations (Eq. 6 in Mander, 1988):

ecr=Ec(Ec−fcc/ϵcc) ecr = \frac{E_c}{(E_c - f_{cc} / \epsilon_{cc})}

Section  

  • The diameter D is 24 inches.
  • The clear cover of concrete clearCover is 0.75 inches.
D = 24.0 * inch  # Column diameter
clearCover = 0.75 * inch  # Clear cover of concrete

theta = 360.0 / numBars
model.section("fiberSec", secnTag, GJ=1e8)
# Core patch
model.patch("circ", coreTag, nfCoreT, nfCoreR, 0, 0, 0, ri, 0.0, 360.0, section=secnTag)
# Cover patch
model.patch("circ", coverTag, nfCoverT, nfCoverR, 0, 0, ri, ro, 0.0, 360.0, section=secnTag)
# Reinforcing bars
model.layer("circ", steelTag, numBars, barArea, 0, 0, rl, theta / 2.0, 360.0 - theta / 2.0, section=secnTag)

Elements  

Coordinate transformation is applied using the Corotational method.

# Define coordinate transformation
transfTag = 1
model.geomTransf("Corotational", transfTag)

for i in range(ne):
    if eleType == 1:
        model.element("forceBeamColumn", i + 1, (i+1, i+2), nIP, secTag, transfTag)
    elif eleType == 2:
        model.element("dispBeamColumn", i + 1, (i+1, i+2), nIP, secTag, transfTag)

Analysis  

Gravity  

Cycling  

# Define recorders for displacement and force
model.recorder("Node", "disp", "-time", file="out/Disp.out", node=ne+1, dof=1)
model.recorder("Node", "reaction", "-time", file="out/Force.out", node=1, dof=1)

Resources  

The slides from the original presentation can be downloaded from here and video of the seminar can be found here: http://www.youtube.com/watch?v=yk-1k2aF53E 

  • Supporting files to be stored in the same folder with the main file:
    • leh415.txt : experimental force-displacement response
 Flexible Rod Buckling Under Torque
Helical Forms 
On this page:
Model Generation   Boundary Conditions   Materials   Section   Elements   Analysis   Gravity   Cycling   Resources  
Force vs. Displacement formulations
Force vs. Displacement formulations
A gallery of technical examples currated by the STAIRLab at UC Berkeley.
Code licensed BSD, docs CC BY-NC 4.0
 
Links
Home 
About 
Docs 
Examples
Working with solids 
Nonlinear dynamics 
Basic Statics 
Community
Issues   
Discussions   
Contribute 
STAIRLab
Code copied to clipboard