Full Fiber Circle

Circular layers of fibers are required for simulating longitudinal reinforcing steel in circular RC columns. Although the layer circ command accommodates fibers along an arc, I have never seen anyone use this command for anything other than a full circle.

Some years before the extent of OpenSees GitHub history, I added a default constructor to the CircReinfLayer class, making the start and end angles optional, creating a full circle of fibers. This functionality worked fine along with the original constructor that specified start and end angles.

Then, a recent post in the OpenSees Facebook group pointed out that N-1 fibers are generated when the default start and end angles, 0 and 360 degrees, respectively, are specified explicitly. Below are two fiber sections with only a circular layer of fibers. The first section uses the default start and end angles while the second section specifies 0 and 360–same as the defaults.

ops.uniaxialMaterial('Elastic',1,29000)

N = 6 # Number of bars
Abar = 1.0 # Bar area
yc = 0; zc = 0 # Center
r = 10 # Radius
GJ = 1e5 # Whatever

# Section 1 - default start and end angles
ops.section('Fiber',1,'-GJ',GJ)
#           matTag,N,A,y,z,r
ops.layer('circ',1,N,Abar,yc,zc,r)

# Section 2 - start and end angles = 0, 360
ops.section('Fiber',2,'-GJ',GJ)
#           matTag,N,A,y,z,r,start,end
ops.layer('circ',1,N,Abar,yc,zc,r,0,360)

Sure enough, viewing the fiber locations returned by the 'fiberData' recorder option, we see there’s a difference.

Further inspection of the fiber data reveals six fibers are generated for both sections, but section 2 places the first and last fibers at the same location.

The example scripts in the OpenSees wiki are correct, using 360/N as the start angle and 360 as the end angle. But it would be pretty easy to specify 0 and 360 for a circular layer and think nothing of it, sending years of earthquake engineering bridge research down the drain.

This issue was fixed with this commit, then fixed for real with this commit after remembering a) the difference between formal and actual arguments and b) not to get cocky with untested web commits.

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.