科学计算与数值分析方面的算法库

科学计算和数值分析是一个研究领域,旨在提供借助计算机解决不同科学领域的大规模问题的方法。典型的问题是常微分方程和偏微分方程(ODE,PDE),它们的离散化,以及由此产生的线性代数问题的解。这里列出了常见的资源,包括基本的线性代数库,多目的工具箱,有限元,网格化,数据格式,稀疏线性求解,可视化,其他库和工具,以及社区。这些库涵盖了多种语言,如C/C++,python等。

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, GPL 3, 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, GPL 3, 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, GPL 3, GitHub)

Data formats

  • NetCDF - Software libraries and data formats for array-oriented scientific data. (C/C++/Fortran/Java/Python, custom open-source licenseGitHub)
  • 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)

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 licenseGitHub)
  • 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, GPL 3, GitHub)
  • FiPy - Finite-volume PDE solver. (Python, custom open-source licenseGitHub)
  • 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, GPL 3, 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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值