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:

### 3DFrame.zip

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:

where:

- 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 + ZL ^ 2) ^ 0.5

The rotation matrix transpose, T^{T} 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: