When talking about structural finite elements, the truss element is one of the
first elements discussed. As long as the assumptions underlying its usage are
met, it is an efficient element allowing convenient interpretation of results.
I will discuss here theses assumptions as well as the truss element use cases.
Then I will showcase the element
formulation, leading to the expression for the stiffness matrix, as it is
implemented in SesamX. Finally, I will discuss the SesamX data cards that are
used to
define the truss element and **compare the results with the Abaqus T3D2 element**
on a simple model.

## Quick remark on notations

Before starting, let’s define some notations that are used through this article:

vectors are denoted with an underline $ \underline{u} $ ,

matrices are represented with brackets $ \lbrack \ \rbrack $ ,

Einstein summation convention is used on repeated indices,

partial derivatives are denoted with the comma notation $ u_{,x} $ ,

infinitesimal strain and stress tensors are represented in column matrix notation $ \lbrack \epsilon \rbrack = \begin{bmatrix} \epsilon_{11} \\ \epsilon_{22} \\ \epsilon_{33} \\ \epsilon_{12} \\ \epsilon_{23} \\ \epsilon_{13} \end{bmatrix} $ and $ \lbrack \sigma \rbrack = \begin{bmatrix} \sigma_{11} \\ \sigma_{22} \\ \sigma_{33} \\ \sigma_{12} \\ \sigma_{23} \\ \sigma_{13} \end{bmatrix} $ , where $ \lbrack \epsilon \rbrack $ represents the

**engineering strains**.

## Introduction

This element is relevant to use when we aim at analysing a slender structure which only undergoes axial loading.

For such a structure, the **axial stress assumption** is commonly used:

$$ \sigma_{22} = \sigma_{33} = \sigma_{12} = \sigma_{23} = \sigma_{13} = 0 \tag{1} $$

$$ u_{i,y} = u_{i,z} = 0 \tag{2} $$

(1) is also called the **stress assumption** and (2) the
**kinematic assumption**. These assumptions are considered valid for cross-section
typical dimension less than ^{1}⁄_{10} of the truss length.

Stresses that are orthogonal to the truss axis are considered null as well as the dependence of the displacement on $ y $ and $ z $ . Thus, knowing the displacement on the truss axis is enough to describe the displacement over the whole structure: the truss element is a 1-dimensional element.

As it will appear during the stiffness matrix derivation, the relevant geometric parameters of the truss are:

the

**length of the truss $ L $**,and the

**area of the truss section $ A $**.

In its more simple formulation (presented here), it consists of 2 nodes connected together through a segment, yielding a linear displacement interpolation inside the element.

Assembling trusses is useful to modelize bars connected to each other by mean of pin joints, like in a crane or a bridge.

## Truss element derivation

As mentioned previously, we can represent the truss element as shown in the following figure, along with its local basis vectors.

The element local axis system is defined by the axis $ x, y, z $ whose basis vectors are respectively denoted as $ \underline{e_{1}}, \underline{e_{2}}, \underline{e_{3}} $ .

Only the translational degrees of freedom are required on each node of the element. Hence, the displacement on node $ I $ will be denoted $ \underline{u^I} = {u_j}^I \underline{e_{j}} $ , where $ I $ takes the values 1 or 2.

### Strain tensor

Using assumption (2) the displacement inside the element can be written:

$$ \underline{u} = \begin{cases} u_1(x) \\ u_2(x) \\ u_3(x) \end{cases} $$

However, the only known information is at the node. To get the displacement inside
the element we **interpolate linearly** the nodes displacements as follows:

$$ {u_j}(x_1) = N^I(x) {u_j}^I \tag{3} $$

Where the $ N^I $ represent the shape functions of the element:

$$ \begin{cases} N^1(x) = 1 - \cfrac{x}{L} \\ N^2(x) = \cfrac{x}{L} \end{cases} $$

Next, we simply compute the strains by differentiation:

$$ \lbrack \epsilon \rbrack = \begin{bmatrix} \epsilon_{11} \\ \epsilon_{22} \\ \epsilon_{33} \\ \epsilon_{12} \\ \epsilon_{23} \\ \epsilon_{13} \end{bmatrix} = \begin{bmatrix} u_{1,x} \\ 0 \\ 0 \\ u_{2,x} \\ 0 \\ u_{3,x} \end{bmatrix} $$

However, we want the truss element to be sensitive only to axial strain. We can simply enforce other strains to be 0. Physically this means that even if there are some $ u_2 $ and $ u_3 $ displacements in the element, they do not contribute to the strain state of the element. Hence, we have:

$$ \lbrack \epsilon \rbrack = \begin{bmatrix} \epsilon_{11} \\ \epsilon_{22} \\ \epsilon_{33} \\ \epsilon_{12} \\ \epsilon_{23} \\ \epsilon_{13} \end{bmatrix} = \begin{bmatrix} u_{1,x} \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} $$

Finally, using (3) we get the strains in the element from the displacements at

the nodes:

$$ \lbrack \epsilon \rbrack = \begin{bmatrix} N^I_{,x} {u_1}^I \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} \tag{4} $$

### Stress tensor

To relate the stresses to the strains we need to apply **Hooke’s law** for
linear elastic material.

