Awesome Scientific Computing 
Useful resources for scientific computing and numerical analysis.
Scientific computing and numerical analysis are research fields that aim to provide methods for solving large-scale problems from various areas of science with the help of computers. Typical problems are ordinary and partial differential equations (ODEs, PDEs), their discretizations, and the solution of linear algebra problems arising from them.
Contents
- Basic linear algebra
- Multi-purpose toolkits
- Finite Elements
- Meshing
- Data formats
- Sparse linear solvers
- Visualization
- Other libraries and tools
- Community
Basic linear algebra
- BLAS - Standard building blocks for performing basic vector and matrix operations. (Fortran, public domain, GitHub)
- OpenBLAS - Optimized BLAS library based on GotoBLAS2. (C and Assembly, BSD, GitHub)
- BLIS - High-performance BLAS-like dense linear algebra libraries. (C, BSD, GitHub)
- LAPACK - Routines for solving systems of linear equations, linear least-squares, eigenvalue problems, etc. (Fortran, BSD, GitHub)
- Eigen - C++ template library for linear algebra. (C++, MPL 2, GitLab)
- Ginkgo - High-performance manycore linear algebra library, focus on sparse systems. (C++, BSD, GitHub)
- blaze - High-performance C++ math library for dense and sparse arithmetic. (C++, BSD, Bitbucket)
Multi-purpose toolkits
- PETSc - Parallel solution of scientific applications modeled by PDEs. (C, 2-clause BSD, GitLab)
- DUNE Numerics - Toolbox for solving PDEs with grid-based methods. (C++, GPL 2, GitLab)
- SciPy - Python modules for statistics, optimization, integration, linear algebra, etc. (Python, mostly BSD, GitHub)
- NumPy - Fundamental package needed for scientific computing with Python. (Python, BSD, GitHub)
- DifferentialEquations.jl - Toolbox for solving different types of differential equations numerically. (Julia, MIT, GitHub)
Finite Elements
- FEniCS - Computing platform for solving PDEs in Python and C++. (C++/Python, LGPL 3, GitHub/Bitbucket)
- libMesh - Framework for the numerical simulation of PDEs using unstructured discretizations. (C++, LGPL 2.1, GitHub)
- deal.II - Software library supporting the creation of finite element codes. (C++, LGPL 2.1, GitHub)
- Netgen/NGSolve - High performance multiphysics finite element software. (C++, LGPL 2.1, GitHub)
- Firedrake - Automated system for the solution of PDEs using the finite element method. (Python, LGPL 3, GitHub)
- MOOSE - Multiphysics Object Oriented Simulation Environment. (C++, LGPL 2.1, GitHub)
- MFEM - Free, lightweight, scalable C++ library for finite element methods. (C++, BSD-3-Clause, GitHub)
- SfePy - Simple Finite Elements in Python. (Python, BSD, GitHub)
- FreeFEM - High level multiphysics-multimesh finite element language. (C++, LGPL, GitHub)
- libceed - Code for Efficient Extensible Discretizations. (C, 2-clause BSD, GitHub)
- scikit-fem - Simple finite element assemblers. (Python, BSD/GPL, GitHub)
Meshing
Triangular and tetrahedral meshing
- Gmsh - Three-dimensional finite element mesh generator with pre- and post-processing facilities.