← Back to Awesome

Sections

Scientific Computing

GitHub repository ↗ synced 2026/8/9

Awesome Scientific Computing Awesome

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.

Basic linear algebra

BLAS

Standard building blocks for performing basic vector and matrix operations.

OpenBLAS

Optimized BLAS library based on GotoBLAS2.

BLIS

High-performance BLAS-like dense linear algebra libraries.

LAPACK

Routines for solving systems of linear equations, linear least-squares, eigenvalue problems, etc.

Eigen

C++ template library for linear algebra.

Ginkgo

High-performance manycore linear algebra library, focus on sparse systems.

blaze

High-performance C++ math library for dense and sparse arithmetic.

(Fortran, public domain, GitHub)
(C and Assembly, BSD, GitHub)
(C, BSD, GitHub)
(Fortran, BSD, GitHub)
(C++, MPL 2, GitLab)
(C++, BSD, GitHub)
(C++, BSD, Bitbucket)

Multi-purpose toolkits

PETSc

Parallel solution of scientific applications modeled by PDEs.

DUNE Numerics

Toolbox for solving PDEs with grid-based methods.

SciPy

Python modules for statistics, optimization, integration, linear algebra, etc.

NumPy

Fundamental package needed for scientific computing with Python.

DifferentialEquations.jl

