All about the unsymmetrical stiffness matrix

What is stiffness matrix ?

The Hooke’s law was the first law that coined the term stiffness for the elastic deformation of solids. Stiffness consists the material property and can be termed as a quantity which controls the deformation in accordance to the material properties.

In finite element literature, the stiffness can be expressed at each node in the domain, which gives the so-called stiffness matrix.


It is worth to note that the stiffness matrix was coined for the analysis of solids, therefore it is not a suitable term in fluids or electromagnetism. Some researchers uses the term global LHS matrix, some still call it the stiffness matrix.

One of the biggest misconceptions among students is that the stiffness matrix is always symmetric. As a matter of fact, majority of the problems which are dealt in industry comes out with unsymmetric stiffness matrix.

How to obtain the stiffness matrix ?

The universal method for obtaining the stiffness matrix is very straight forward. Take the governing differential equation of the problem.

for example, the 1D steady-state convection-diffusion equation for linear convection without force function (Q) is

Obtain its weak form. Then discretize the weak form depending upon the mesh and the type of elements you choose.

Combine all the matrices and take them to the LHS, and hence you obtain the stiffness matrix or in general the global LHS matrix.

The matrix in LHS is the stiffness matrix. One can clearly see that the stiffness matrix is unsymmetric.

If I simulate the above equation for 5 elements, I would get a tridiagonal-unsymmetric stiffness matrix as follows:


Storage of the stiffness matrix

The storage of the stiffness matrix is a big challenge in programming literature. In real industry problems, it is quite common to encounter a stiffness matrix which is unsymmetric and having a dimension in order of millions and billions. What they do is, they use pointers. They store each and every term in the stiffness matrix using the pointers. Thus every element in the stiffness matrix will point some address in the RAM and the elements with repeated numbers will point the same address in the RAM. There are two advantages of using pointers, for problems with stiffness matrix of dimension 1 billion x 1 billion, one might end up using 500 to 600 millions addresses in the RAM. On the other hand, pointers are much fast then defining a variable for each element in the stiffness matrix.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.