How to Find the Neutral Axis

There is no recorder option in OpenSees to get the location of the neutral axis in a fiber section. Instead, you have to post-process the section deformations.

The strain at any point in a 2D fiber section is \varepsilon=\varepsilon_a - y\kappa_z where \varepsilon_a is the section axial deformation, \kappa_z is the section curvature (about the z-axis), and y is the point location, measured from the section reference axis.

The neutral axis is the location where the strain is zero. Setting \varepsilon=0 gives y=\varepsilon_a/\kappa.

For example, to find the neutral axis location for section 3 of element 1:

ea,kz = ops.eleResponse(1,'section',3,'deformation')
if kz != 0.0:
   y = ea/kz
else:
   # Pure axial
   pass

For 3D sections, the strain at any point is \varepsilon=\varepsilon_a-y\kappa_z+z\kappa_y, so the neutral axis is described by a line, y=mz+b=(\kappa_y/\kappa_z)z + \varepsilon_a/\kappa_z where \kappa_z is the curvature about the section z-axis and \kappa_y is the curvature about the section y-axis.

If the curvature about the z-axis is zero, then the neutral axis is at z=-\varepsilon_a/\kappa_y.

For example, the neutral axis slope and y-intercept for section 5 of element 2:

ea,kz,ky,phi = ops.eleResponse(2,'section',5,'deformation')
if kz != 0.0:
   b = ea/kz
   m = ky/kz
elif ky != 0.0:
   z = -ea/ky
else:
   # Pure axial
   pass

The torsional deformation phi coming from the 3D fiber section is not used.

I showed the section deformations coming from the eleResponse command, but you can do the same calculations using the columns of recorder output. The order and number of section deformations returned by the eleResponse command (and output by a recorder) will vary if you use aggregated sections, so pay attention. If you need to know which deformation is in which column of output, read this post.

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.