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
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
timoshenkoBeamColumn elements with elastic shear sections. Also verify you get the expected flexure-only end rotation when passing the elastic shear section to a