3D Frames, axes and stiffness matrices

In the course of adding provision for spring end releases to the 3DFrame spreadsheet, I have also tidied up the code for generating the structure stiffness matrix, and added some documentation to the spreadsheet.  The revised spreadsheet (version 2.02) can be downloaded from:


The original version of the spreadsheet, using code from Programming the Finite Element Method, used a beam local axis system with the local x axis aligned with the beam longitudinal axis, the local z axis parallel to the Global ZX plane, and the local y axis completing the right-handed axis system.  The beam stiffness matrix consistent with that system is shown below (click the image for a full sized view, or see the “Matrix examples” sheet of the download spreadsheet for a text version):


The Strand7 finite element program uses an alternative system (shown below), and because this program is used to check the results of the spreadsheet I have modified the code to use the same system:

Beam principal axes are defined as i1 to i3, where:

  • i3 – is the unit vector directed from Node 1 to Node 2.
  • i2 – is the unit vector arising from i2 = Z × i3 where Z is the unit vector in the global Z direction
  • i1 – completes the right-handed system such that i1 × i2 = i3

This procedure in effect creates the i2 Axis parallel to the XY plane, and the i1 Axis in the plane parallel to the Z axis; i.e. the Z axis is in effect defined as the vertical axis in the model, and the XY plane is horizontal.

  • If the i3 axis is parallel to the Z axis then the i2 axis is parallel to the Y axis in the positive direction.
  • Beam principal axes may be rotated about the i3 axis by a specified angle, Gamma.
  • Positive rotation is clockwise when looking in the positive i3 direction.

This system is shown in the screen shot below:


In Strand7 the web of I girders is by default aligned with 2 axis, so that the beam flexural stiffness values, I11 and I22, relate to the beam strong and weak axis respectively, as shown below:


The beam local stiffness matrix for this system is shown below:


To combine the beam stiffness matrices into a single global matrix they must all be rotated to a common set of axes, that is the Global XYZ system, using:


where T is the 12×12 rotation matrix, made up of 4 copies of the 3×3 matrix below:



  • L is the beam length
  • XL, YL, ZL are the components of the local axes in the global system
  • Cg, Sg are the Cosine and Sine of Gamma, the angle of the 2 axis to the XY plane
  • Den = L * (XL ^ 2 + YL ^ 2) ^ 0.5

The rotation matrix transpose, TT is:

Application of this method to a single beam is shown in the screen shots below (from the Matrix Examples sheet of the download file).

The local stiffness matrix, KM1:


The rotation matrix, T:


The transpose of the rotation matrix, TT


The matrix CC = KM1.T


The global stiffness matrix KM2 = TT.CC


Alternative beam examples can be generated on the Matrix Examples sheet, by entering a different beam number in Cell C18:


Edit 19 Dec 2016: Formula for Den corrected

This entry was posted in Arrays, Beam Bending, Excel, Finite Element Analysis, Frame Analysis, Newton, Strand7, UDFs, VBA and tagged , , , , , , , , . Bookmark the permalink.

2 Responses to 3D Frames, axes and stiffness matrices

  1. Pingback: 3DFrame update | Newton Excel Bach, not (just) an Excel Blog

  2. Pingback: Using the Frame Analysis Spreadsheets | Newton Excel Bach, not (just) an Excel Blog

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 )

Google+ photo

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

Connecting to %s