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