You are on page 1of 5

Direct Stiffness Method

Dr. Amit R. Singh


May 8, 2023

1 Introduction
Direct Stiffness Method is a simplified form of Finite Element Method that can be used to analyze systems of
springs, bars, or trusses. In the case of bars, and trusses, we will first have to discretize them into springs. Thus,
ultimately, we will be solving a system of springs. For simplicity, in this presentation, we will restrict ourselves
to linear 1D springs.

2 A Spring Element
We are familiar with the governing equation of linear springs. Our aim in this section, is to rewrite the spring
equation as a system of equations that relate the displacements of the end-points of the spring with the forces
acting at the end-points. Figure 1 shows a single spring element. The number in circle is called the element
index and it will identify a spring uniquely in a system of springs. The spring element has two nodes indexed 1,
and 2. The forces and displacements of the spring element have been indexed based on the node to which they
belong.

Figure 1: A single spring element with two nodes labeled 1, and 2. The spring element is numbered as 1 (in
circle). The nodal forces, F1 , and F2 , and the nodal displacements, u1 , and u2 , are as shown as arrows pointing
in their positive directions. The spring constant is k1 .

Case (a): node 1 is fixed.


Let node 1 of the spring be fixed and node 2 be displaced by u2 . The force required to impose this displacement
is
F2a = k1 u2 . (1)
For equilibrium, we must have
F1a = −F2a = −k1 u2 . (2)

Case (b): node 2 is fixed.


Let the node 2 of the spring be fixed and node 1 be displaced by u1 . The force required to impose this displacement
is
F1b = k1 u1 . (3)
For equilibrium, we must have
F2b = −F1b = −k1 u1 . (4)

1
Case (c): both the nodes are free.
The nodal forces vary linearly with the nodal displacements. Therefore, when both the nodes are allowed to
move, the nodal forces can be obtained by superposing the nodal forces of Cases (a), and (b) above.

F1 = F1a + F1b = k1 u1 − k1 u2 (5)


F2 = F2a + F2b = −k1 u1 + k1 u2 (6)

The above equations can be written in matrix form as


    
k1 −k1 u1 F1
= (7)
−k1 k1 u2 F2

This can be written as

K (1) u(1) = F (1) (8)

where K is called the element stiffness matrix and the number in the paranthesis in the superscript denotes the
element index.

3 A Network of Springs
The aim of this section is write a matrix equation for a network of springs analogous to equation 8. The unique
nodes of the network will be the unknowns u. We have to find the global stiffness matrix K that relates u to
the applied loads F . We will start with a simple system of two springs connected in series.
Figure 2 shows two spring elements connected in series. Although there are two springs, and each spring
element has two nodes, the number of unique nodes in this system is only three because the second node of the
first element and the first node of the second element are coupled and will always move together. So this system
has three degrees of freedom.

Figure 2: Two spring elements connected in series. The circled numbers are the spring indices. The global node
indices have been shown as numbers without circles.

To write down the governing equation of the system, we will again use the principle of superposition. We
will first split the system into two springs and then add-up the appropriate force equations. Figure 3 shows the
separated springs with their local node indices.

Figure 3: The separated spring elements. The circled numbers are the spring indices. The local node indices
have been shown as numbers without circles.

2
Applying equations 5 and 6 to spring 1, we can write
(1) (1) (1)
F1 = k1 u1 − k1 u2 (9)
(1) (1) (1)
F2 = −k1 u1 + k1 u2 (10)

Similarly for spring 2, we have


(2) (2) (2)
F1 = k2 u1 − k2 u2 (11)
(2) (2) (2)
F2 = −k2 u1 + k2 u2 (12)

In the above equations, the numbers in the paranthesis in the superscripts denote the spring element indices.
(1) (2)
We note that u2 and u1 represent the same physical point which corresponds to global nodal displacement u2 .
(1) (2)
Therefore, by the principle of linear superposition, we can add up the forces F2 , and F1 . Thus, we get three
force equations for this spring network.
(1) (1) (1)
F1 = k1 u1 − k1 u2 (13)
(1) (2) (1) (1) (2) (2)
F2 + Fl = −k1 u1 + k1 u2 + k2 u1 − k2 u2 (14)
(2) (2) (2)
F2 = −k2 u1 + k2 u2 (15)

Now we can switch from local force and node indices to the global force and node indices by noting that
(1) (1)
F1 = F1 u1 = u1
(1) (2) (1) (2)
F2 + F1 = F2 u2 = u1 = u2
(2) (2)
F2 = F3 u2 = u3

Equations 13, 14, and 15 can be written as

F1 = k 1 u 1 − k 1 u 2 (16)
F2 = −k1 u1 + (k1 + k2 )u2 − k2 u3 (17)
F3 = −k2 u2 + k2 u3 (18)

In matrix form, we have


    
k1 −k1 0 u1  F1 
−k1 k1 + k2 −k2  u2 = F2 (19)
0 −k2 k2 u3 F3
   

Thus, we have found a matrix equation of the form Ku = F where K is the global stiffness matrix or the
stiffness matrix of the spring network. It should be noted that because a single spring element has two degrees
of freedom, the element stiffness matrix is of shape 2×2. The spring network we have considered in this section
has three degrees of freedom and, as shown above, the global stiffness matrix is of shape 3×3. In general, the
global stiffness matrix of a spring network with M unique nodes will be of shape M × M . We should also note
that both the element stiffness matrix and the global stiffness matrix are symmetric.

