{"slug": "nschloe--awesome-scientific-computing", "title": "Awesome Scientific Computing", "description": ":sunglasses: Curated list of awesome software for numerical analysis and scientific computing", "github_url": "https://github.com/nschloe/awesome-scientific-computing", "stars": "1.5K", "tag": "Miscellaneous", "entry_count": 100, "subcategory_count": 4, "subcategories": [{"name": "General", "parent": "", "entries": [{"name": "Basic linear algebra", "url": "#basic-linear-algebra", "description": ""}, {"name": "Multi-purpose toolkits", "url": "#multi-purpose-toolkits", "description": ""}, {"name": "Finite Elements", "url": "#finite-elements", "description": ""}, {"name": "Meshing", "url": "#meshing", "description": ""}, {"name": "Data formats", "url": "#data-formats", "description": ""}, {"name": "Sparse linear solvers", "url": "#sparse-linear-solvers", "description": ""}, {"name": "Visualization", "url": "#visualization", "description": ""}, {"name": "Other libraries and tools", "url": "#other-libraries-and-tools", "description": ""}, {"name": "Community", "url": "#community", "description": ""}, {"name": "BLAS", "url": "https://netlib.org/blas/", "description": "Standard building blocks for performing basic vector and matrix operations."}, {"name": "OpenBLAS", "url": "https://www.openblas.net", "description": "Optimized BLAS library based on GotoBLAS2."}, {"name": "BLIS", "url": "https://github.com/flame/blis", "description": "High-performance BLAS-like dense linear algebra libraries.", "stars": "2.6k"}, {"name": "LAPACK", "url": "https://netlib.org/lapack/", "description": "Routines for solving systems of linear equations, linear least-squares, eigenvalue problems, etc."}, {"name": "Eigen", "url": "https://eigen.tuxfamily.org/index.php?title=Main_Page", "description": "C++ template library for linear algebra."}, {"name": "Ginkgo", "url": "https://ginkgo-project.github.io/", "description": "High-performance manycore linear algebra library, focus on sparse systems."}, {"name": "blaze", "url": "https://bitbucket.org/blaze-lib/blaze", "description": "High-performance C++ math library for dense and sparse arithmetic."}, {"name": "PETSc", "url": "https://petsc.org/release/", "description": "Parallel solution of scientific applications modeled by PDEs."}, {"name": "DUNE Numerics", "url": "https://www.dune-project.org", "description": "Toolbox for solving PDEs with grid-based methods."}, {"name": "SciPy", "url": "https://scipy.org", "description": "Python modules for statistics, optimization, integration, linear algebra, etc."}, {"name": "NumPy", "url": "https://numpy.org/", "description": "Fundamental package needed for scientific computing with Python."}, {"name": "DifferentialEquations.jl", "url": "https://docs.sciml.ai/DiffEqDocs/stable/", "description": "Toolbox for solving different types of differential equations numerically. (Julia, MIT, [GitHub (⭐3.1k)](https://github.com/SciML/DifferentialEquations.jl))"}, {"name": "FEniCS", "url": "https://fenicsproject.org", "description": "Computing platform for solving PDEs in Python and C++."}, {"name": "libMesh", "url": "https://libmesh.github.io", "description": "Framework for the numerical simulation of PDEs using unstructured discretizations."}, {"name": "deal.II", "url": "https://dealii.org", "description": "Software library supporting the creation of finite element codes."}, {"name": "Netgen/NGSolve", "url": "https://ngsolve.org", "description": "High performance multiphysics finite element software."}, {"name": "Firedrake", "url": "https://www.firedrakeproject.org", "description": "Automated system for the solution of PDEs using the finite element method."}, {"name": "MOOSE", "url": "https://mooseframework.inl.gov/", "description": "Multiphysics Object Oriented Simulation Environment."}, {"name": "MFEM", "url": "https://mfem.org", "description": "Free, lightweight, scalable C++ library for finite element methods."}, {"name": "SfePy", "url": "https://sfepy.org", "description": "Simple Finite Elements in Python."}, {"name": "FreeFEM", "url": "https://freefem.org", "description": "High level multiphysics-multimesh finite element language."}, {"name": "libceed", "url": "https://libceed.readthedocs.io/en/latest/index.html", "description": "Code for Efficient Extensible Discretizations."}, {"name": "scikit-fem", "url": "https://github.com/kinnala/scikit-fem", "description": "Simple finite element assemblers.", "stars": "608"}]}, {"name": "Triangular and tetrahedral meshing", "parent": "Meshing", "entries": [{"name": "Gmsh", "url": "https://gmsh.info", "description": "Three-dimensional finite element mesh generator with pre- and post-processing facilities."}, {"name": "pygmsh", "url": "https://github.com/nschloe/pygmsh", "description": "Python interface for Gmsh.", "stars": "951"}, {"name": "MeshPy", "url": "https://mathema.tician.de/software/meshpy/", "description": "Quality triangular and tetrahedral mesh generation."}, {"name": "CGAL", "url": "https://www.cgal.org", "description": "Algorithms for computational geometry."}, {"name": "pygalmesh", "url": "https://github.com/meshpro/pygalmesh", "description": "Python interface for CGAL's 3D meshing capabilities.", "stars": "665"}, {"name": "TetGen", "url": "https://www.wias-berlin.de/software/index.jsp?id=TetGen", "description": "Quality tetrahedral mesh generator and 3D Delaunay triangulator."}, {"name": "Triangle", "url": "https://www.cs.cmu.edu/~quake/triangle.html", "description": "Two-dimensional quality mesh generator and Delaunay triangulator."}, {"name": "distmesh", "url": "https://persson.berkeley.edu/distmesh/", "description": "Simple generator for unstructured triangular and tetrahedral meshes."}, {"name": "trimesh", "url": "https://trimesh.org", "description": "Loading and using triangular meshes with an emphasis on watertight surfaces."}, {"name": "dmsh", "url": "https://github.com/meshpro/dmsh", "description": "Simple generator for unstructured triangular meshes, inspired by distmesh.", "stars": "222"}, {"name": "TetWild", "url": "https://arxiv.org/abs/1908.03581", "description": "Generate tetrahedral meshes for triangular surface meshes."}, {"name": "TriWild", "url": "https://cims.nyu.edu/gcl/papers/2019-TriWild.pdf", "description": "Robust triangulation with curve constraints."}, {"name": "fTetWild", "url": "https://arxiv.org/abs/1908.03581", "description": "Same as TetWild, but faster."}, {"name": "SeismicMesh", "url": "https://github.com/krober10nd/SeismicMesh", "description": "Parallel 2D/3D triangle/tetrahedral mesh generation with sliver removal.", "stars": "140"}]}, {"name": "Quadrilateral and hexahedral meshing", "parent": "Meshing", "entries": [{"name": "QuadriFlow", "url": "https://stanford.edu/~jingweih/papers/quadriflow/", "description": "Scalable and robust quadrangulation from triangulation."}]}, {"name": "Mesh tools", "parent": "Meshing", "entries": [{"name": "meshio", "url": "https://github.com/nschloe/meshio", "description": "I/O for various mesh formats, file conversion.", "stars": "2.3k"}, {"name": "MOAB", "url": "https://sigma.mcs.anl.gov/moab-library/", "description": "Representing and evaluating mesh data."}, {"name": "optimesh", "url": "https://github.com/meshpro/optimesh", "description": "Triangular mesh smoothing.", "stars": "626"}, {"name": "pmp-library", "url": "https://www.pmp-library.org/", "description": "Polygon mesh processing library."}, {"name": "Mmg", "url": "https://www.mmgtools.org/", "description": "Robust, open-source & multidisciplinary software for remeshing."}, {"name": "meshplex", "url": "https://github.com/meshpro/meshplex", "description": "Fast tools for simplex meshes.", "stars": "108"}, {"name": "NetCDF", "url": "https://www.unidata.ucar.edu/software/netcdf", "description": "Software libraries and data formats for array-oriented scientific data."}, {"name": "HDF5", "url": "https://www.hdfgroup.org/solutions/hdf5/", "description": "Data model, library, and file format for storing and managing data."}, {"name": "XDMF", "url": "https://xdmf.org/", "description": "eXtensible Data Model and Format for data from High Performance Computing codes."}, {"name": "Zarr", "url": "https://zarr.readthedocs.io/en/stable/", "description": "Format for the storage of chunked, compressed, N-dimensional arrays."}, {"name": "SuperLU", "url": "https://portal.nersc.gov/project/sparse/superlu/", "description": "Direct solution of large, sparse, nonsymmetric systems of linear equations."}, {"name": "PyAMG", "url": "https://pyamg.readthedocs.io/en/latest/", "description": "Algebraic Multigrid Solvers in Python."}, {"name": "hypre", "url": "https://computing.llnl.gov/projects/hypre-scalable-linear-solvers-multigrid-methods", "description": "Library of high-performance preconditioners and solvers."}, {"name": "ParaView", "url": "https://www.paraview.org", "description": "Multi-platform data analysis and visualization application based on VTK."}, {"name": "VTK", "url": "https://vtk.org/", "description": "Process images and create 3D computer graphics."}, {"name": "Mayavi", "url": "https://docs.enthought.com/mayavi/mayavi/", "description": "3D scientific data visualization and plotting in Python."}, {"name": "Polyscope", "url": "https://polyscope.run/", "description": "Viewer and user interface for 3D geometry processing."}, {"name": "PyVista", "url": "https://docs.pyvista.org/", "description": "3D plotting and mesh analysis through a streamlined interface for VTK."}, {"name": "vedo", "url": "https://vedo.embl.es", "description": "Library for scientific analysis and visualization of 3D objects based on VTK."}, {"name": "yt", "url": "https://yt-project.org/", "description": "Toolkit for analysis and visualization of volumetric data."}, {"name": "F3D", "url": "https://f3d.app/", "description": "Cross-platform, fast, and minimalist 3D viewer with scientific visualization tools."}, {"name": "TTK", "url": "https://topology-tool-kit.github.io/", "description": "Topological data analysis and visualization."}, {"name": "morphologica", "url": "https://github.com/ABRG-Models/morphologica", "description": "Header-only, modern OpenGL code to visualize numerical simulations at runtime. (C++, Apache 2.0, GitHub)", "stars": "310"}, {"name": "FFTW", "url": "http://www.fftw.org", "description": "Discrete Fourier transforms in one or more dimensions, of arbitrary input size, real and complex."}, {"name": "Qhull", "url": "http://www.qhull.org", "description": "Convex hull, Delaunay triangulation, Voronoi diagram, halfspace intersection about a point, etc."}, {"name": "GSL", "url": "https://www.gnu.org/software/gsl/", "description": "Random number generators, special functions, and least-squares fitting etc."}, {"name": "OpenFOAM", "url": "https://www.openfoam.com", "description": "Free, open source CFD (computational fluid dynamics) software."}, {"name": "quadpy", "url": "https://github.com/sigma-py/quadpy", "description": "Numerical integration (quadrature, cubature) in Python.", "stars": "785"}, {"name": "FiPy", "url": "https://www.ctcms.nist.gov/fipy/", "description": "Finite-volume PDE solver."}, {"name": "accupy", "url": "https://github.com/sigma-py/accupy", "description": "Accurate sums and dot products for Python.", "stars": "107"}, {"name": "SLEPc", "url": "https://slepc.upv.es", "description": "Scalable Library for Eigenvalue Problem Computations."}, {"name": "Chebfun", "url": "https://www.chebfun.org/", "description": "Computing with functions to about 15-digit accuracy."}, {"name": "pyMOR", "url": "https://pymor.org/", "description": "Model Order Reduction with Python."}, {"name": "cvxpy", "url": "https://www.cvxpy.org/", "description": "Modeling language for convex optimization problems."}, {"name": "PyWavelets", "url": "https://pywavelets.readthedocs.io/en/latest/", "description": "Wavelet transforms in Python."}, {"name": "NFFT", "url": "https://www-user.tu-chemnitz.de/~potts/nfft/", "description": "Nonequispaced fast Fourier transform."}, {"name": "preCICE", "url": "https://precice.org/", "description": "Coupling library for partitioned multi-physics simulations (FSI, CHT, and more)."}, {"name": "orthopy", "url": "https://github.com/sigma-py/orthopy", "description": "Compute orthogonal polynomials efficiently.", "stars": "189"}, {"name": "pyGAM", "url": "https://pygam.readthedocs.io/en/latest/", "description": "Generalized Additive Models in Python."}, {"name": "Dedalus", "url": "https://dedalus-project.org/", "description": "Solve partial differential equations with spectral methods."}, {"name": "PyGMO", "url": "https://esa.github.io/pygmo/", "description": "Massively parallel optimization."}, {"name": "shenfun", "url": "https://shenfun.readthedocs.io/en/latest/", "description": "High-performance Python library for the spectral Galerkin method."}, {"name": "PyDMD", "url": "https://github.com/mathLab/PyDMD", "description": "Dynamic Mode Decomposition (DMD) in Python.", "stars": "115"}, {"name": "HPDDM", "url": "https://github.com/hpddm/hpddm", "description": "High-performance unified framework for domain decomposition methods.", "stars": "154"}, {"name": "SciComp StackExchange", "url": "https://scicomp.stackexchange.com/", "description": "Computational Science on the StackExchange network."}, {"name": "Wolfgang Bangerth's video class", "url": "https://www.math.colostate.edu/~bangerth/videos.html", "description": "MATH 676: Finite element methods in scientific computing."}, {"name": "Nick Higham's blog", "url": "https://nhigham.com/", "description": "Mostly on MATLAB, general computing advice."}, {"name": "Nick Trefethen's Video Lectures", "url": "https://people.maths.ox.ac.uk/trefethen/videos.html", "description": "36 video lectures on approximation theory/practice and scientific computing."}, {"name": "John D. Cook's blog", "url": "https://www.johndcook.com/blog/", "description": "Feats of scientific computing."}, {"name": "Jack Dongarra's software list", "url": "https://netlib.org/utk/people/JackDongarra/la-sw.html", "description": "List of freely available software for the solution of linear algebra problems."}, {"name": "NA Digest", "url": "https://netlib.org/na-digest-html/", "description": "Collection of articles on topics related to numerical analysis and those who practice it."}, {"name": "Gabriel Peyré on Bluesky", "url": "https://bsky.app/profile/gabrielpeyre.bsky.social", "description": "One post a day on computational mathematics."}, {"name": "Discord: Numerical Software", "url": "https://discord.com/invite/hnTJ5MRX2Y", "description": "Discord messaging server on numerical software."}]}]}