Something, Something, Something Fiber

Two recent inquires asked why model response using frame elements with elastic fiber sections, i.e., sections with fibers whose stress-strain response is \sigma=E\varepsilon, differs from the response with elastic elements, i.e., defined by E, A, Iz, and Iy either with elasticBeamColumn elements or nonlinear elements with elastic sections.

I’ve touched on this subject a few times–first in this post, most recently in this post, and probably a few times in between–but I’ve never addressed the issue head on.

So, for linear-elastic stress-strain response, how well do rectangular and circular cross-sections with midpoint fiber integration match the exact solutions for section stiffness EA, EIz, and EIy? Shown below are sections with 16 fibers: 4×4 grid for rectangular and 4 rings (radial) and 4 wedges (circumferential) for circular.

As we increase the number of fibers, the computed section stiffnesses converge to the exact values for the rectangular section.

And likewise for the circular section.

For both sections, the axial stiffness is fine, but the flexural stiffnesses are not. The issue is that the section needs to integrate y2 and z2 to get the exact Iz and Iy, respectively. Midpoint integration cannot integrate quadratic polynomials exactly, so there will always be an integration error for the flexural stiffness.

But to get within 5% of the exact flexural stiffness for rectangular and circular sections, grids on the order of 8×8 are sufficient. For 2D sections, this translates into only 8 layers.


As an aside, see what happens when you use more than 10,000 fibers in a section–something you should never do in the first place. I would show what happens but then someone might think it’s a valid result, so I’ll refrain.

Those of you savvy with C++ can see what will happen when numFibers exceeds 10,000 in FiberSection3d.cpp. It’s not good.

We should spit out some stern warnings when numFibers exceeds 10,000. Maybe this condition should trigger a justifiable call to the exit() function–maybe it also explains why you get crap results when using more than 10,000 fibers per section.


Back to the main point. In the elastic range of response, the section stiffness will always be less than the “exact” stiffness, making the response of frame models with elastic fiber sections a little more flexible than models with elastic frame elements. As a result:

  • For a given loading, the displacements of the model with fiber sections will be slightly higher than those of the model with elastic elements.
  • For a given distribution of mass, the natural periods of the model with fiber sections will be slightly longer than those of the model with elastic elements.

In the inelastic range, the section response will usually give higher strengths than the “exact” solutions when using midpoint integration. However, it’s kinda like all bets are off after yield, especially if you’re dealing with reinforced concrete sections. For more information, see this paper.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.