Skip to content

Truss elements

This document summarizes the theoretical background behind the truss (rod/cable) element formulation implemented in numgeo. The element supports both 2-node (linear) and 3-node (quadratic) interpolations and is formulated for axial (1D) response only.


Figure 1: Truss elements implemented in numgeo

Upcoming release

Truss elements will be available with the upcoming release

1. Kinematics and displacement field

2-node linear element

For a 2-node rod element, the displacement field along the element axis is approximated by a linear interpolation:

\[ u(x) = N_1(x) u_1 + N_2(x) u_2, \]

where the linear shape functions are given by

\[ N_1(x) = 1 - \frac{x}{L}, \quad N_2(x) = \frac{x}{L}. \]

The derivative of the shape functions (which is constant) is:

\[ \frac{dN_1}{dx} = -\frac{1}{L}, \quad \frac{dN_2}{dx} = \frac{1}{L}. \]

Thus, the axial strain in the element is

\[ \epsilon = \frac{du}{dx} = -\frac{u_1}{L} + \frac{u_2}{L} = \frac{u_2 - u_1}{L}. \]

3-node quadratic element

For a 3-node (quadratic) element, the displacement field is approximated using quadratic shape functions defined in a natural coordinate \(\xi \in [-1,1]\):

\[ N_1(\xi) = \frac{1}{2}\xi(\xi - 1), \quad N_2(\xi) = 1 - \xi^2, \quad N_3(\xi) = \frac{1}{2}\xi(\xi + 1). \]

The derivatives with respect to \(\xi\) are

\[ \frac{dN_1}{d\xi} = \xi - \frac{1}{2}, \quad \frac{dN_2}{d\xi} = -2\xi, \quad \frac{dN_3}{d\xi} = \xi + \frac{1}{2}. \]

Conversion to the physical coordinate \(x\) is achieved via

\[ \frac{dN_i}{dx} = \frac{dN_i}{d\xi} \cdot \frac{2}{L}, \]

since the mapping yields \(dx/d\xi = L/2\). The axial strain at an integration point is then computed as

\[ \epsilon(\xi) = \sum_{i=1}^{3} \frac{dN_i}{dx} \, u_i. \]

2. Constitutive model

In the current version, truss elements compute the axial stress from the axial strain using a linear elastic stress-strain relation:

\[ \sigma = E \epsilon, \]

where:

  • \(E\) is the Young's modulus,
  • \(\epsilon\) is the axial strain,
  • \(\sigma\) is the axial stress.

3. Internal force vector and stiffness matrix

In the local (axial) coordinate system, the internal force vector and stiffness matrix are computed as follows:

2-node linear element

For the 2-node element, by applying the principle of virtual work the local nodal forces are given by

\[ \boldsymbol{f} = \begin{bmatrix} -\sigma A\\ \sigma A \end{bmatrix} \]

where \(A\) is the cross-sectional area. Notice that the integration over the element length cancels the \(1/L\) factor in the strain derivative. The local stiffness matrix is

\[ \boldsymbol{K}_{\text{local}} = \frac{EA}{L} \begin{bmatrix} 1 & -1 \\ -1 & 1 \end{bmatrix}. \]

3-node quadratic element

For the quadratic element, the stiffness matrix and internal force vector are assembled by integrating over the natural coordinate using 3-point Gauss integration:

\[ K_{ij} = \int_{-1}^{1} E A \, \frac{dN_i}{dx} \frac{dN_j}{dx} \, \frac{L}{2} \, d\xi, \]

and

\[ f_i = \int_{-1}^{1} (-\sigma A) \, N_i \, \frac{L}{2} \, d\xi. \]

4. Transformation to global coordinates

Since the rod element carries only axial stress, the computations are performed in a local coordinate system aligned with the element axis. Let \(\mathbf{n}\) be the unit vector along the rod:

\[ \mathbf{n} = \frac{\mathbf{x}_{n} - \mathbf{x}_1}{L}. \]

The transformation from local to global coordinates is achieved by constructing a transformation matrix \(\boldsymbol{T}_{\text{trans}}\) that "places" the axial degree of freedom into the global coordinate system. For a 2-node element, the transformation matrix is given by

\[ T_{\text{trans}} = \begin{bmatrix} n_1 & n_2 & \cdots & n_{\text{ndim}} & 0 & \cdots & 0 \\ 0 & \cdots & 0 & n_1 & n_2 & \cdots & n_{\text{ndim}} \end{bmatrix}. \]

Then, the global stiffness matrix is obtained by

\[ \boldsymbol{K}_{\text{global}} = \boldsymbol{T}_{\text{trans}}^T \, \boldsymbol{K}_{\text{local}} \, \boldsymbol{T}_{\text{trans}}, \]

and the global internal force vector is

\[ \boldsymbol{f}_{\text{global}} = \boldsymbol{T}_{\text{trans}}^T \, \boldsymbol{f}_{\text{local}}. \]

A similar transformation is applied for the quadratic element.

5. Stress tensor in global coordinates

While the rod element carries only axial stress in the local system, one may wish to express this stress in global Cartesian coordinates. This is done by constructing the global stress tensor as the dyadic (outer) product of the unit vector with itself scaled by the axial stress:

\[ \boldsymbol{\sigma}_{\text{global}} = \sigma \, (\mathbf{n} \otimes \mathbf{n}). \]

6. Numerical integration scheme

For the quadratic (3-node) element, a 3-point Gauss integration scheme is used over the natural coordinate \(\xi \in [-1,1]\). The integration points and weights are:

Integration Point \(\xi\) Weight \(w\)
1 \(-\sqrt{\frac{3}{5}}\) \(\frac{5}{9}\)
2 \(0\) \(\frac{8}{9}\)
3 \(\sqrt{\frac{3}{5}}\) \(\frac{5}{9}\)

The mapping from the natural coordinate \(\xi\) to the physical coordinate \(x\) is given by

\[ x = \frac{L}{2} \xi + \frac{L}{2}, \]

with the Jacobian

\[ \frac{dx}{d\xi} = \frac{L}{2}. \]