Finite element simulation of a hyperelastic material with nonlinear Kirchhoff-St. Venant constitutive law. The material is stretched upwards for one second and then released inducing the free vibration shown. Roundoff errors eventually build enough to perturb the material laterally.

## Transient Heat Conduction

The mesh was generated with `gmsh`

. Running

` ./transient.exe sam `

with the code at https://github.com/smsolivier/FEM will produce the data for the above video. The visualization was done with LLNL’s Visit.

## 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 `

and

` ./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 \(u\) is the \(z\) displacement of the wave. \( a\) controls the dissipation of the wave over time and \(c\) 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.

## Mandelbrot

The Mandelbrot set is the set of complex numbers, \(c\), such that the series

$$ z_{n+1} = z_n^2 + c $$

does not diverge as \(n\rightarrow \infty\). These values of \(c\) 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 https://github.com/smsolivier/Mandelbrot.