OpenSees Cloud

OpenSees AMI

Force-Based Element Moment Release

Original Post - 16 Oct 2022 - Michael H. Scott

Visit Structural Analysis Is Simple on Substack.


The common approach to adding a moment release at the end of a force-based frame element is to define an extra node then use the equalDOF command to constrain all but the released rotational DOFs. Although this approach is cumbersome, it is fine as long as the element lies within a global plane (X-Y, Y-Z, or X-Z) because equalDOF operates on the global DOFs of nodes not local DOFs of elements.

A less common and more cumbersome approach is to define an extra node at the release end of the element and connect the two end nodes by a zero length element. Then, for the zero length element, assign low stiffness for the released rotational DOF and high stiffnesses for the remaining DOFs. You can make the zero length element have the same local axes as the frame element so you are not constrained to a global coordinate plane.

A previous post showed a third approach where you define a section of low flexural stiffness at one end of a force-based element with plastic hinge integration. This approach is essentially the same as the aforementioned zero length element trick, but no extra nodes, no extra elements, no extra constraints.

The approach in the previous post assumed plastic hinge integration where you can control the integration weights at the element ends. But, we know distributed plasticity and plastic hinge integration are functionally equivalent.

So, what happens when you use distributed plasticity with Gauss-Lobatto integration and make the section at one end of the element have low flexural stiffness, as shown below for N=5 integration points? Can you recover 3EI/L and 0 for the end moments when imposing a unit rotation at one end?

Fixed-fixed beam with imposed rotation at one end and low _EI_ at other end

The beam integration definition is straightforward using the non-prismatic sections input.

Np = 5 # Or whatever from 3 to 10

ops.section('Elastic',1,E,A,I)
ops.section('Elastic',2,E,A,alpha*I)

sections = [1]*Np
sections[-1] = 2
ops.beamIntegration('Lobatto',1,Np,*sections)

As you increase the number of Lobatto points for the element, the weight at the element end reduces. For three Lobatto points, the end weight is L/6 and for ten Lobatto points, the end weight is L/90.

The fixed-end moments resulting from a unit rotation at end I are shown below for decreasing values for \(\alpha\). The x-axis is the end integration weight, starting at L/90 (N=10) and increasing for N<10.

End moment as function of flexural stiffness

When \(\alpha=1\), the familiar 4EI/L and 2EI/L terms are retained. When \(\alpha=0.001\), the moment release is enforced regardless of the number of integration points. Success!

I have not tried this approach with sections comprised of Concrete23 and Steel08 fibers. Other than potential convergence issues, there’s no reason the approach will not work with inelastic response. But can’t you say that about everything?