Stokes Flow

P2P1 triangles were used to discretize the Stokes Equations.

Lid Driven Cavity

The velocity magnitude and vectors for the Lid Driven Cavity problem. The top wall has a fixed velocity of 1 and the sides and bottom have no slip boundary conditions.

Flow Over a Cylinder

The velocity magnitude, vectors, and streamlines for Stokes Flow across a cylinder.

The code can be found here. Building the stokes.cpp executable and running:
./stokes.exe cavity
./stokes.exe flow
will generate the data for the plots shown above.

Wave Equation

My arbitrary order FEM code (found here) was used to solve the Wave Equation with dissipation:
$$ \frac{\partial^2 u}{\partial t^2} + a \frac{\partial u}{\partial t} = c \nabla^2 u \,, $$
where is the displacement of the wave. controls the dissipation of the wave over time and controls the wave propogation speed. The second derivative in time was handled with a finite difference scheme:
$$ \frac{\partial^2 u}{\partial t^2} \approx \frac{u_{i+1} – 2u_i + u_{i-1}}{\Delta t^2} \,. $$
Standard time integration procedures can now be applied.

In the video below, the second order Crank-Nicholson method and a fourth order FEM discretizations were used for space and time, respectively. The video shows the relaxation of the initial sinusoidal perturbation over time in an L shaped domain.


The Mandelbrot set is the set of complex numbers, , such that the series
$$ z_{n+1} = z_n^2 + c $$
does not diverge as . These values of can then be plotted in the complex plane to produce some interesting images. As each pixel in the image is an independent calculation this is a good problem for getting familiar with parallel computing. The following images were generated with the code at