OpenSees Cloud
OpenSees AMI
Elastic Shear Beams in OpenSees
Original Post - 03 Jul 2022 - Michael H. Scott
Visit Structural Analysis Is Simple on Substack.
Shear deformations in slender beams are generally not significant compared to flexural deformations. But shear deformation are important in deep beams and short walls, and flexure-shear interaction may be important in the material nonlinear range of response, regardless of aspect ratio.
Enough of the perfunctory, non-committal language–you can find that in the latest issue of <_insert journal="" name_="">.
Instead, this post will show how to model linear-elastic shear beam response in OpenSees. The simplicity of this post rivals that of a previous post. In a future post, I will discuss material nonlinear flexure-shear response.
OpenSees has three options for shear deformable elastic beams: an elastic formulation and two material nonlinear formulations (displacement-based and force-based). These three options will be shown for a simple W21x62 steel beam.
The exact solution for the rotation at the loaded end is \(\theta=ML/(3EI)+M/(LGA_v)\), where Av is the section shear area. For the given numerical values, the end rotation is 0.0046229 rad with shear deformation and 0.0037335 rad without.
First, similar to elasticBeamColumn
, where you input material and
section properties as scalars, you can use the elasticTimoshenkoBeam
element. This element takes the section shear area as input in addition
to axial and flexural properties (and torsional properties in 3D). As
far as I can tell, this is the closest you will get to the beam element
available in SAP2000.
# Steel material
E = 29000*ksi
nu = 0.3
G = 0.5*E/(1+nu)
# W21x62
A = 18.3*inch**2
I = 1330*inch**4
d = 21.0*inch
tw = 0.400*inch
Av = d*tw
ops.geomTransf('Linear',1)
ops.element('elasticTimoshenkoBeam',1,1,2,E,G,A,I,Av,1)
An interesting feature of the OpenSees elasticTimoshenkoBeam
element is
that it can account for geometric nonlinearity (\(P-\delta\), or
“P-little-delta”) inside the basic system.
The next two options use elastic sections in material nonlinear element formulations. You can pass additional arguments to the standard flexure-only elastic section in order to include shear force-deformation.
# Steel material
E = 29000*ksi
nu = 0.3
G = 0.5*E/(1+nu)
# W21x62
A = 18.3*inch**2
I = 1330*inch**4
d = 21.0*inch
tw = 0.400*inch
Av = d*tw
alpha = Av/A # Or just specify alpha directly
secTag = 1
ops.section('Elastic',secTag,E,A,I,G,alpha)
Note that the input for section shear is based on a shear shape factor, \(\alpha\), where \(A_v=\alpha A\).
Despite what anyone may tell you, including shear force-deformation within force-based elements is nothing new. Using force-based elements is probably the most widely known approach to modeling shear in beam-columns with OpenSees. Simply define a beam integration built on shear sections, then pass the beam integration to the element.
ops.geomTransf('Linear',23)
Np = 3
ops.beamIntegration('Lobatto',5,secTag,Np)
ops.element('forceBeamColumn',1,1,2,23,5)
You can also use the same elastic shear sections in a
timoshenkoBeamColumn
element. The element formulation is the same as
dispBeamColumn
, but interpolates constant shear deformation along the
element length in addition to constant axial deformation and linear
curvature. The input format for timoshenkoBeamColumn
is also identical
to that for dispBeamColumn
and forceBeamColumn
. Note that if you use a
section with shear force-deformation in dispBeamColumn
, there will be no
error and shear effects will be ignored.
ops.geomTransf('Linear',18)
Np = 2
ops.beamIntegration('Legendre',31,secTag,Np)
# Include shear
ops.element('timoshenkoBeamColumn',1,1,2,18,31)
# Shear will be ignored
#ops.element('dispBeamColumn',1,1,2,18,31)
According to the logs, I added the TimoshenkoBeamColumn2d class to GitHub in April 2019. However, some files on a server in Eastchester tell me I wrote this element some time before 2007. Why did it take me so long to get this element into source control? Most likely, I never used the element. Put your stuff in GitHub ASAP before you forget.
For now, there is only a 2D version of the timoshenkoBeamColumn
element.
When the 3D version is implemented, this formulation should replace the
dispBeamColumn
element so that the displacement-based and force-based
formulations are on equal footing when it comes to shear.
Building on the model described in a
previous post,
verify you get the
expected end rotation when using the elasticTimoshenkoBeam
element and
forceBeamColumn
and timoshenkoBeamColumn
elements with elastic shear
sections. Also verify you get the expected flexure-only end rotation
when passing the elastic shear section to a dispBeamColumn
element.