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?

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 . The x-axis is the end integration weight, starting at *L*/90 (*N*=10) and increasing for *N*<10.

When , the familiar *4EI/L* and *2EI/L* terms are retained. When , 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?