Plastic rotations are a common damage measure for frame members and frequently define limit states of structural performance under seismic loading. The calculation of plastic rotations for frame elements in OpenSees is based on a decomposition of deformations in to elastic and plastic components.
The elastic deformations are obtained by elastic unloading of the basic forces, as shown below. Then the plastic deformations can be expressed entirely in terms of the current deformations and forces of an element, i.e., , where is the elastic flexibility of the element. You can find more details in this paper.
In OpenSees, you can obtain the plastic rotation using the
'plasticDeformation' argument to an element recorder or the
ops.recorder('Element','-file','plastic.out', \ '-ele',1,'plasticDeformation') # or ops.eleResponse(1,'plasticDeformation')
Note that the recorded response gives three values, one for each basic DOF: axial, rotation at I, and rotation at J. For 3D frame elements, there are six plastic deformations recorded: axial, z-rotation at I, z-rotation at J, y-rotation at I, y-rotation at J, and torsion.
Below is a W14x90 steel column loaded in double curvature about its strong axis. Fiber discretizations define the cross-section response for a single force-based element with four Lobatto integration points.
Using load-control, here are the load-rotation and load-plastic rotation relationships from the analysis. Although not shown here, the plastic deformation recorder works for cyclic loading as well.
With reinforced concrete, gravity loads reduce the initial stiffness. Because the plastic rotation calculation is done at the element level, the elastic unloading is based on whatever the material reports as its initial stiffness, i.e., at zero strain. This difference in initial stiffness will lead to early onset and slight over-estimation of plastic rotations. But it’s reinforced concrete–you likely have bigger problems to worry about.