Static Condensation

Contents

Introduction

Static condensation is a method that can reduce the dimension of a matricial equation. The shape of the linear system must be M*v = b where M is a matrix, b is a vector, and v is the solution vector. Say the vector v is of length 1000, but one only needs the 10 first values of it, the linear system can be changed to be a system of size 10, where the solution is the first 10 values of the mesh.

Note : If 10 values are needed, but the values are not the 10 first, just reorganize the lines and columns of the vectors and of the matrix for the wanted values are the 10 first. This operation is not time consuming.

A good example where the static condensation could be used is a finite element method for which the degree of freedom are the nodes of the mesh. If the solution only needs to be known at certain specific nodes, static condensation can be used.

Mathematics

Suppose you have a linear system under the form :

$$ { M \cdot \vec{u} = \vec{b} } $$

The M matrix and the \( \vec{b} \) vector are known. The solution needed is the \( \vec u \) vector. Separate \( \vec u \) into two vectors, \( \vec u_w \) and \(\vec u_u\) where w stands for wanted and u for unwanted. Thus, \(\vec u_w\) is the wanted part of the solution. We can separate \(\vec b \) can be separated the same way, as shown here :

$$ { M \cdot \begin{bmatrix} \vec{u}_w \\ \vec{u}_u \end{bmatrix} = \begin{bmatrix} \vec{b}_w \\ \vec{b}_u \end{bmatrix} } $$

Reordering the system

In general, the system will not be properly orderered this way, wanted elements will be dispersed in the \(\vec u \) and \( \vec b \) vectors.

Computing the new subsystem

Thus, it is possible to separate the M matrix into 4 submatrices, A, B, C and D, like shown here :

Main equation is then :

It is possible to separate this matricial equation into two smaller systems :

Using the first equation, we can isolate the "unwanted" part of the vector :

Now, we can put this equation into the second equation of the system, obtaining :

If one alanyses this equation, it has the form :

This given form is the same as, which is the same as the first initial equation :


Computation time

It looks evident that the time required to solve the new linear system is a lot smaller that the previous time since the linear system is smaller. Usually, this is true, and when less amount of data has to be found, less time it takes to compute the associated time.

There are three problems associated with the method :

  1. Creating new system : The computation time required to create a new system can be incredibly long. The operation generating the matrix C * A^-1 is the most time consuming and it is suggested to make the operation only once since that result is required twice to create the new system.
  2. New matrix is full : The new system is indeed smaller than the old one. The problem is that the new main matrix is full, while the old one is usually sparse, leading to a smaller amount of data to take into account.
  3. Truncated solution : It is inherent to the method that the solution


Download example

Here is a small example on how to use static condensation. The linear system is built at random, but the position of the values in the sparse matrix are determined by a given mesh. Thus, the static condensation in the example use a realistic matrix to condense. The factors the user can modify are the number of elements in the mesh (size of the matrix), the number of times the system is solved with the same static condensation, and the size of the new system to solve (percentage of nodes where the solution is wanted). Note that solving the same system is representative of a problem where one wants several solution of the same system, but with a different right-hand vector. The right-hand vector must be recalculated, but it is not time consuming.

Static Condensation example