I use open-source software whenever possible. Although there are cases where a proprietary tool is the right choice, open-source tools have many advantages.

- Complete control of your critical tools–the vendor will never stop supporting your platform, an upgrade will never be forced upon you, and the licensing fee will never increase.
- Open-source tools tend to utilize open standards and exchange data much more fluidly than proprietary tools.
- If necessary, your developers can fix a bug themselves. A bug might be critical to your application, but that doesn’t mean it’s a high priority for the application vendor.

# Open-Source Tools

- Programming
- Python for rapid application development
- Numpy and Scipy for scientific omputing
- C, C++ and Fortran for optimized code

- Parallel Computing
- MPI
- PETSC
- pypar and mpi4py (Python bindings for MPI)
- CUDA and PyCUDA for massively parallel execution on NVIDIA graphics processors (GPUs)

- Simulation
- OpenFOAM: Computational Fluid Dynamics
- libmesh: finite element library

- Visualization
- Matplotlib (2D plotting)
- VTK (3D visualization)
- Paraview (3D visualization)
- VMD (Molecular dynamics visualization)

- Documentation
- LyX
- LaTeX
- Asymptote (technical vector graphics)
- Office and OpenOffice

- Version control
- Subversion
- Git
- OpenFOAM
- Sage (computer algebra system similar to Mathematica or MATLAB)

# Future additions

- Meep: finite-difference time-domain (FDTD) simulation software
- OpenLB: lattice Boltzmann code
- Palabos: lattice Boltzmann code