djps / awesome-scientific-computing

:sunglasses: Curated list of awesome software for numerical analysis and scientific computing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Awesome Scientific Computing

Check Markdown links

Useful resources for scientific computing and numerical analysis, with a selection of ultrasound tools

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

  • 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. (C++, GPL, GitLab)
  • pygmsh - Python interface for Gmsh. (Python, GPL 3, GitHub)
  • MeshPy - Quality triangular and tetrahedral mesh generation. (Python, MIT, GitHub)
  • CGAL - Algorithms for computational geometry. (C++, mixed LGPL/GPL, GitHub)
  • pygalmesh - Python interface for CGAL's 3D meshing capabilities. (Python, GPL 3, GitHub)
  • TetGen - Quality tetrahedral mesh generator and 3D Delaunay triangulator. (C++, AGPLv3)
  • Triangle - Two-dimensional quality mesh generator and Delaunay triangulator. (C, nonfree software)
  • distmesh - Simple generator for unstructured triangular and tetrahedral meshes. (MATLAB, GPL 3)
  • trimesh - Loading and using triangular meshes with an emphasis on watertight surfaces. (Python, MIT, GitHub)
  • dmsh - Simple generator for unstructured triangular meshes, inspired by distmesh. (Python, proprietary, GitHub)
  • TetWild - Generate tetrahedral meshes for triangular surface meshes. (C++, GPL 3, GitHub)
  • TriWild - Robust triangulation with curve constraints. (C++, MPL 2, GitHub)
  • fTetWild - Same as TetWild, but faster. (C++, MPL 2, GitHub)
  • SeismicMesh - Parallel 2D/3D triangle/tetrahedral mesh generation with sliver removal. (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. (Python, MIT, GitHub)
  • MOAB - Representing and evaluating mesh data. (C++, mostly LGPL 3, Bitbucket)
  • optimesh - Triangular mesh smoothing. (Python, proprietary, GitHub)
  • pmp-library - Polygon mesh processing library. (C++, MIT with Employer Disclaimer, GitHub)
  • Mmg - Robust, open-source & multidisciplinary software for remeshing. (C, LGPL 3, GitHub)
  • meshplex - Fast tools for simplex meshes. (Python, proprietary, GitHub)

Data formats

  • NetCDF - Software libraries and data formats for array-oriented scientific data. (C/C++/Fortran/Java/Python, custom open-source license, GitHub)
  • HDF5 - Data model, library, and file format for storing and managing data. (C/Fortran, BSD, GitHub)
  • XDMF - eXtensible Data Model and Format for data from High Performance Computing codes. (C++, GitLab)
  • Zarr - Format for the storage of chunked, compressed, N-dimensional arrays. (Python, MIT, GitHub)

Sparse linear solvers

  • SuperLU - Direct solution of large, sparse, nonsymmetric systems of linear equations. (C, mostly BSD, GitHub)
  • PyAMG - Algebraic Multigrid Solvers in Python. (Python, MIT, GitHub)
  • hypre - Library of high-performance preconditioners and solvers. (C, Apache 2.0/MIT, GitHub)

Visualization

  • ParaView - Multi-platform data analysis and visualization application based on VTK. (C++, BSD, GitLab)
  • VTK - Process images and create 3D computer graphics. (C++, BSD, GitLab)
  • Mayavi - 3D scientific data visualization and plotting in Python. (Python, BSD, GitHub)
  • Polyscope - Viewer and user interface for 3D geometry processing. (C++, MIT, GitHub)
  • PyVista - 3D plotting and mesh analysis through a streamlined interface for VTK. (Python, MIT, GitHub)
  • vedo - Library for scientific analysis and visualization of 3D objects based on VTK. (Python, MIT, GitHub)
  • yt - Toolkit for analysis and visualization of volumetric data. (Python, BSD, GitHub)
  • F3D - Cross-platform, fast, and minimalist 3D viewer with scientific visualization tools. (C++, BSD, GitHub)
  • TTK - Topological data analysis and visualization. (C++/Python, BSD, GitHub)
  • morphologica - Header-only, modern OpenGL code to visualize numerical simulations at runtime. (C++, Apache 2.0, GitHub)

Medical image computing

  • ITK - Spatially-oriented architecture for processing, segmentation, and registration of scientific images in two, three, or more dimensions. (C++, Apache-2, GitHub)
  • MITK - Software for the development of interactive medical image processing software (C++, BSD-3-clause, GitHub)
  • DicomToMesh - converts DICOM to an stl
  • SimVascular - Simulations on vessels (C++, GNU, GitHub)
  • vmkt - Vascular modelling toolkit (C/C++, BSD, GitHub)
  • FeBio finite elements for biological tissue (C++, MIT, GitHub)
  • Iso2Mesh - a 3D surface and volumetric mesh generator for MATLAB/Octave (Matlab, GPL, GitHub)

Platforms

  • Slicer3D - Visualization, processing, segmentation, registration, and analysis of medical, biomedical, and other 3D images and meshes; and planning and navigating image-guided procedures. (C++, BSD-like, GitHub)
    • SlicerIGT - Modules supporting image-guided interventions in 3D Slicer. (C++, BSD-3-clause, GitHub)
  • MITK Workbench - platform for MITK.

I/O

  • rapidxml - handling of xml in C++ (C++, SourceForge)
  • Boost Property Tree - provides a data structure that stores an arbitrarily deeply nested tree of values, indexed at each level by some key (C++, Boost, GitHub)
  • json - json for modern C++ (C++, MIT, GitHub)
  • pydicom - Read, modify and write DICOM files with python code (Python, MIT, GitHub)
  • OpenIGTLink - (C/C++, BSD-3-clause, GitHub)

ODEs

  • Boost OdeInt - A library for solving initial value problems (IVP) of ordinary differential equations. (C++, Boost, GitHub)

GPUs

  • OpenCL - GPGPU language (GitHub)
  • Boost Compute - A C++ interface to multi-core CPU and GPGPU computing platforms based on OpenCL. (C++, Boost, GitHub)
  • CLBlast - OpenCL BLAS library written in C++11 (C++, Apache-2, GitHub)
  • arrayfire - A general purpose GPU library (C++, BSD-3,GitHub)
  • viennaCL - Open-source linear algebra library for computations on many-core architectures (C++, GNU, GitHub)
  • SyCL
  • HIP

Solvers

  • Sundials - SUite of Nonlinear and DIfferential/ALgebraic equation Solvers. (C/C++/Fortran, BSD-3, GitHub)
  • Slate - dense linear algebra for HPC (C++, BSD-3, GitHub)
  • diffeqpy - Python wrapper for DifferentialEquations.jl (Python/Julia, MIT, GitHub)

Wave propagation

The Focused Ultrasound Foundation provides a set of open-source tools for modelling and validation [here].

  • jaxwell - An iterative solver for solving the finite-difference frequency-domain Maxwell equations on NVIDIA GPUs. (Python, GPL-3, GitHub)
  • fd3d - Solve the frequency-domain Maxwell's equations in a 3D domain, using an iterative methods to avoid the large memory requirement of direct methods for 3D problems. (C, GitHub)
  • Maxwellfdfd - Solves the frequency-domain Maxwell's equations (Matlab, GitHub) -
  • py-maxwell-fd3d - Solve the frequency-domain Maxwell's equations in a 3D domain, with direct and iterative methods (python, MIT, GitHub)
  • bempp - open-source computational boundary element platform to solve electrostatic, acoustic and electromagnetic problems. (Python, MIT, GitHub)
  • jwave - k-Wave in JAX. (Python, LGPL-3, GitHub)
  • HITU_simulator - A nonlinear axisymmetric beamer simulator. (Matlab, GPL-3, GitHub)
  • Kranion - interactive transcranial focused ultrasound visualization system (java, MIT, GitHub)
  • Focus - Fast nearfield method (Matlab)
  • mSound - Solves Westervelt equation by computing multiple reflections (Matlab, GNU, GitHub)
  • AberSim - No longer maintained/publically available.
  • Bergen - No longer maintained/publically available.
  • FieldII - Diagnostic simulator (Matlab, MIT)
  • Beam - 3D nonlinear continuous wave simulator (Matlab/Fortran )
  • Stride - modelling and optimisation framework for medical ultrasound (python, AGPL-3, GitHub)
  • BabelBrain - FDTD of viscoelastic equation using a staggered grid arrangement with support for GPU and CPU backends (C++/OpenCL, BSD-3, GitHub)
  • FiVoNAGI - Finite volume nonlinear acoustics GPU implementation in 2D (C++/Cuda, BSD, GitHub)

Physics-informed neural networks

  • SciML - Website for open source software for scientific machine learning

SBML

  • sbml - Native library for reading, writing and manipulating files and data streams containing the Systems Biology Markup Language (C/C++/C#/Java/JavaScript/MATLAB/Perl/PHP/Python/R/Ruby, LGPL-2, GitHub).

Resources


Other libraries and tools

  • FFTW - Discrete Fourier transforms in one or more dimensions, of arbitrary input size, real and complex. (C, GPL2, GitHub)
  • Qhull - Convex hull, Delaunay triangulation, Voronoi diagram, halfspace intersection about a point, etc. (C/C++, custom open source license, GitHub)
  • GSL - Random number generators, special functions, and least-squares fitting etc. (C/C++, GPL 3, Savannah)
  • OpenFOAM - Free, open source CFD (computational fluid dynamics) software. (C++, GPL 3, GitHub)
  • quadpy - Numerical integration (quadrature, cubature) in Python. (Python, proprietary, GitHub)
  • FiPy - Finite-volume PDE solver. (Python, custom open-source license, GitHub)
  • accupy - Accurate sums and dot products for Python. (Python, GPL 3, GitHub)
  • SLEPc - Scalable Library for Eigenvalue Problem Computations. (C, 2-clause BSD, GitLab)
  • Chebfun - Computing with functions to about 15-digit accuracy. (MATLAB, BSD, GitHub)
  • pyMOR - Model Order Reduction with Python. (Python, 2-clause BSD, GitHub)
  • cvxpy - Modeling language for convex optimization problems. (Python, Apache 2.0, GitHub)
  • PyWavelets - Wavelet transforms in Python. (Python, MIT, GitHub)
  • NFFT - Nonequispaced fast Fourier transform. (C/MATLAB, GPL 2, GitHub)
  • preCICE - Coupling library for partitioned multi-physics simulations (FSI, CHT, and more). (C++, LGPL 3, GitHub)
  • orthopy - Compute orthogonal polynomials efficiently. (Python, proprietary, GitHub)
  • pyGAM - Generalized Additive Models in Python. (Python, Apache 2.0, GitHub)
  • Dedalus - Solve partial differential equations with spectral methods. (Python, GPL 3, GitHub)
  • PyGMO - Massively parallel optimization. (Python/C++, MPL 2, GitHub)
  • shenfun - High-performance Python library for the spectral Galerkin method. (Python, BSD-2, GitHub)
  • PyDMD - Dynamic Mode Decomposition (DMD) in Python. (Python, MIT, GitHub)
  • HPDDM - High-performance unified framework for domain decomposition methods. (C++, LGPL 3, GitHub)

Community

About

:sunglasses: Curated list of awesome software for numerical analysis and scientific computing

License:Creative Commons Zero v1.0 Universal


Languages

Language:Python 95.4%Language:Just 4.6%