Toolbox for solving different types of differential equations numerically. (Julia, MIT, [GitHub](https://github.com/SciML/DifferentialEquations.jl))

(C, 2-clause BSD, GitLab)
(C++, GPL 2, GitLab)
(Python, mostly BSD, GitHub)
(Python, BSD, GitHub)

Finite Elements

FEniCS

Computing platform for solving PDEs in Python and C++.

libMesh

Framework for the numerical simulation of PDEs using unstructured discretizations.

deal.II

Software library supporting the creation of finite element codes.

Netgen/NGSolve

High performance multiphysics finite element software.

Firedrake

Automated system for the solution of PDEs using the finite element method.

MOOSE

Multiphysics Object Oriented Simulation Environment.

MFEM

Free, lightweight, scalable C++ library for finite element methods.

SfePy

Simple Finite Elements in Python.

FreeFEM

High level multiphysics-multimesh finite element language.

libceed

Code for Efficient Extensible Discretizations.

scikit-fem

Simple finite element assemblers.

(C++/Python, LGPL 3, GitHub/Bitbucket)
(C++, LGPL 2.1, GitHub)
(C++, LGPL 2.1, GitHub)
(C++, LGPL 2.1, GitHub)
(Python, LGPL 3, GitHub)
(C++, LGPL 2.1, GitHub)
(C++, BSD-3-Clause, GitHub)
(Python, BSD, GitHub)
(C++, LGPL, GitHub)
(C, 2-clause BSD, GitHub)
(Python, BSD/GPL, GitHub)

Meshing

Triangular and tetrahedral meshing

Gmsh

Three-dimensional finite element mesh generator with pre- and post-processing facilities.

pygmsh

Python interface for Gmsh.

MeshPy

Quality triangular and tetrahedral mesh generation.

CGAL

Algorithms for computational geometry.

pygalmesh

Python interface for CGAL's 3D meshing capabilities.

TetGen

Quality tetrahedral mesh generator and 3D Delaunay triangulator.

Triangle

Two-dimensional quality mesh generator and Delaunay triangulator.

distmesh

Simple generator for unstructured triangular and tetrahedral meshes.

trimesh

Loading and using triangular meshes with an emphasis on watertight surfaces.

dmsh

Simple generator for unstructured triangular meshes, inspired by distmesh.

TetWild

Generate tetrahedral meshes for triangular surface meshes.

TriWild

Robust triangulation with curve constraints.

fTetWild

Same as TetWild, but faster.

SeismicMesh

Parallel 2D/3D triangle/tetrahedral mesh generation with sliver removal.

(C++, GPL, GitLab)
(Python, GPL 3, GitHub)
(Python, MIT, GitHub)
(C++, mixed LGPL/GPL, GitHub)
(Python, GPL 3, GitHub)
(C++, AGPLv3)
(C, nonfree software)
(MATLAB, GPL 3)
(Python, MIT, GitHub)
(Python, proprietary, GitHub)
(C++, GPL 3, GitHub)
(C++, MPL 2, GitHub)
(C++, MPL 2, GitHub)
(Python and C++, GPL 3, GitHub)

Quadrilateral and hexahedral meshing

QuadriFlow

Scalable and robust quadrangulation from triangulation.

(C++, BSD, GitHub)

Mesh tools

meshio

I/O for various mesh formats, file conversion.

MOAB

Representing and evaluating mesh data.

optimesh

Triangular mesh smoothing.

pmp-library

Polygon mesh processing library.

Mmg

Robust, open-source & multidisciplinary software for remeshing.

meshplex

Fast tools for simplex meshes.

(Python, MIT, GitHub)
(C++, mostly LGPL 3, Bitbucket)
(Python, proprietary, GitHub)
(C++, MIT with Employer Disclaimer, GitHub)
(C, LGPL 3, GitHub)
(Python, proprietary, GitHub)

Data formats

NetCDF

Software libraries and data formats for array-oriented scientific data.

HDF5

Data model, library, and file format for storing and managing data.

XDMF

eXtensible Data Model and Format for data from High Performance Computing codes.

Zarr

Format for the storage of chunked, compressed, N-dimensional arrays.

(C/C++/Fortran/Java/Python, custom open-source
license
,
GitHub)
(C/Fortran, BSD, GitHub)
(C++, GitLab)
(Python, MIT, GitHub)

Sparse linear solvers

SuperLU

Direct solution of large, sparse, nonsymmetric systems of linear equations.

PyAMG

Algebraic Multigrid Solvers in Python.

hypre

Library of high-performance preconditioners and solvers.

(C, mostly BSD, GitHub)
(Python, MIT, GitHub)
(C, Apache 2.0/MIT, GitHub)

Visualization

ParaView

Multi-platform data analysis and visualization application based on VTK.

VTK

Process images and create 3D computer graphics.

Mayavi

3D scientific data visualization and plotting in Python.

Polyscope

Viewer and user interface for 3D geometry processing.

PyVista

3D plotting and mesh analysis through a streamlined interface for VTK.

vedo

Library for scientific analysis and visualization of 3D objects based on VTK.

yt

Toolkit for analysis and visualization of volumetric data.

F3D

Cross-platform, fast, and minimalist 3D viewer with scientific visualization tools.

TTK

Topological data analysis and visualization.

morphologica

Header-only, modern OpenGL code to visualize numerical simulations at runtime. (C++, Apache 2.0, GitHub)

(C++, BSD, GitLab)
(C++, BSD, GitLab)
(Python, BSD, GitHub)
(C++, MIT, GitHub)
(Python, MIT, GitHub)
(Python, MIT, GitHub)
(Python, BSD, GitHub)
(C++, BSD, GitHub)
(C++/Python, BSD, GitHub)

Other libraries and tools

FFTW

Discrete Fourier transforms in one or more dimensions, of arbitrary input size, real and complex.

Qhull

Convex hull, Delaunay triangulation, Voronoi diagram, halfspace intersection about a point, etc.

GSL

Random number generators, special functions, and least-squares fitting etc.

OpenFOAM

Free, open source CFD (computational fluid dynamics) software.

quadpy

Numerical integration (quadrature, cubature) in Python.

FiPy

Finite-volume PDE solver.

accupy

Accurate sums and dot products for Python.

SLEPc

Scalable Library for Eigenvalue Problem Computations.

Chebfun

Computing with functions to about 15-digit accuracy.

pyMOR

Model Order Reduction with Python.

cvxpy

Modeling language for convex optimization problems.

PyWavelets

Wavelet transforms in Python.

NFFT

Nonequispaced fast Fourier transform.

preCICE

Coupling library for partitioned multi-physics simulations (FSI, CHT, and more).

orthopy

Compute orthogonal polynomials efficiently.

pyGAM

Generalized Additive Models in Python.

Dedalus

Solve partial differential equations with spectral methods.

PyGMO

Massively parallel optimization.

shenfun

High-performance Python library for the spectral Galerkin method.

PyDMD

Dynamic Mode Decomposition (DMD) in Python.

HPDDM

High-performance unified framework for domain decomposition methods.

(C, GPL2, GitHub)
(C/C++, custom open source license,
GitHub)
(C/C++, GPL 3, Savannah)
(C++, GPL 3, GitHub)
(Python, proprietary, GitHub)
(Python, custom open-source
license
,
GitHub)
(Python, GPL 3, GitHub)
(C, 2-clause BSD, GitLab)
(MATLAB, BSD, GitHub)
(Python, 2-clause BSD, GitHub)
(Python, Apache 2.0, GitHub)
(Python, MIT, GitHub)
(C/MATLAB, GPL 2, GitHub)
(C++, LGPL 3, GitHub)
(Python, proprietary, GitHub)
(Python, Apache 2.0, GitHub)
(Python, GPL 3, GitHub)
(Python/C++, MPL 2, GitHub)
(Python, BSD-2, GitHub)
(Python, MIT, GitHub)
(C++, LGPL 3, GitHub)

Community

SciComp StackExchange

Computational Science on the StackExchange network.

Wolfgang Bangerth's video class

MATH 676: Finite element methods in scientific computing.

Nick Higham's blog

Mostly on MATLAB, general computing advice.

Nick Trefethen's Video Lectures

36 video lectures on approximation theory/practice and scientific computing.

John D. Cook's blog

Feats of scientific computing.

Jack Dongarra's software list

List of freely available software for the solution of linear algebra problems.

NA Digest

Collection of articles on topics related to numerical analysis and those who practice it.

Gabriel Peyré on Bluesky

One post a day on computational mathematics.

Discord: Numerical Software

Discord messaging server on numerical software.