    # Software

Here are some programs I wrote (GPL license). They were all tested under GNU/Linux. If you make any enhancements, please let me know so I can upload them here.

## Driven-Cavity Flow

This program solves the lid-driven-cavity flow problem in 2 dimensions using the stream-vorticity method. SOR (Successive Over-Relaxation) method is used in each time step to solve the discrete problem (finite differences are used). Crank-Nicolson discretization is applied to get a second-order approximation with respect to time.
You will need the SDL library for the graphics to work.

Here's a screenshot of the program in action: ## Caustics

This small program shows how caustics develop (if you don't know what caustics are, go here and here). As for now, the program can only show caustics formed by a semicircle and a parabola, but adding more curves shouldn't be a problem.

## SDLbrot

This was my first program that used SDL. It paints the Mandelbrot set and lets you explore it (i.e. zoom in at any point you want). It can also paint the Julia set corresponding to a given point.

Here's the screenshot: ## Wave equation

A small and simple Python program which solves the wave equation. Results are animated with the aid of the PyQT4 library.

The screenshot: There is also a Java version available.

## Combinatorics

This is a Python module that does some simple combinatorics with a given list. For example the perm function returns permutations of the list (implemented using iterators). No screenshot here! :)

## Finite Element Method for 2D equations

This set of Python modules solves the Poisson and Heat equations using Finite Elements. Also a solver for the system of 2D linear elasticity is included. This package has a simple mesh refinement procedure and a basic mesh visualization procedure. The solver requires SciPy and NumPy installed on the system. See the included README file for more details.

In the following screenshot a solution to the elasticity.py is presented. The colors represent the absolute value of the stress field, while the wired grid shows how the material deforms under the given load. This image was created using Paraview:  