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 , where 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 (, 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, , where .

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.

## 2 thoughts on “Elastic Shear Beams in OpenSees”