4 Assembly
In the previous section, we derived the governing equation of the spring network by writing the force equations
for each node of each element separately and then adding up the forces that act on the same global node. This
approach will quickly become tedious as the number of springs in our system increases. Fortunately, there is a
systematic procedure to derive the global stiffness matrix from the element stiffness matrices. This process is
called assembly in finite element method context.
Let N be the number of springs in a network. Let each spring have n local nodes. Let M be the number of
unique nodes in the entire system. So M ≤ N × n. Assembly entails the following steps.
1. Map the local degrees of freedom of every element to the global degrees of freedom. Let G : (e, i) → I
denote a function that accepts element index e, and element node index i as inputs, and returns the global
node index I as an output. For the spring network of Section 3, using figures 2 and 3, we can write the
mapping as follows:

3
Element Index (e) Local Node Index (i) Global Node Index (G(e, i) = I)
1 1 1
1 2 2
2 1 2
2 2 3

Table 1: Mapping local node indices to the global node indices.

2. Initialize the global stiffness matrix as a matrix of zeros of size M × M where M is the number of unique
degrees of freedom of the system.
3. Update the elements of the global stiffness matrix K using the element stiffness matrices K (e) as follows:
for e in (1, N ) do
for i in (1, n) do
for j in (1, n) do
I = G(e, i)
J = G(e, j)
K[I, J] = K[I, J] + K (e) [i, j]
end for
end for
end for
If we apply this algorithm to the example of Section 3, we will get

e i j I = G(e, i) J = G(e, j) K[I, J]


1 1 1 1 1 K[1, 1] = k1
1 1 2 1 2 K[1, 2] = −k1
1 2 1 2 1 K[2, 1] = −k1
1 2 2 2 2 K[2, 2] = k1
2 1 1 2 2 K[2, 2] = k1 + k2
2 1 2 2 3 K[2, 3] = −k2
2 2 1 3 2 K[3, 2] = −k2
2 2 2 3 3 K[3, 3] = k2

which gives the same matrix as K in equation 19.

5 Solving a Spring Network


The goal of setting up the governing equation of a spring network is to be able to calculate the unknown nodal
displacements for given nodal forces. At first glance, it may appear that we can get the displacements by writing
u = K −1 F . But if we examine equation 19 carefully, we will find that the global stiffness matrix is singular! So
there is no unique solution for the nodal displacements. This makes physical sense because the spring system
shown in Figure 2 is free to move for any applied load. To get a unique solution, we need some boundary
conditions like fixing one of the nodes of spring network. The goal of this section is to learn how to modify the
governing matrix equation of a spring network when applying boundary conditions.
It should be noted that at any node of a spring network, we cannot specify both force and displacement
simultaneously because it will overconstrain the system. If, for a node, both force and displacement have not been
given then we will take the displacement as an unknown to be solved for and the force as zero. If the displacement
of a node is specified, then the force acting at that node is a reaction force and it needs to be calculated after
calculating the displacement of all the free nodes of the system.
Let’s consider the governing matrix equation of the spring network of Section 3. We had
    
k1 −k1 0 u1  F1 
−k1 k1 + k2 −k2  u2 = F2
0 −k2 k2 u3 F3
   

Suppose, as a boundary condition, it is given that u1 = U . Let force F3 = 5 units. Since force is not specified
for node 2, we will take it as 0.
    
k1 −k1 0  U   F1 
−k1 k1 + k2 −k2  u2 = 0
0 −k2 k2 u3 5
   

4
Now we have three equations for just two unknowns u2 , and u3 . We need to get rid of one equation. We
should note that F1 is a reaction force and it is an unknown. If we remove equation 1 from our system then
there will be no unknown force on the RHS. Therfore, we will remove the first row of the coefficient matrix and
the RHS vector.
 
  U   
−k1 k1 + k2 −k2 0
u =
0 −k2 k2  2  5
u3

Our coefficient matrix is not a square matrix anymore so we cannot invert it. But we have a known quantity
u1 = U in the vector that we want to solve for. Let’s shift the terms corresponding to u1 = U to the RHS. This
amounts to removing the first column from the coefficient matrix, removing the first row of the u vector and
modifying the entries of the RHS vector.

        
k1 + k2 −k2 u2 0 k1 U k1 U
= + =
−k2 k2 u3 5 0 5

Now the coefficient matrix is not singular and it can be inverted. Solving this system gives us
5
u2 = U +
k1
5 5
u3 = U + +
k2 k1
Finally, using the values of u1 , u2 , and u3 , we can calculate the reaction force F1 = −5.
Summarizing, for every displacement uI where I is the global node index, that is specified as a boundary
condition, we need to reduce the governing matrix equation as follows:
1. Subtract the product of uI and the I th column of the global stiffness matrix from the RHS F vector.

2. Drop the I th row and the I th column from the global stiffness matrix.
3. Drop the I th row from the u vector.
4. Drop the I th row from the RHS F vector.
5. Solve the reduced system of equation for the unknown nodal dispalcements obtained after the above steps.

6. Finally, use the nodal dispalcement values to calculate the reaction force at the I th node.

You might also like