“What are the columns of output for a section force / section deformation element recorder?” is a frequently asked OpenSees question.
The correct answer is “It depends on the type of element and section model.”
But a much better answer is “Apply simple loads to a cantilever and figure it out.”
Consider the cantilever and loads shown below, along with the sign convention used by most OpenSees frame elements for positive internal section forces.
The model is statically determinate, so you know the distribution and magnitude of the axial force, shear force, and bending moment along the cantilever.
- Constant axial force, (negative due to compression)
- Constant shear force,
- Linear bending moment,
Below is OpenSees code for this cantilever (force-based element with elastic sections) with simple loading and a recorder for the section forces at the last Lobatto point (at the fixed end, of the cantilever). Shear stiffness is defined in the section so that the element includes shear in the section response.
import openseespy.opensees as ops E = 29000.0 v = 0.3 G = 0.5*E/(1+v) A = 20.0 Av = 15.0 I = 1400.0 L = 120.0 PX = 10.0 PY = 20.0 ops.model('basic','-ndm',2,'-ndf',3) ops.node(1,0,0) ops.node(2,L,0); ops.fix(2,1,1,1) ops.section('Elastic',1,E,A,I,G,Av/A) Np = 3 ops.beamIntegration('Lobatto',12,1,Np) ops.geomTransf('Linear',1) ops.element('forceBeamColumn',1,1,2,1,12) ops.recorder('Element','-file','sectionForces.out','-time','-ele',1,'section',Np,'force') ops.recorder('Element','-file','sectionDeforms.out','-time','-ele',1,'section',Np,'deformation') ops.timeSeries('Constant',1) ops.pattern('Plain',1,1) ops.load(1,PX,PY,0) ops.analysis('Static') ops.analyze(1) ops.wipe()
sectionForces.out file contains one line of output. The first column is the pseudo-time and the next three columns are the axial force, bending moment, and shear.
1 -10 2400 20
Remember that the axial force is negative because the cantilever is in compression.
The output in the
sectionDeforms.out file is not so obvious, especially if you didn’t look at the section force output first. But what you see is the pseudo-time followed by what you know from strength of materials: the section axial deformation, ; curvature, ; and shear deformation, .
1 -1.72414e-05 5.91133e-05 0.00011954
All of this works when using fiber sections–no need to jump through any hoops to get curvature by dividing the difference in top and bottom fiber strains by section height or other shenanigans. Remember, OpenSees is simple.
Note that the order of section force and deformation output may be different when using other section models, especially aggregated sections whose stress resultants can be defined in any order. I’ll leave the three-dimensional elements for you to figure out which outputs correspond to torsion and out of plane bending.