That the force-based frame element and fiber sections are in an open relationship should come as no surprise. The displacement-based and mixed frame elements can use fiber sections and all three element formulations can use stress resultant sections.

While this post used a coupled stress resultant plasticity model, you can also use the section aggregator for uncoupled stress resultants defined by uniaxial material models.

For example, suppose you would like to use a bilinear relationship for the section moment-curvature response of a simple beam under anti-symmetric bending.

Pick your favorite bilinear uniaxial material, then aggregate that material with an axial force-deformation relationship. Note that depending on which uniaxial material you use, you may have to calibrate the post-yield hardening ratio to a hardening modulus, as shown in the code below for *HardeningMaterial*. Because it is bilinear, you can also use *Steel01*. The underlying material does not have to be steel–*Steel01* is just a function.

```
E = 6000
I = 800
A = 30
My = 600
alpha = 0.1 # hardening ratio
EI = E*I # Or specify EI directly
Hkin = alpha*EI/(1-alpha)
ops.uniaxialMaterial('Hardening',1,EI,My,0.0,Hkin)
# or
# ops.uniaxialMaterial('Steel01',1,My,EI,alpha)
ops.uniaxialMaterial('Elastic',2,E*A)
ops.section('Aggregator',1,1,'Mz',2,'P')
```

The aggregated section is then assigned to each element integration point.

After yielding, plasticity will spread from the ends of the beam. For a bilinear moment-curvature relationship, it is straightforward to use the principle of virtual forces–that thing you did as an undergrad with unit loads, virtual moment diagrams, real curvature diagrams, and trapezoid-trapezoid–to obtain a closed-form solution for the element post-yield moment-rotation response.

A comparison of the force-based element response (using six Gauss-Lobatto integration points along the beam span) with the exact solution is shown below.

As you use more integration points, the computed response for the force-based element will approach the exact solution. You can do the same comparison with the displacement-based and mixed elements. The displacement-based element requires mesh refinement to converge to the exact solution and, for this example, the mixed element will give the same response as the force-based element.

I recommend you do this verification example yourself in order to get your feet wet with nonlinear frame formulations. After you verify the results with direct moment-curvature, then move on to fiber sections.