OpenSees Cloud

OpenSees AMI

Force-Based Beam-Column Integration Options

Original Post - 02 Nov 2020 - Michael H. Scott

Visit Structural Analysis Is Simple on Substack.


I like numerical integration because it allows you to do a lot of interesting things with force-based frame elements–so much more than simulating the response of reinforced concrete moment frames.

Numerous numerical integration options are available in OpenSees, so in 2011 I wrote and uploaded to the OpenSees wiki a PDF summarizing those options. According to Google Scholar, this document has since gone on to accrue more citations than some of my peer-reviewed work.

Google Scholar listing for force-based element integration options

In the Tcl days, I made the beam integration arguments as string input to the forceBeamColumn command. I’m not sure why I did this, probably equal parts backward compatibility and laziness. This string-based approach to beam integration objects would not fly in Python, so we created the BeamIntegration class complete with tags just like materials.

Pretty much everything translates from Tcl to Python. For example, using five point Lobatto with section tag 3:

# Tcl
set integration "Lobatto 3 5"
element forceBeamColumn 1 1 2 1 $integration
# Python
ops.beamIntegration('Lobatto',123,3,5)
ops.element('forceBeamColumn',1,1,2,1,123)

For the beam integration objects that use lists, you will have to dereference the lists in Python. For example, with fixed location (Vandermonde) integration:

# Tcl
set locations “0.0 0.2 0.5 0.8 1.0”
set secTags “1 2 2 2 1”
set N [llength $secTags]
set integration “FixedLocation $N $secTags $locations”
element forceBeamColumn 1 1 2 1 $integration
# Python
locations = [0.0,0.2,0.5,0.8,1.0]
secTags = [1,2,2,2,1]
N = len(secTags)
ops.beamIntegration('FixedLocation',123,N,*secTags,*locations)
ops.element('forceBeamColumn',1,1,2,1,123)

You can also use beam integration objects on other frame elements in OpenSees, including mixedBeamColumn, gradientInelasticBeamColumn, and, although it doesn’t buy you much, dispBeamColumn.