OpenSees Cloud
OpenSees AMI
Something, Something, Something Fiber
Original Post - 27 Feb 2022 - Michael H. Scott
Visit Structural Analysis Is Simple on Substack.
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: 4x4 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 8x8 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 larger 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 Kostic and Filippou (2012).