$$ \begin{bmatrix} \epsilon_{11} \\ \epsilon_{22} \\ \epsilon_{33} \\ \epsilon_{12} \\ \epsilon_{23} \\ \epsilon_{13} \end{bmatrix} = \frac{1}{E} \begin{bmatrix} 1 && -\nu && -\nu && 0 && 0 && 0 \\ -\nu && 1 && -\nu && 0 && 0 && 0 \\ -\nu && -\nu && 1 && 0 && 0 && 0 \\ 0 && 0 && 0 && 2+2\nu && 0 && 0 \\ 0 && 0 && 0 && 0 && 2+2\nu && 0 \\ 0 && 0 && 0 && 0 && 0 && 2+2\nu \end{bmatrix} \begin{bmatrix} \sigma_{11} \\ \sigma_{22} \\ \sigma_{33} \\ \sigma_{12} \\ \sigma_{23} \\ \sigma_{13} \end{bmatrix} \\ $$

Using assumption (1) on the right hand side, as well as the result we got in (4) on the left hand side, leads to a peculiar relation:

$$ \underbrace{ \begin{bmatrix} u_{1,x} \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} }_{\text{kinematic assumption}} = \underbrace{ \frac{1}{E} \begin{bmatrix} \sigma_{11} \\ -\nu\sigma_{11} \\ -\nu\sigma_{11} \\ 0 \\ 0 \\ 0 \end{bmatrix} }_{\text{stress assumption}} $$

Which obviously cannot hold. However this inconsistency is not that dramatic:
when making the kinematic assumption we were interested in the macroscopic
behavior of the truss. Whereas the stress assumption relates more to a microscopic
behavior. It turns out that even if $ \epsilon_{22} $
and $ \epsilon_{33} $
are not 0 (**microscopic scale**) their
effect on the displacement (**macroscopic scale**) is negligible compare to what
comes from the $ \epsilon_{11} $
term. Of course,
this explanation becomes questionable as the slenderness of the truss degrades.

We can then simplify this relation and write:

$$ \begin{bmatrix} u_{1,x} \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} = \frac{1}{E} \begin{bmatrix} \sigma_{11} \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} $$

Finally, using (4) we have **the stress from the displacement at the nodes**:

$$ \sigma_{11} = E N^I_{,x} {u_1}^I $$

## Element stiffness derivation

The element stiffness matrix is obtained through the expression of the virtual work. Denoting the virtual strains as $ \lbrack \overline{\epsilon} \rbrack $ we have for the virtual work over the element volume:

$$ \overline{W} = \iiint_V \lbrack \overline{\epsilon} \rbrack^T \lbrack \sigma \rbrack dV = \iiint_V (N^I_{,x} \overline{{u_1}^I}) (E N^J_{,x} {u_1}^J) dV $$

The integrand depends only on $ x $ , thus we can integrate along $ y $ and $ z $ to get:

$$ \overline{W} = EA \int_L \overline{{u_1}^I} N^I_{,x} N^J_{,x} {u_1}^J dx $$

Using the previous definition of the shape functions, the stiffness matrix is therefore:

$$ \boxed{ \lbrack K \rbrack = \frac{EA}{L} \begin{bmatrix} 1 & -1 \\ -1 & 1 \end{bmatrix} } $$

## SesamX input cards

To define a truss element in SesamX the **first step is to create a mesh**.
This is done with the `CREATE-SUBMESH`

function:

```
CREATE-SUBMESH
MODEL: TRUSS_SIMPLE
NODES
- ID: 1 POINT: 0.,0.,0.
- ID: 2 POINT: 10.,0.,0.
- ID: 3 POINT: 20.,0.,0.
ELEMENTS
TYPE: LN2
-ID: 1 NODES: 1,2
-ID: 1 NODES: 2,3
```

Here we define 3 nodes and we create 2 line elements to connect the nodes.
The **next step is to apply the truss property** on these 2 elements.

```
CREATE-PROPERTIES
MODEL: TRUSS_SIMPLE
TRUSS-STANDARD
BEHAVIOR: LINEAR
NAME: PROP1
AREA: 40.0
MATERIAL: STEEL
ON-ELEMENTS-FROM: SELE_ALL
```

Here we apply a `TRUSS-STANDARD`

property on the elements from
`ALL_TRUSS`

providing a material name `STEEL`

(that we defined previously,
not shown here) and an area. `BEHAVIOR: LINEAR`

indicates that we apply a
linear elastic material. This keyword
may seem unnecessary at the moment, but it is a provision for future material
implementations (such as hyper-elastic materials).

## Comparison with Abaqus T3D2 element

Eventually, the last part of this article focuses on the comparison of SesamX
linear truss element against Abaqus equivalent **T3D2 element**. A truss
assembly clamped on one end is subjected to a load on the second end.
**The displacements at the nodes, obtained from a linear static resolution, are
compared between SesamX and Abaqus**.

### Model

The model studied for this comparison is made of a the following truss assembly.

As you can see on the picture, nodes are located at trusses intersections. Each truss is $ 1 m $ long and has an area of $ 40 mm^2 $ . A linear elastic material is applied with $ E = 200 GPa $ and $ \nu = 0.33 $ . The far left nodes are clamped while a downward load of $ 1000 N $ is applied on the bottom right node.

This case is then solved with a **linear static resolution**.

### Results

The following figure gives an overview of the expected displacement of the model, as well as the node numbers.

And the table below gives the comparison of the nodal displacements between Abaqus and SesamX.

**The relative error on the magnitude is quite small, SesamX linear truss element
implementation is very close to Abaqus implementation**.

Following these links you have access to the SesamX input cards as well as the Abaqus input cards that I used for this comparison. I imported the Abaqus mesh and selections in SesamX (to make sure I have the same model description) and then I defined the properties, loads and boundary conditions.

## Conclusion

I hope you had a pleasant reading. Starting from
**version V2020_01 of SesamX**
you can use the truss element I presented in this article. Feel free to share
your thoughts or simply ask for more information!

#### Did you like this content?

Register to our newsletter and get notified of new articles